{"version":3,"file":"static/js/main.e871b1ad.js","mappings":"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","sources":["../node_modules/@amplify/amplify-sdk/dist/index.js","../node_modules/axios/index.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/cancel/Cancel.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/core/createError.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/enhanceError.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/defaults.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/utils.js","../node_modules/classnames/index.js","../node_modules/cross-fetch/dist/browser-ponyfill.js","../node_modules/dom-helpers/class/addClass.js","../node_modules/dom-helpers/class/hasClass.js","../node_modules/dom-helpers/class/removeClass.js","../node_modules/isarray/index.js","../node_modules/object-assign/index.js","../node_modules/p-cancelable/index.js","../node_modules/path-to-regexp/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../node_modules/react-router/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/react-transition-group/CSSTransition.js","../node_modules/react-transition-group/ReplaceTransition.js","../node_modules/react-transition-group/Transition.js","../node_modules/react-transition-group/TransitionGroup.js","../node_modules/react-transition-group/index.js","../node_modules/react-transition-group/utils/ChildMapping.js","../node_modules/react-transition-group/utils/PropTypes.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/rxjs/src/internal/operators/refCount.ts","../node_modules/rxjs/src/internal/observable/ConnectableObservable.ts","../node_modules/rxjs/src/internal/operators/groupBy.ts","../node_modules/rxjs/src/internal/scheduler/AsyncAction.ts","../node_modules/rxjs/src/internal/scheduler/Action.ts","../node_modules/rxjs/src/internal/scheduler/QueueAction.ts","../node_modules/rxjs/src/internal/Scheduler.ts","../node_modules/rxjs/src/internal/scheduler/AsyncScheduler.ts","../node_modules/rxjs/src/internal/scheduler/queue.ts","../node_modules/rxjs/src/internal/scheduler/QueueScheduler.ts","../node_modules/rxjs/src/internal/observable/empty.ts","../node_modules/rxjs/src/internal/util/isScheduler.ts","../node_modules/rxjs/src/internal/util/subscribeToArray.ts","../node_modules/rxjs/src/internal/Notification.ts","../node_modules/rxjs/src/internal/scheduled/scheduleArray.ts","../node_modules/rxjs/src/internal/observable/fromArray.ts","../node_modules/rxjs/src/internal/observable/of.ts","../node_modules/rxjs/src/internal/observable/throwError.ts","../node_modules/rxjs/src/internal/operators/observeOn.ts","../node_modules/rxjs/src/internal/ReplaySubject.ts","../node_modules/rxjs/src/internal/AsyncSubject.ts","../node_modules/rxjs/src/internal/util/Immediate.ts","../node_modules/rxjs/src/internal/scheduler/AsapAction.ts","../node_modules/rxjs/src/internal/scheduler/asap.ts","../node_modules/rxjs/src/internal/scheduler/AsapScheduler.ts","../node_modules/rxjs/src/internal/scheduler/async.ts","../node_modules/rxjs/src/internal/scheduler/AnimationFrameAction.ts","../node_modules/rxjs/src/internal/scheduler/animationFrame.ts","../node_modules/rxjs/src/internal/scheduler/AnimationFrameScheduler.ts","../node_modules/rxjs/src/internal/scheduler/VirtualTimeScheduler.ts","../node_modules/rxjs/src/internal/util/isObservable.ts","../node_modules/rxjs/src/internal/util/ArgumentOutOfRangeError.ts","../node_modules/rxjs/src/internal/util/EmptyError.ts","../node_modules/rxjs/src/internal/util/TimeoutError.ts","../node_modules/rxjs/src/internal/operators/map.ts","../node_modules/rxjs/src/internal/observable/bindCallback.ts","../node_modules/rxjs/src/internal/observable/bindNodeCallback.ts","../node_modules/rxjs/src/internal/OuterSubscriber.ts","../node_modules/rxjs/src/internal/InnerSubscriber.ts","../node_modules/rxjs/src/internal/symbol/iterator.ts","../node_modules/rxjs/src/internal/util/isPromise.ts","../node_modules/rxjs/src/internal/util/subscribeTo.ts","../node_modules/rxjs/src/internal/util/subscribeToObservable.ts","../node_modules/rxjs/src/internal/util/subscribeToPromise.ts","../node_modules/rxjs/src/internal/util/subscribeToIterable.ts","../node_modules/rxjs/src/internal/util/subscribeToResult.ts","../node_modules/rxjs/src/internal/observable/combineLatest.ts","../node_modules/rxjs/src/internal/scheduled/scheduled.ts","../node_modules/rxjs/src/internal/util/isInteropObservable.ts","../node_modules/rxjs/src/internal/scheduled/scheduleObservable.ts","../node_modules/rxjs/src/internal/scheduled/schedulePromise.ts","../node_modules/rxjs/src/internal/util/isIterable.ts","../node_modules/rxjs/src/internal/scheduled/scheduleIterable.ts","../node_modules/rxjs/src/internal/observable/from.ts","../node_modules/rxjs/src/internal/innerSubscribe.ts","../node_modules/rxjs/src/internal/operators/mergeMap.ts","../node_modules/rxjs/src/internal/operators/mergeAll.ts","../node_modules/rxjs/src/internal/observable/concat.ts","../node_modules/rxjs/src/internal/operators/concatAll.ts","../node_modules/rxjs/src/internal/observable/defer.ts","../node_modules/rxjs/src/internal/observable/forkJoin.ts","../node_modules/rxjs/src/internal/observable/fromEvent.ts","../node_modules/rxjs/src/internal/observable/fromEventPattern.ts","../node_modules/rxjs/src/internal/observable/generate.ts","../node_modules/rxjs/src/internal/observable/iif.ts","../node_modules/rxjs/src/internal/util/isNumeric.ts","../node_modules/rxjs/src/internal/observable/interval.ts","../node_modules/rxjs/src/internal/observable/merge.ts","../node_modules/rxjs/src/internal/observable/never.ts","../node_modules/rxjs/src/internal/observable/onErrorResumeNext.ts","../node_modules/rxjs/src/internal/observable/pairs.ts","../node_modules/rxjs/src/internal/util/not.ts","../node_modules/rxjs/src/internal/operators/filter.ts","../node_modules/rxjs/src/internal/observable/partition.ts","../node_modules/rxjs/src/internal/observable/race.ts","../node_modules/rxjs/src/internal/observable/range.ts","../node_modules/rxjs/src/internal/observable/timer.ts","../node_modules/rxjs/src/internal/observable/using.ts","../node_modules/rxjs/src/internal/observable/zip.ts","../node_modules/rxjs/src/internal/BehaviorSubject.ts","../node_modules/rxjs/src/internal/Observable.ts","../node_modules/rxjs/src/internal/util/toSubscriber.ts","../node_modules/rxjs/src/internal/Observer.ts","../node_modules/rxjs/src/internal/Subject.ts","../node_modules/rxjs/src/internal/SubjectSubscription.ts","../node_modules/rxjs/src/internal/Subscriber.ts","../node_modules/rxjs/src/internal/Subscription.ts","../node_modules/rxjs/src/internal/config.ts","../node_modules/rxjs/src/internal/symbol/rxSubscriber.ts","../node_modules/rxjs/src/internal/util/ObjectUnsubscribedError.ts","../node_modules/rxjs/src/internal/util/UnsubscriptionError.ts","../node_modules/rxjs/src/internal/util/canReportError.ts","../node_modules/rxjs/src/internal/util/hostReportError.ts","../node_modules/rxjs/src/internal/util/identity.ts","../node_modules/rxjs/src/internal/util/isFunction.ts","../node_modules/rxjs/src/internal/util/isObject.ts","../node_modules/rxjs/src/internal/util/pipe.ts","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/tiny-emitter/index.js","../node_modules/tslib/tslib.es6.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/@babel/runtime/helpers/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/regenerator/index.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/value-equal/esm/value-equal.js","../node_modules/tiny-invariant/dist/esm/tiny-invariant.js","../node_modules/history/esm/history.js","../node_modules/mini-create-react-context/dist/esm/index.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/react-router/modules/RouterContext.js","../node_modules/react-router/modules/Router.js","../node_modules/react-router/modules/MemoryRouter.js","../node_modules/react-router/modules/Lifecycle.js","../node_modules/react-router/modules/Prompt.js","../node_modules/react-router/modules/generatePath.js","../node_modules/react-router/modules/Redirect.js","../node_modules/react-router/modules/matchPath.js","../node_modules/react-router/modules/Route.js","../node_modules/react-router/modules/StaticRouter.js","../node_modules/react-router/modules/Switch.js","../node_modules/react-router/modules/withRouter.js","../node_modules/react-router/modules/hooks.js","../node_modules/react-router-dom/modules/BrowserRouter.js","../node_modules/react-router-dom/modules/HashRouter.js","../node_modules/react-router-dom/modules/utils/locationUtils.js","../node_modules/react-router-dom/modules/Link.js","../node_modules/react-router-dom/modules/NavLink.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@okta/lib/idx/types/api.ts","../node_modules/@okta/lib/util/console.ts","../node_modules/@okta/lib/util/object.ts","../node_modules/@okta/lib/util/misc.ts","../node_modules/@okta/lib/util/url.ts","../node_modules/@okta/lib/errors/CustomError.ts","../node_modules/@okta/lib/errors/AuthSdkError.ts","../node_modules/@okta/lib/oidc/util/oauth.ts","../node_modules/@okta/lib/oidc/util/oauthMeta.ts","../node_modules/js-cookie/dist/js.cookie.mjs","../node_modules/@okta/lib/oidc/types/Token.ts","../node_modules/@okta/lib/idx/transactionMeta.ts","../node_modules/@okta/lib/util/types.ts","../node_modules/@okta/lib/constants.ts","../node_modules/@okta/lib/errors/AuthApiError.ts","../node_modules/@okta/lib/errors/OAuthError.ts","../node_modules/@okta/lib/http/request.ts","../node_modules/@okta/lib/idx/interact.ts","../node_modules/@okta/lib/idx/idxState/v1/actionParser.ts","../node_modules/@okta/lib/idx/idxState/v1/generateIdxAction.ts","../node_modules/jsonpath-plus/dist/index-browser-esm.js","../node_modules/@okta/lib/idx/idxState/v1/idxResponseParser.ts","../node_modules/@okta/lib/util/jsonpath.ts","../node_modules/@okta/lib/idx/idxState/v1/remediationParser.ts","../node_modules/@okta/lib/idx/idxState/v1/parsers.ts","../node_modules/@okta/lib/idx/idxState/v1/makeIdxState.ts","../node_modules/@okta/lib/idx/idxState/index.ts","../node_modules/@okta/lib/idx/types/idx-js.ts","../node_modules/@okta/lib/idx/introspect.ts","../node_modules/@okta/lib/errors/index.ts","../node_modules/@okta/lib/idx/remediators/util.ts","../node_modules/@okta/lib/idx/authenticator/util.ts","../node_modules/@okta/lib/idx/remediators/Base/Remediator.ts","../node_modules/@okta/lib/idx/remediators/GenericRemediator/util.ts","../node_modules/@okta/lib/idx/remediators/GenericRemediator/GenericRemediator.ts","../node_modules/@okta/lib/idx/util.ts","../node_modules/@okta/lib/idx/remediate.ts","../node_modules/@okta/lib/idx/run.ts","../node_modules/@okta/lib/idx/authenticate.ts","../node_modules/@okta/lib/idx/authenticator/Authenticator.ts","../node_modules/@okta/lib/idx/authenticator/VerificationCodeAuthenticator.ts","../node_modules/@okta/lib/idx/authenticator/OktaVerifyTotp.ts","../node_modules/@okta/lib/idx/authenticator/OktaPassword.ts","../node_modules/@okta/lib/idx/authenticator/SecurityQuestionEnrollment.ts","../node_modules/@okta/lib/idx/authenticator/SecurityQuestionVerification.ts","../node_modules/@okta/lib/idx/authenticator/WebauthnEnrollment.ts","../node_modules/@okta/lib/idx/authenticator/WebauthnVerification.ts","../node_modules/@okta/lib/idx/remediators/Base/VerifyAuthenticator.ts","../node_modules/@okta/lib/idx/authenticator/getAuthenticator.ts","../node_modules/@okta/lib/idx/remediators/EnrollAuthenticator.ts","../node_modules/@okta/lib/idx/remediators/EnrollPoll.ts","../node_modules/@okta/lib/idx/remediators/SelectEnrollmentChannel.ts","../node_modules/@okta/lib/idx/remediators/EnrollmentChannelData.ts","../node_modules/@okta/lib/idx/remediators/ChallengeAuthenticator.ts","../node_modules/@okta/lib/idx/remediators/ChallengePoll.ts","../node_modules/@okta/lib/idx/remediators/ResetAuthenticator.ts","../node_modules/@okta/lib/idx/remediators/EnrollProfile.ts","../node_modules/@okta/lib/idx/remediators/Identify.ts","../node_modules/@okta/lib/idx/remediators/ReEnrollAuthenticator.ts","../node_modules/@okta/lib/idx/remediators/ReEnrollAuthenticatorWarning.ts","../node_modules/@okta/lib/idx/remediators/RedirectIdp.ts","../node_modules/@okta/lib/idx/remediators/Base/SelectAuthenticator.ts","../node_modules/@okta/lib/idx/remediators/SelectAuthenticatorAuthenticate.ts","../node_modules/@okta/lib/idx/remediators/SelectAuthenticatorEnroll.ts","../node_modules/@okta/lib/idx/remediators/SelectAuthenticatorUnlockAccount.ts","../node_modules/@okta/lib/idx/remediators/SelectEnrollProfile.ts","../node_modules/@okta/lib/idx/remediators/Base/AuthenticatorData.ts","../node_modules/@okta/lib/idx/remediators/AuthenticatorVerificationData.ts","../node_modules/@okta/lib/idx/remediators/AuthenticatorEnrollmentData.ts","../node_modules/@okta/lib/idx/remediators/Skip.ts","../node_modules/@okta/lib/idx/flow/AuthenticationFlow.ts","../node_modules/@okta/lib/idx/flow/PasswordRecoveryFlow.ts","../node_modules/@okta/lib/idx/flow/RegistrationFlow.ts","../node_modules/@okta/lib/idx/flow/AccountUnlockFlow.ts","../node_modules/@okta/lib/idx/flow/FlowSpecification.ts","../node_modules/@okta/lib/idx/cancel.ts","../node_modules/@okta/lib/idx/proceed.ts","../node_modules/@okta/lib/idx/poll.ts","../node_modules/@okta/lib/idx/startTransaction.ts","../node_modules/@okta/lib/idx/register.ts","../node_modules/@okta/lib/idx/recoverPassword.ts","../node_modules/@okta/lib/idx/unlockAccount.ts","../node_modules/@okta/lib/oidc/util/errors.ts","../node_modules/@okta/lib/oidc/util/loginRedirect.ts","../node_modules/@okta/lib/oidc/util/urlParams.ts","../node_modules/@okta/lib/idx/emailVerify.ts","../node_modules/@okta/lib/idx/handleInteractionCodeRedirect.ts","../node_modules/@okta/lib/idx/factory/api.ts","../node_modules/@okta/lib/crypto/browser.ts","../node_modules/@okta/lib/features.ts","../node_modules/@okta/lib/http/OktaUserAgent.ts","../node_modules/@okta/lib/http/headers.ts","../node_modules/@okta/lib/crypto/base64.ts","../node_modules/@okta/lib/crypto/oidcHash.ts","../node_modules/@okta/lib/crypto/verifyToken.ts","../node_modules/@okta/lib/util/PromiseQueue.ts","../node_modules/@okta/lib/oidc/util/pkce.ts","../node_modules/@okta/lib/oidc/decodeToken.ts","../node_modules/@okta/lib/oidc/util/defaultTokenParams.ts","../node_modules/@okta/lib/oidc/endpoints/token.ts","../node_modules/@okta/lib/oidc/endpoints/well-known.ts","../node_modules/@okta/lib/oidc/verifyToken.ts","../node_modules/@okta/lib/oidc/util/validateClaims.ts","../node_modules/@okta/lib/oidc/handleOAuthResponse.ts","../node_modules/@okta/lib/oidc/exchangeCodeForTokens.ts","../node_modules/@okta/lib/oidc/util/browser.ts","../node_modules/@okta/lib/oidc/util/prepareTokenParams.ts","../node_modules/@okta/lib/oidc/endpoints/authorize.ts","../node_modules/@okta/lib/oidc/getToken.ts","../node_modules/@okta/lib/oidc/getWithoutPrompt.ts","../node_modules/@okta/lib/oidc/getWithPopup.ts","../node_modules/@okta/lib/oidc/getWithRedirect.ts","../node_modules/@okta/lib/oidc/parseFromUrl.ts","../node_modules/@okta/lib/oidc/renewTokensWithRefresh.ts","../node_modules/@okta/lib/oidc/util/refreshToken.ts","../node_modules/@okta/lib/oidc/renewToken.ts","../node_modules/@okta/lib/oidc/renewTokens.ts","../node_modules/@okta/lib/oidc/revokeToken.ts","../node_modules/@okta/lib/oidc/introspect.ts","../node_modules/@okta/lib/oidc/util/prepareEnrollAuthenticatorParams.ts","../node_modules/@okta/lib/oidc/util/defaultEnrollAuthenticatorParams.ts","../node_modules/@okta/lib/oidc/enrollAuthenticator.ts","../node_modules/@okta/lib/oidc/util/enrollAuthenticatorMeta.ts","../node_modules/@okta/lib/oidc/factory/api.ts","../node_modules/@okta/lib/oidc/getUserInfo.ts","../node_modules/@okta/lib/oidc/util/validateToken.ts","../node_modules/@okta/lib/clock.ts","../node_modules/@okta/lib/oidc/types/TokenManager.ts","../node_modules/@okta/lib/oidc/TokenManager.ts","../node_modules/@okta/lib/browser/browserStorage.ts","../node_modules/@okta/lib/oidc/mixin/index.ts","../node_modules/@okta/lib/oidc/mixin/browser.ts","../node_modules/@okta/lib/core/AuthStateManager.ts","../node_modules/@okta/lib/services/AutoRenewService.ts","../node_modules/broadcast-channel/dist/esbrowser/util.js","../node_modules/broadcast-channel/dist/esbrowser/methods/native.js","../node_modules/oblivious-set/src/index.ts","../node_modules/broadcast-channel/dist/esbrowser/options.js","../node_modules/broadcast-channel/dist/esbrowser/methods/indexed-db.js","../node_modules/broadcast-channel/dist/esbrowser/methods/localstorage.js","../node_modules/broadcast-channel/dist/esbrowser/methods/simulate.js","../node_modules/broadcast-channel/dist/esbrowser/method-chooser.js","../node_modules/broadcast-channel/dist/esbrowser/broadcast-channel.js","../node_modules/unload/dist/es/index.js","../node_modules/unload/dist/es/node.js","../node_modules/unload/dist/es/browser.js","../node_modules/broadcast-channel/dist/esbrowser/leader-election-util.js","../node_modules/broadcast-channel/dist/esbrowser/leader-election-web-lock.js","../node_modules/broadcast-channel/dist/esbrowser/leader-election.js","../node_modules/@okta/lib/services/SyncStorageService.ts","../node_modules/@okta/lib/services/LeaderElectionService.ts","../node_modules/@okta/lib/core/ServiceManager/browser.ts","../node_modules/@okta/lib/session/api.ts","../node_modules/@okta/lib/session/mixin.ts","../node_modules/@okta/lib/session/factory.ts","../node_modules/@okta/lib/core/factory.ts","../node_modules/@okta/lib/base/factory.ts","../node_modules/@okta/lib/storage/mixin.ts","../node_modules/@okta/lib/http/mixin.ts","../node_modules/@okta/lib/core/mixin.ts","../node_modules/@okta/lib/idx/webauthn.ts","../node_modules/@okta/lib/storage/options/browser.ts","../node_modules/@okta/lib/storage/options/StorageOptionsConstructor.ts","../node_modules/@okta/lib/base/options.ts","../node_modules/@okta/lib/fetch/fetchRequest.ts","../node_modules/@okta/lib/oidc/options/browser.ts","../node_modules/@okta/lib/oidc/options/OAuthOptionsConstructor.ts","../node_modules/@okta/lib/http/options.ts","../node_modules/@okta/lib/storage/SavedObject.ts","../node_modules/@okta/lib/storage/BaseStorageManager.ts","../node_modules/@okta/lib/core/storage.ts","../node_modules/@okta/lib/oidc/storage.ts","../node_modules/@okta/lib/oidc/types/Transaction.ts","../node_modules/@okta/lib/oidc/util/sharedStorage.ts","../node_modules/@okta/lib/oidc/TransactionManager.ts","../node_modules/@okta/lib/myaccount/transactions/Base.ts","../node_modules/@okta/lib/myaccount/request.ts","../node_modules/@okta/lib/myaccount/transactions/ProfileTransaction.ts","../node_modules/@okta/lib/myaccount/transactions/ProfileSchemaTransaction.ts","../node_modules/@okta/lib/myaccount/types.ts","../node_modules/@okta/lib/myaccount/profileApi.ts","../node_modules/@okta/lib/myaccount/transactions/EmailStatusTransaction.ts","../node_modules/@okta/lib/myaccount/transactions/EmailChallengeTransaction.ts","../node_modules/@okta/lib/myaccount/transactions/EmailTransaction.ts","../node_modules/@okta/lib/myaccount/emailApi.ts","../node_modules/@okta/lib/myaccount/transactions/PhoneTransaction.ts","../node_modules/@okta/lib/myaccount/phoneApi.ts","../node_modules/@okta/lib/myaccount/transactions/PasswordTransaction.ts","../node_modules/@okta/lib/myaccount/passwordApi.ts","../node_modules/@okta/lib/authn/util/stateToken.ts","../node_modules/@okta/lib/authn/api.ts","../node_modules/@okta/lib/authn/util/link2fn.ts","../node_modules/@okta/lib/errors/AuthPollStopError.ts","../node_modules/@okta/lib/authn/util/poll.ts","../node_modules/@okta/lib/authn/util/flattenEmbedded.ts","../node_modules/@okta/lib/authn/util/links2fns.ts","../node_modules/@okta/lib/authn/AuthnTransactionImpl.ts","../node_modules/@okta/lib/authn/factory.ts","../node_modules/@okta/lib/browser/fingerprint.ts","../node_modules/@okta/lib/exports/default.ts","../node_modules/@okta/lib/idx/options.ts","../node_modules/@okta/lib/core/options.ts","../node_modules/@okta/lib/idx/storage.ts","../node_modules/@okta/lib/idx/factory/OktaAuthIdx.ts","../node_modules/@okta/lib/idx/mixin.ts","../node_modules/@okta/lib/idx/IdxTransactionManager.ts","../node_modules/@okta/lib/myaccount/mixin.ts","../node_modules/@okta/lib/authn/mixin.ts","../node_modules/compare-versions/index.mjs","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@okta/src/OktaError.tsx","../node_modules/@okta/src/Security.tsx","../node_modules/@okta/src/withOktaAuth.tsx","../node_modules/@okta/src/LoginCallback.tsx","../node_modules/@okta/src/SecureRoute.tsx","../node_modules/reactstrap/es/utils.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/reactstrap/es/Container.js","../node_modules/reactstrap/es/Row.js","../node_modules/reactstrap/es/Col.js","Config.ts","okta-config.ts","components/AppDetails.ts","components/Shared/Footer.tsx","micro-frontend.tsx","SubApp.tsx","services/SubAppLoader.ts","../node_modules/@babel/runtime/helpers/esm/objectSpread.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/reactstrap/es/Portal.js","../node_modules/reactstrap/es/Fade.js","../node_modules/reactstrap/es/Modal.js","../node_modules/reactstrap/es/ModalBody.js","../node_modules/reactstrap/es/ModalFooter.js","../node_modules/reactstrap/es/Button.js","components/Shared/NotificationDialog.tsx","components/Shared/AdminLayout.tsx","components/Shared/Versions.tsx","components/App.tsx","serviceWorker.ts","index.tsx"],"sourcesContent":["\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.UrlHistory = exports.ComponentType = exports.AppType = void 0;\r\nvar rxjs_1 = require(\"rxjs\");\r\nvar AppType;\r\n(function (AppType) {\r\n AppType[AppType[\"subApp\"] = 1] = \"subApp\";\r\n AppType[AppType[\"widget\"] = 2] = \"widget\";\r\n})(AppType = exports.AppType || (exports.AppType = {}));\r\nvar ComponentType;\r\n(function (ComponentType) {\r\n ComponentType[ComponentType[\"navigation\"] = 1] = \"navigation\";\r\n ComponentType[ComponentType[\"coreNavigation\"] = 2] = \"coreNavigation\";\r\n ComponentType[ComponentType[\"dashboard\"] = 3] = \"dashboard\";\r\n ComponentType[ComponentType[\"notification\"] = 4] = \"notification\";\r\n})(ComponentType = exports.ComponentType || (exports.ComponentType = {}));\r\nvar UrlHistory = /** @class */ (function () {\r\n function UrlHistory() {\r\n var _this = this;\r\n this._historyInstance = null;\r\n this.$historyUrl = new rxjs_1.BehaviorSubject('');\r\n this.onHistoryUrl = function () { return _this.$historyUrl.asObservable(); };\r\n }\r\n UrlHistory.prototype.setHistoryInstance = function (instance) {\r\n this._historyInstance = instance;\r\n if (instance.location.pathname !== this.$historyUrl.getValue()) {\r\n this.$historyUrl.next(instance.location.pathname);\r\n }\r\n };\r\n UrlHistory.prototype.push = function (url) {\r\n this._historyInstance.push(url);\r\n };\r\n UrlHistory.prototype.currentUrl = function () {\r\n var _a, _b, _c;\r\n return (_c = (_b = (_a = this._historyInstance) === null || _a === void 0 ? void 0 : _a.location) === null || _b === void 0 ? void 0 : _b.pathname) !== null && _c !== void 0 ? _c : '';\r\n };\r\n return UrlHistory;\r\n}());\r\nexports.UrlHistory = UrlHistory;\r\n","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar pkg = require('./../../package.json');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\nvar currentVerArr = pkg.version.split('.');\n\n/**\n * Compare package versions\n * @param {string} version\n * @param {string?} thanVersion\n * @returns {boolean}\n */\nfunction isOlderVersion(version, thanVersion) {\n var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;\n var destVer = version.split('.');\n for (var i = 0; i < 3; i++) {\n if (pkgVersionArr[i] > destVer[i]) {\n return true;\n } else if (pkgVersionArr[i] < destVer[i]) {\n return false;\n }\n }\n return false;\n}\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator\n * @param {string?} version\n * @param {string} message\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n var isDeprecated = version && isOlderVersion(version);\n\n function formatMessage(opt, desc) {\n return '[Axios v' + pkg.version + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed in ' + version));\n }\n\n if (isDeprecated && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n isOlderVersion: isOlderVersion,\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = _interopRequireDefault(require(\"./hasClass\"));\n\nfunction addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];","'use strict';\n\nfunction replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nmodule.exports = function removeClass(element, className) {\n if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","'use strict';\n\nclass CancelError extends Error {\n\tconstructor(reason) {\n\t\tsuper(reason || 'Promise was canceled');\n\t\tthis.name = 'CancelError';\n\t}\n\n\tget isCanceled() {\n\t\treturn true;\n\t}\n}\n\nclass PCancelable {\n\tstatic fn(userFn) {\n\t\treturn (...arguments_) => {\n\t\t\treturn new PCancelable((resolve, reject, onCancel) => {\n\t\t\t\targuments_.push(onCancel);\n\t\t\t\t// eslint-disable-next-line promise/prefer-await-to-then\n\t\t\t\tuserFn(...arguments_).then(resolve, reject);\n\t\t\t});\n\t\t};\n\t}\n\n\tconstructor(executor) {\n\t\tthis._cancelHandlers = [];\n\t\tthis._isPending = true;\n\t\tthis._isCanceled = false;\n\t\tthis._rejectOnCancel = true;\n\n\t\tthis._promise = new Promise((resolve, reject) => {\n\t\t\tthis._reject = reject;\n\n\t\t\tconst onResolve = value => {\n\t\t\t\tif (!this._isCanceled || !onCancel.shouldReject) {\n\t\t\t\t\tthis._isPending = false;\n\t\t\t\t\tresolve(value);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tconst onReject = error => {\n\t\t\t\tthis._isPending = false;\n\t\t\t\treject(error);\n\t\t\t};\n\n\t\t\tconst onCancel = handler => {\n\t\t\t\tif (!this._isPending) {\n\t\t\t\t\tthrow new Error('The `onCancel` handler was attached after the promise settled.');\n\t\t\t\t}\n\n\t\t\t\tthis._cancelHandlers.push(handler);\n\t\t\t};\n\n\t\t\tObject.defineProperties(onCancel, {\n\t\t\t\tshouldReject: {\n\t\t\t\t\tget: () => this._rejectOnCancel,\n\t\t\t\t\tset: boolean => {\n\t\t\t\t\t\tthis._rejectOnCancel = boolean;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn executor(onResolve, onReject, onCancel);\n\t\t});\n\t}\n\n\tthen(onFulfilled, onRejected) {\n\t\t// eslint-disable-next-line promise/prefer-await-to-then\n\t\treturn this._promise.then(onFulfilled, onRejected);\n\t}\n\n\tcatch(onRejected) {\n\t\treturn this._promise.catch(onRejected);\n\t}\n\n\tfinally(onFinally) {\n\t\treturn this._promise.finally(onFinally);\n\t}\n\n\tcancel(reason) {\n\t\tif (!this._isPending || this._isCanceled) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isCanceled = true;\n\n\t\tif (this._cancelHandlers.length > 0) {\n\t\t\ttry {\n\t\t\t\tfor (const handler of this._cancelHandlers) {\n\t\t\t\t\thandler();\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tthis._reject(error);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (this._rejectOnCancel) {\n\t\t\tthis._reject(new CancelError(reason));\n\t\t}\n\t}\n\n\tget isCanceled() {\n\t\treturn this._isCanceled;\n\t}\n}\n\nObject.setPrototypeOf(PCancelable.prototype, Promise.prototype);\n\nmodule.exports = PCancelable;\nmodule.exports.CancelError = CancelError;\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/** @license React v16.13.1\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),n=require(\"object-assign\"),r=require(\"scheduler\");function u(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f}var C={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){C[a]=new v(a,0,!1,a,null,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];C[b]=new v(b,1,!1,a[1],null,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){C[a]=new v(a,2,!1,a.toLowerCase(),null,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){C[a]=new v(a,2,!1,a,null,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){C[a]=new v(a,3,!1,a.toLowerCase(),null,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){C[a]=new v(a,3,!0,a,null,!1)});[\"capture\",\"download\"].forEach(function(a){C[a]=new v(a,4,!1,a,null,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){C[a]=new v(a,6,!1,a,null,!1)});[\"rowSpan\",\"start\"].forEach(function(a){C[a]=new v(a,5,!1,a.toLowerCase(),null,!1)});var Ua=/[\\-:]([a-z])/g;function Va(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(Ua,\nVa);C[b]=new v(b,1,!1,a,null,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(Ua,Va);C[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(Ua,Va);C[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){C[a]=new v(a,1,!1,a.toLowerCase(),null,!1)});\nC.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){C[a]=new v(a,1,!1,a.toLowerCase(),null,!0)});var Wa=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;Wa.hasOwnProperty(\"ReactCurrentDispatcher\")||(Wa.ReactCurrentDispatcher={current:null});Wa.hasOwnProperty(\"ReactCurrentBatchConfig\")||(Wa.ReactCurrentBatchConfig={suspense:null});\nfunction Xa(a,b,c,d){var e=C.hasOwnProperty(b)?C[b]:null;var f=null!==e?0===e.type:d?!1:!(2=c.length))throw Error(u(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:rb(c)}}\nfunction Kb(a,b){var c=rb(b.value),d=rb(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function Lb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var Mb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction Nb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function Ob(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?Nb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar Pb,Qb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==Mb.svg||\"innerHTML\"in a)a.innerHTML=b;else{Pb=Pb||document.createElement(\"div\");Pb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=Pb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction Rb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}function Sb(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Tb={animationend:Sb(\"Animation\",\"AnimationEnd\"),animationiteration:Sb(\"Animation\",\"AnimationIteration\"),animationstart:Sb(\"Animation\",\"AnimationStart\"),transitionend:Sb(\"Transition\",\"TransitionEnd\")},Ub={},Vb={};\nya&&(Vb=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Tb.animationend.animation,delete Tb.animationiteration.animation,delete Tb.animationstart.animation),\"TransitionEvent\"in window||delete Tb.transitionend.transition);function Wb(a){if(Ub[a])return Ub[a];if(!Tb[a])return a;var b=Tb[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Vb)return Ub[a]=b[c];return a}\nvar Xb=Wb(\"animationend\"),Yb=Wb(\"animationiteration\"),Zb=Wb(\"animationstart\"),$b=Wb(\"transitionend\"),ac=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),bc=new (\"function\"===typeof WeakMap?WeakMap:Map);function cc(a){var b=bc.get(a);void 0===b&&(b=new Map,bc.set(a,b));return b}\nfunction dc(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.effectTag&1026)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function ec(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function fc(a){if(dc(a)!==a)throw Error(u(188));}\nfunction gc(a){var b=a.alternate;if(!b){b=dc(a);if(null===b)throw Error(u(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return fc(e),a;if(f===d)return fc(e),b;f=f.sibling}throw Error(u(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(u(189));}}if(c.alternate!==d)throw Error(u(190));}if(3!==c.tag)throw Error(u(188));return c.stateNode.current===c?a:b}function hc(a){a=gc(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nfunction ic(a,b){if(null==b)throw Error(u(30));if(null==a)return b;if(Array.isArray(a)){if(Array.isArray(b))return a.push.apply(a,b),a;a.push(b);return a}return Array.isArray(b)?[a].concat(b):[a,b]}function jc(a,b,c){Array.isArray(a)?a.forEach(b,c):a&&b.call(c,a)}var kc=null;\nfunction lc(a){if(a){var b=a._dispatchListeners,c=a._dispatchInstances;if(Array.isArray(b))for(var d=0;dpc.length&&pc.push(a)}\nfunction rc(a,b,c,d){if(pc.length){var e=pc.pop();e.topLevelType=a;e.eventSystemFlags=d;e.nativeEvent=b;e.targetInst=c;return e}return{topLevelType:a,eventSystemFlags:d,nativeEvent:b,targetInst:c,ancestors:[]}}\nfunction sc(a){var b=a.targetInst,c=b;do{if(!c){a.ancestors.push(c);break}var d=c;if(3===d.tag)d=d.stateNode.containerInfo;else{for(;d.return;)d=d.return;d=3!==d.tag?null:d.stateNode.containerInfo}if(!d)break;b=c.tag;5!==b&&6!==b||a.ancestors.push(c);c=tc(d)}while(c);for(c=0;c=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=ud(c)}}\nfunction wd(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?wd(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}function xd(){for(var a=window,b=td();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=td(a.document)}return b}\nfunction yd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}var zd=\"$\",Ad=\"/$\",Bd=\"$?\",Cd=\"$!\",Dd=null,Ed=null;function Fd(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction Gd(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var Hd=\"function\"===typeof setTimeout?setTimeout:void 0,Id=\"function\"===typeof clearTimeout?clearTimeout:void 0;function Jd(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}\nfunction Kd(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(c===zd||c===Cd||c===Bd){if(0===b)return a;b--}else c===Ad&&b++}a=a.previousSibling}return null}var Ld=Math.random().toString(36).slice(2),Md=\"__reactInternalInstance$\"+Ld,Nd=\"__reactEventHandlers$\"+Ld,Od=\"__reactContainere$\"+Ld;\nfunction tc(a){var b=a[Md];if(b)return b;for(var c=a.parentNode;c;){if(b=c[Od]||c[Md]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Kd(a);null!==a;){if(c=a[Md])return c;a=Kd(a)}return b}a=c;c=a.parentNode}return null}function Nc(a){a=a[Md]||a[Od];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function Pd(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(u(33));}function Qd(a){return a[Nd]||null}\nfunction Rd(a){do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction Sd(a,b){var c=a.stateNode;if(!c)return null;var d=la(c);if(!d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==typeof c)throw Error(u(231,\nb,typeof c));return c}function Td(a,b,c){if(b=Sd(a,c.dispatchConfig.phasedRegistrationNames[b]))c._dispatchListeners=ic(c._dispatchListeners,b),c._dispatchInstances=ic(c._dispatchInstances,a)}function Ud(a){if(a&&a.dispatchConfig.phasedRegistrationNames){for(var b=a._targetInst,c=[];b;)c.push(b),b=Rd(b);for(b=c.length;0this.eventPool.length&&this.eventPool.push(a)}function de(a){a.eventPool=[];a.getPooled=ee;a.release=fe}var ge=G.extend({data:null}),he=G.extend({data:null}),ie=[9,13,27,32],je=ya&&\"CompositionEvent\"in window,ke=null;ya&&\"documentMode\"in document&&(ke=document.documentMode);\nvar le=ya&&\"TextEvent\"in window&&!ke,me=ya&&(!je||ke&&8=ke),ne=String.fromCharCode(32),oe={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"blur compositionend keydown keypress keyup mousedown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"blur compositionstart keydown keypress keyup mousedown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")}},pe=!1;\nfunction qe(a,b){switch(a){case \"keyup\":return-1!==ie.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"blur\":return!0;default:return!1}}function re(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var se=!1;function te(a,b){switch(a){case \"compositionend\":return re(b);case \"keypress\":if(32!==b.which)return null;pe=!0;return ne;case \"textInput\":return a=b.data,a===ne&&pe?null:a;default:return null}}\nfunction ue(a,b){if(se)return\"compositionend\"===a||!je&&qe(a,b)?(a=ae(),$d=Zd=Yd=null,se=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=document.documentMode,df={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")}},ef=null,ff=null,gf=null,hf=!1;\nfunction jf(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(hf||null==ef||ef!==td(c))return null;c=ef;\"selectionStart\"in c&&yd(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return gf&&bf(gf,c)?null:(gf=c,a=G.getPooled(df.select,ff,a,b),a.type=\"select\",a.target=ef,Xd(a),a)}\nvar kf={eventTypes:df,extractEvents:function(a,b,c,d,e,f){e=f||(d.window===d?d.document:9===d.nodeType?d:d.ownerDocument);if(!(f=!e)){a:{e=cc(e);f=wa.onSelect;for(var g=0;gzf||(a.current=yf[zf],yf[zf]=null,zf--)}\nfunction I(a,b){zf++;yf[zf]=a.current;a.current=b}var Af={},J={current:Af},K={current:!1},Bf=Af;function Cf(a,b){var c=a.type.contextTypes;if(!c)return Af;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function L(a){a=a.childContextTypes;return null!==a&&void 0!==a}\nfunction Df(){H(K);H(J)}function Ef(a,b,c){if(J.current!==Af)throw Error(u(168));I(J,b);I(K,c)}function Ff(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(u(108,pb(b)||\"Unknown\",e));return n({},c,{},d)}function Gf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Af;Bf=J.current;I(J,a);I(K,K.current);return!0}\nfunction Hf(a,b,c){var d=a.stateNode;if(!d)throw Error(u(169));c?(a=Ff(a,b,Bf),d.__reactInternalMemoizedMergedChildContext=a,H(K),H(J),I(J,a)):H(K);I(K,c)}\nvar If=r.unstable_runWithPriority,Jf=r.unstable_scheduleCallback,Kf=r.unstable_cancelCallback,Lf=r.unstable_requestPaint,Mf=r.unstable_now,Nf=r.unstable_getCurrentPriorityLevel,Of=r.unstable_ImmediatePriority,Pf=r.unstable_UserBlockingPriority,Qf=r.unstable_NormalPriority,Rf=r.unstable_LowPriority,Sf=r.unstable_IdlePriority,Tf={},Uf=r.unstable_shouldYield,Vf=void 0!==Lf?Lf:function(){},Wf=null,Xf=null,Yf=!1,Zf=Mf(),$f=1E4>Zf?Mf:function(){return Mf()-Zf};\nfunction ag(){switch(Nf()){case Of:return 99;case Pf:return 98;case Qf:return 97;case Rf:return 96;case Sf:return 95;default:throw Error(u(332));}}function bg(a){switch(a){case 99:return Of;case 98:return Pf;case 97:return Qf;case 96:return Rf;case 95:return Sf;default:throw Error(u(332));}}function cg(a,b){a=bg(a);return If(a,b)}function dg(a,b,c){a=bg(a);return Jf(a,b,c)}function eg(a){null===Wf?(Wf=[a],Xf=Jf(Of,fg)):Wf.push(a);return Tf}function gg(){if(null!==Xf){var a=Xf;Xf=null;Kf(a)}fg()}\nfunction fg(){if(!Yf&&null!==Wf){Yf=!0;var a=0;try{var b=Wf;cg(99,function(){for(;a=b&&(rg=!0),a.firstContext=null)}\nfunction sg(a,b){if(mg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)mg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===lg){if(null===kg)throw Error(u(308));lg=b;kg.dependencies={expirationTime:0,firstContext:b,responders:null}}else lg=lg.next=b}return a._currentValue}var tg=!1;function ug(a){a.updateQueue={baseState:a.memoizedState,baseQueue:null,shared:{pending:null},effects:null}}\nfunction vg(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,baseQueue:a.baseQueue,shared:a.shared,effects:a.effects})}function wg(a,b){a={expirationTime:a,suspenseConfig:b,tag:0,payload:null,callback:null,next:null};return a.next=a}function xg(a,b){a=a.updateQueue;if(null!==a){a=a.shared;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}}\nfunction yg(a,b){var c=a.alternate;null!==c&&vg(c,a);a=a.updateQueue;c=a.baseQueue;null===c?(a.baseQueue=b.next=b,b.next=b):(b.next=c.next,c.next=b)}\nfunction zg(a,b,c,d){var e=a.updateQueue;tg=!1;var f=e.baseQueue,g=e.shared.pending;if(null!==g){if(null!==f){var h=f.next;f.next=g.next;g.next=h}f=g;e.shared.pending=null;h=a.alternate;null!==h&&(h=h.updateQueue,null!==h&&(h.baseQueue=g))}if(null!==f){h=f.next;var k=e.baseState,l=0,m=null,p=null,x=null;if(null!==h){var z=h;do{g=z.expirationTime;if(gl&&(l=g)}else{null!==x&&(x=x.next={expirationTime:1073741823,suspenseConfig:z.suspenseConfig,tag:z.tag,payload:z.payload,callback:z.callback,next:null});Ag(g,z.suspenseConfig);a:{var D=a,t=z;g=b;ca=c;switch(t.tag){case 1:D=t.payload;if(\"function\"===typeof D){k=D.call(ca,k,g);break a}k=D;break a;case 3:D.effectTag=D.effectTag&-4097|64;case 0:D=t.payload;g=\"function\"===typeof D?D.call(ca,k,g):D;if(null===g||void 0===g)break a;k=n({},k,g);break a;case 2:tg=!0}}null!==z.callback&&\n(a.effectTag|=32,g=e.effects,null===g?e.effects=[z]:g.push(z))}z=z.next;if(null===z||z===h)if(g=e.shared.pending,null===g)break;else z=f.next=g.next,g.next=h,e.baseQueue=f=g,e.shared.pending=null}while(1)}null===x?m=k:x.next=p;e.baseState=m;e.baseQueue=x;Bg(l);a.expirationTime=l;a.memoizedState=k}}\nfunction Cg(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;by?(A=m,m=null):A=m.sibling;var q=x(e,m,h[y],k);if(null===q){null===m&&(m=A);break}a&&\nm&&null===q.alternate&&b(e,m);g=f(q,g,y);null===t?l=q:t.sibling=q;t=q;m=A}if(y===h.length)return c(e,m),l;if(null===m){for(;yy?(A=t,t=null):A=t.sibling;var D=x(e,t,q.value,l);if(null===D){null===t&&(t=A);break}a&&t&&null===D.alternate&&b(e,t);g=f(D,g,y);null===m?k=D:m.sibling=D;m=D;t=A}if(q.done)return c(e,t),k;if(null===t){for(;!q.done;y++,q=h.next())q=p(e,q.value,l),null!==q&&(g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);return k}for(t=d(e,t);!q.done;y++,q=h.next())q=z(t,e,y,q.value,l),null!==q&&(a&&null!==\nq.alternate&&t.delete(null===q.key?y:q.key),g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);a&&t.forEach(function(a){return b(e,a)});return k}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ab&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Za:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ab){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,\nk.sibling);d=e(k,f.props);d.ref=Pg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ab?(d=Wg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Ug(f.type,f.key,f.props,null,a.mode,h),h.ref=Pg(a,d,f),h.return=a,a=h)}return g(a);case $a:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=\nd.sibling}d=Vg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Tg(f,a.mode,h),d.return=a,a=d),g(a);if(Og(f))return ca(a,d,f,h);if(nb(f))return D(a,d,f,h);l&&Qg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 0:throw a=a.type,Error(u(152,a.displayName||a.name||\"Component\"));}return c(a,d)}}var Xg=Rg(!0),Yg=Rg(!1),Zg={},$g={current:Zg},ah={current:Zg},bh={current:Zg};\nfunction ch(a){if(a===Zg)throw Error(u(174));return a}function dh(a,b){I(bh,b);I(ah,a);I($g,Zg);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:Ob(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=Ob(b,a)}H($g);I($g,b)}function eh(){H($g);H(ah);H(bh)}function fh(a){ch(bh.current);var b=ch($g.current);var c=Ob(b,a.type);b!==c&&(I(ah,a),I($g,c))}function gh(a){ah.current===a&&(H($g),H(ah))}var M={current:0};\nfunction hh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||c.data===Bd||c.data===Cd))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.effectTag&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}function ih(a,b){return{responder:a,props:b}}\nvar jh=Wa.ReactCurrentDispatcher,kh=Wa.ReactCurrentBatchConfig,lh=0,N=null,O=null,P=null,mh=!1;function Q(){throw Error(u(321));}function nh(a,b){if(null===b)return!1;for(var c=0;cf))throw Error(u(301));f+=1;P=O=null;b.updateQueue=null;jh.current=rh;a=c(d,e)}while(b.expirationTime===lh)}jh.current=sh;b=null!==O&&null!==O.next;lh=0;P=O=N=null;mh=!1;if(b)throw Error(u(300));return a}\nfunction th(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===P?N.memoizedState=P=a:P=P.next=a;return P}function uh(){if(null===O){var a=N.alternate;a=null!==a?a.memoizedState:null}else a=O.next;var b=null===P?N.memoizedState:P.next;if(null!==b)P=b,O=a;else{if(null===a)throw Error(u(310));O=a;a={memoizedState:O.memoizedState,baseState:O.baseState,baseQueue:O.baseQueue,queue:O.queue,next:null};null===P?N.memoizedState=P=a:P=P.next=a}return P}\nfunction vh(a,b){return\"function\"===typeof b?b(a):b}\nfunction wh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=O,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.expirationTime;if(lN.expirationTime&&\n(N.expirationTime=l,Bg(l))}else null!==h&&(h=h.next={expirationTime:1073741823,suspenseConfig:k.suspenseConfig,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),Ag(l,k.suspenseConfig),d=k.eagerReducer===a?k.eagerState:a(d,k.action);k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;$e(d,b.memoizedState)||(rg=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction xh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);$e(f,b.memoizedState)||(rg=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction yh(a){var b=th();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={pending:null,dispatch:null,lastRenderedReducer:vh,lastRenderedState:a};a=a.dispatch=zh.bind(null,N,a);return[b.memoizedState,a]}function Ah(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=N.updateQueue;null===b?(b={lastEffect:null},N.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}\nfunction Bh(){return uh().memoizedState}function Ch(a,b,c,d){var e=th();N.effectTag|=a;e.memoizedState=Ah(1|b,c,void 0,void 0===d?null:d)}function Dh(a,b,c,d){var e=uh();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&nh(d,g.deps)){Ah(b,c,f,d);return}}N.effectTag|=a;e.memoizedState=Ah(1|b,c,f,d)}function Eh(a,b){return Ch(516,4,a,b)}function Fh(a,b){return Dh(516,4,a,b)}function Gh(a,b){return Dh(4,2,a,b)}\nfunction Hh(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function Ih(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Dh(4,2,Hh.bind(null,b,a),c)}function Jh(){}function Kh(a,b){th().memoizedState=[a,void 0===b?null:b];return a}function Lh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Mh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function Nh(a,b,c){var d=ag();cg(98>d?98:d,function(){a(!0)});cg(97\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(e,{is:d.is}):(a=g.createElement(e),\"select\"===e&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,e);a[Md]=b;a[Nd]=d;ni(a,b,!1,!1);b.stateNode=a;g=pd(e,d);switch(e){case \"iframe\":case \"object\":case \"embed\":F(\"load\",\na);h=d;break;case \"video\":case \"audio\":for(h=0;hd.tailExpiration&&1b)&&tj.set(a,b)))}}\nfunction xj(a,b){a.expirationTimea?c:a;return 2>=a&&b!==a?0:a}\nfunction Z(a){if(0!==a.lastExpiredTime)a.callbackExpirationTime=1073741823,a.callbackPriority=99,a.callbackNode=eg(yj.bind(null,a));else{var b=zj(a),c=a.callbackNode;if(0===b)null!==c&&(a.callbackNode=null,a.callbackExpirationTime=0,a.callbackPriority=90);else{var d=Gg();1073741823===b?d=99:1===b||2===b?d=95:(d=10*(1073741821-b)-10*(1073741821-d),d=0>=d?99:250>=d?98:5250>=d?97:95);if(null!==c){var e=a.callbackPriority;if(a.callbackExpirationTime===b&&e>=d)return;c!==Tf&&Kf(c)}a.callbackExpirationTime=\nb;a.callbackPriority=d;b=1073741823===b?eg(yj.bind(null,a)):dg(d,Bj.bind(null,a),{timeout:10*(1073741821-b)-$f()});a.callbackNode=b}}}\nfunction Bj(a,b){wj=0;if(b)return b=Gg(),Cj(a,b),Z(a),null;var c=zj(a);if(0!==c){b=a.callbackNode;if((W&(fj|gj))!==V)throw Error(u(327));Dj();a===T&&c===U||Ej(a,c);if(null!==X){var d=W;W|=fj;var e=Fj();do try{Gj();break}catch(h){Hj(a,h)}while(1);ng();W=d;cj.current=e;if(S===hj)throw b=kj,Ej(a,c),xi(a,c),Z(a),b;if(null===X)switch(e=a.finishedWork=a.current.alternate,a.finishedExpirationTime=c,d=S,T=null,d){case ti:case hj:throw Error(u(345));case ij:Cj(a,2=c){a.lastPingedTime=c;Ej(a,c);break}}f=zj(a);if(0!==f&&f!==c)break;if(0!==d&&d!==c){a.lastPingedTime=d;break}a.timeoutHandle=Hd(Jj.bind(null,a),e);break}Jj(a);break;case vi:xi(a,c);d=a.lastSuspendedTime;c===d&&(a.nextKnownPendingLevel=Ij(e));if(oj&&(e=a.lastPingedTime,0===e||e>=c)){a.lastPingedTime=c;Ej(a,c);break}e=zj(a);if(0!==e&&e!==c)break;if(0!==d&&d!==c){a.lastPingedTime=\nd;break}1073741823!==mj?d=10*(1073741821-mj)-$f():1073741823===lj?d=0:(d=10*(1073741821-lj)-5E3,e=$f(),c=10*(1073741821-c)-e,d=e-d,0>d&&(d=0),d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*bj(d/1960))-d,c=d?d=0:(e=g.busyDelayMs|0,f=$f()-(10*(1073741821-f)-(g.timeoutMs|0||5E3)),d=f<=e?0:e+d-f);if(10 component higher in the tree to provide a loading indicator or placeholder to display.\"+qb(g))}S!==\njj&&(S=ij);h=Ai(h,g);p=f;do{switch(p.tag){case 3:k=h;p.effectTag|=4096;p.expirationTime=b;var B=Xi(p,k,b);yg(p,B);break a;case 1:k=h;var w=p.type,ub=p.stateNode;if(0===(p.effectTag&64)&&(\"function\"===typeof w.getDerivedStateFromError||null!==ub&&\"function\"===typeof ub.componentDidCatch&&(null===aj||!aj.has(ub)))){p.effectTag|=4096;p.expirationTime=b;var vb=$i(p,k,b);yg(p,vb);break a}}p=p.return}while(null!==p)}X=Pj(X)}catch(Xc){b=Xc;continue}break}while(1)}\nfunction Fj(){var a=cj.current;cj.current=sh;return null===a?sh:a}function Ag(a,b){awi&&(wi=a)}function Kj(){for(;null!==X;)X=Qj(X)}function Gj(){for(;null!==X&&!Uf();)X=Qj(X)}function Qj(a){var b=Rj(a.alternate,a,U);a.memoizedProps=a.pendingProps;null===b&&(b=Pj(a));dj.current=null;return b}\nfunction Pj(a){X=a;do{var b=X.alternate;a=X.return;if(0===(X.effectTag&2048)){b=si(b,X,U);if(1===U||1!==X.childExpirationTime){for(var c=0,d=X.child;null!==d;){var e=d.expirationTime,f=d.childExpirationTime;e>c&&(c=e);f>c&&(c=f);d=d.sibling}X.childExpirationTime=c}if(null!==b)return b;null!==a&&0===(a.effectTag&2048)&&(null===a.firstEffect&&(a.firstEffect=X.firstEffect),null!==X.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=X.firstEffect),a.lastEffect=X.lastEffect),1a?b:a}function Jj(a){var b=ag();cg(99,Sj.bind(null,a,b));return null}\nfunction Sj(a,b){do Dj();while(null!==rj);if((W&(fj|gj))!==V)throw Error(u(327));var c=a.finishedWork,d=a.finishedExpirationTime;if(null===c)return null;a.finishedWork=null;a.finishedExpirationTime=0;if(c===a.current)throw Error(u(177));a.callbackNode=null;a.callbackExpirationTime=0;a.callbackPriority=90;a.nextKnownPendingLevel=0;var e=Ij(c);a.firstPendingTime=e;d<=a.lastSuspendedTime?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:d<=a.firstSuspendedTime&&(a.firstSuspendedTime=\nd-1);d<=a.lastPingedTime&&(a.lastPingedTime=0);d<=a.lastExpiredTime&&(a.lastExpiredTime=0);a===T&&(X=T=null,U=0);1h&&(l=h,h=g,g=l),l=vd(q,g),m=vd(q,h),l&&m&&(1!==w.rangeCount||w.anchorNode!==l.node||w.anchorOffset!==l.offset||w.focusNode!==m.node||w.focusOffset!==m.offset)&&(B=B.createRange(),B.setStart(l.node,l.offset),w.removeAllRanges(),g>h?(w.addRange(B),w.extend(m.node,m.offset)):(B.setEnd(m.node,m.offset),w.addRange(B))))));B=[];for(w=q;w=w.parentNode;)1===w.nodeType&&B.push({element:w,left:w.scrollLeft,\ntop:w.scrollTop});\"function\"===typeof q.focus&&q.focus();for(q=0;q=c)return ji(a,b,c);I(M,M.current&1);b=$h(a,b,c);return null!==b?b.sibling:null}I(M,M.current&1);break;case 19:d=b.childExpirationTime>=c;if(0!==(a.effectTag&64)){if(d)return mi(a,b,c);b.effectTag|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null);I(M,M.current);if(!d)return null}return $h(a,b,c)}rg=!1}}else rg=!1;b.expirationTime=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;e=Cf(b,J.current);qg(b,c);e=oh(null,\nb,d,a,e,c);b.effectTag|=1;if(\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(L(d)){var f=!0;Gf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;ug(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Fg(b,d,g,a);e.updater=Jg;b.stateNode=e;e._reactInternalFiber=b;Ng(b,d,a,c);b=gi(null,b,d,!0,f,c)}else b.tag=0,R(null,b,e,c),b=b.child;return b;case 16:a:{e=b.elementType;null!==a&&(a.alternate=\nnull,b.alternate=null,b.effectTag|=2);a=b.pendingProps;ob(e);if(1!==e._status)throw e._result;e=e._result;b.type=e;f=b.tag=Xj(e);a=ig(e,a);switch(f){case 0:b=di(null,b,e,a,c);break a;case 1:b=fi(null,b,e,a,c);break a;case 11:b=Zh(null,b,e,a,c);break a;case 14:b=ai(null,b,e,ig(e.type,a),d,c);break a}throw Error(u(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),di(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),fi(a,b,d,e,c);\ncase 3:hi(b);d=b.updateQueue;if(null===a||null===d)throw Error(u(282));d=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;vg(a,b);zg(b,d,null,c);d=b.memoizedState.element;if(d===e)Xh(),b=$h(a,b,c);else{if(e=b.stateNode.hydrate)Ph=Jd(b.stateNode.containerInfo.firstChild),Oh=b,e=Qh=!0;if(e)for(c=Yg(b,null,d,c),b.child=c;c;)c.effectTag=c.effectTag&-3|1024,c=c.sibling;else R(a,b,d,c),Xh();b=b.child}return b;case 5:return fh(b),null===a&&Uh(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:\nnull,g=e.children,Gd(d,e)?g=null:null!==f&&Gd(d,f)&&(b.effectTag|=16),ei(a,b),b.mode&4&&1!==c&&e.hidden?(b.expirationTime=b.childExpirationTime=1,b=null):(R(a,b,g,c),b=b.child),b;case 6:return null===a&&Uh(b),null;case 13:return ji(a,b,c);case 4:return dh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Xg(b,null,d,c):R(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),Zh(a,b,d,e,c);case 7:return R(a,b,b.pendingProps,c),b.child;case 8:return R(a,\nb,b.pendingProps.children,c),b.child;case 12:return R(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;var h=b.type._context;I(jg,h._currentValue);h._currentValue=f;if(null!==g)if(h=g.value,f=$e(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0,0===f){if(g.children===e.children&&!K.current){b=$h(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==\nk){g=h.child;for(var l=k.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=wg(c,null),l.tag=2,xg(h,l));h.expirationTime=b&&a<=b}function xi(a,b){var c=a.firstSuspendedTime,d=a.lastSuspendedTime;cb||0===c)a.lastSuspendedTime=b;b<=a.lastPingedTime&&(a.lastPingedTime=0);b<=a.lastExpiredTime&&(a.lastExpiredTime=0)}\nfunction yi(a,b){b>a.firstPendingTime&&(a.firstPendingTime=b);var c=a.firstSuspendedTime;0!==c&&(b>=c?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:b>=a.lastSuspendedTime&&(a.lastSuspendedTime=b+1),b>a.nextKnownPendingLevel&&(a.nextKnownPendingLevel=b))}function Cj(a,b){var c=a.lastExpiredTime;if(0===c||c>b)a.lastExpiredTime=b}\nfunction bk(a,b,c,d){var e=b.current,f=Gg(),g=Dg.suspense;f=Hg(f,e,g);a:if(c){c=c._reactInternalFiber;b:{if(dc(c)!==c||1!==c.tag)throw Error(u(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(L(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(u(171));}if(1===c.tag){var k=c.type;if(L(k)){c=Ff(c,k,h);break a}}c=h}else c=Af;null===b.context?b.context=c:b.pendingContext=c;b=wg(f,g);b.payload={element:a};d=void 0===\nd?null:d;null!==d&&(b.callback=d);xg(e,b);Ig(e,f);return f}function ck(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function dk(a,b){a=a.memoizedState;null!==a&&null!==a.dehydrated&&a.retryTime\n * \n *
\n * {\"I'll receive my-node-* classes\"}\n *
\n *
\n * \n * \n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity: 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**.\n */\n\n\nvar CSSTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n\n function CSSTransition() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _this.onEnter = function (node, appearing) {\n var _this$getClassNames = _this.getClassNames(appearing ? 'appear' : 'enter'),\n className = _this$getClassNames.className;\n\n _this.removeClasses(node, 'exit');\n\n addClass(node, className);\n\n if (_this.props.onEnter) {\n _this.props.onEnter(node, appearing);\n }\n };\n\n _this.onEntering = function (node, appearing) {\n var _this$getClassNames2 = _this.getClassNames(appearing ? 'appear' : 'enter'),\n activeClassName = _this$getClassNames2.activeClassName;\n\n _this.reflowAndAddClass(node, activeClassName);\n\n if (_this.props.onEntering) {\n _this.props.onEntering(node, appearing);\n }\n };\n\n _this.onEntered = function (node, appearing) {\n var appearClassName = _this.getClassNames('appear').doneClassName;\n\n var enterClassName = _this.getClassNames('enter').doneClassName;\n\n var doneClassName = appearing ? appearClassName + \" \" + enterClassName : enterClassName;\n\n _this.removeClasses(node, appearing ? 'appear' : 'enter');\n\n addClass(node, doneClassName);\n\n if (_this.props.onEntered) {\n _this.props.onEntered(node, appearing);\n }\n };\n\n _this.onExit = function (node) {\n var _this$getClassNames3 = _this.getClassNames('exit'),\n className = _this$getClassNames3.className;\n\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n addClass(node, className);\n\n if (_this.props.onExit) {\n _this.props.onExit(node);\n }\n };\n\n _this.onExiting = function (node) {\n var _this$getClassNames4 = _this.getClassNames('exit'),\n activeClassName = _this$getClassNames4.activeClassName;\n\n _this.reflowAndAddClass(node, activeClassName);\n\n if (_this.props.onExiting) {\n _this.props.onExiting(node);\n }\n };\n\n _this.onExited = function (node) {\n var _this$getClassNames5 = _this.getClassNames('exit'),\n doneClassName = _this$getClassNames5.doneClassName;\n\n _this.removeClasses(node, 'exit');\n\n addClass(node, doneClassName);\n\n if (_this.props.onExited) {\n _this.props.onExited(node);\n }\n };\n\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + '-' : '';\n var className = isStringClassNames ? prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? className + '-active' : classNames[type + 'Active'];\n var doneClassName = isStringClassNames ? className + '-done' : classNames[type + 'Done'];\n return {\n className: className,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$getClassNames6 = this.getClassNames(type),\n className = _this$getClassNames6.className,\n activeClassName = _this$getClassNames6.activeClassName,\n doneClassName = _this$getClassNames6.doneClassName;\n\n className && removeClass(node, className);\n activeClassName && removeClass(node, activeClassName);\n doneClassName && removeClass(node, doneClassName);\n };\n\n _proto.reflowAndAddClass = function reflowAndAddClass(node, className) {\n // This is for to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n if (className) {\n /* eslint-disable no-unused-expressions */\n node && node.scrollTop;\n /* eslint-enable no-unused-expressions */\n\n addClass(node, className);\n }\n };\n\n _proto.render = function render() {\n var props = _extends({}, this.props);\n\n delete props.classNames;\n return _react.default.createElement(_Transition.default, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n\n return CSSTransition;\n}(_react.default.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, _Transition.default.propTypes, {\n /**\n * The animation classNames applied to the component as it enters, exits or\n * has finished the transition. A single name can be provided and it will be\n * suffixed for each stage: e.g.\n *\n * `classNames=\"fade\"` applies `fade-enter`, `fade-enter-active`,\n * `fade-enter-done`, `fade-exit`, `fade-exit-active`, `fade-exit-done`,\n * `fade-appear`, `fade-appear-active`, and `fade-appear-done`.\n *\n * **Note**: `fade-appear-done` and `fade-enter-done` will _both_ be applied.\n * This allows you to define different behavior for when appearing is done and\n * when regular entering is done, using selectors like\n * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply an\n * epic entrance animation when element first appears in the DOM using\n * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n * simply use `fade-enter-done` for defining both cases.\n *\n * Each individual classNames can also be specified independently like:\n *\n * ```js\n * classNames={{\n * appear: 'my-appear',\n * appearActive: 'my-active-appear',\n * appearDone: 'my-done-appear',\n * enter: 'my-enter',\n * enterActive: 'my-active-enter',\n * enterDone: 'my-done-enter',\n * exit: 'my-exit',\n * exitActive: 'my-active-exit',\n * exitDone: 'my-done-exit',\n * }}\n * ```\n *\n * If you want to set these classes using CSS Modules:\n *\n * ```js\n * import styles from './styles.css';\n * ```\n *\n * you might want to use camelCase in your CSS file, that way could simply\n * spread them instead of listing them one by one:\n *\n * ```js\n * classNames={{ ...styles }}\n * ```\n *\n * @type {string | {\n * appear?: string,\n * appearActive?: string,\n * appearDone?: string,\n * enter?: string,\n * enterActive?: string,\n * enterDone?: string,\n * exit?: string,\n * exitActive?: string,\n * exitDone?: string,\n * }}\n */\n classNames: _PropTypes.classNamesShape,\n\n /**\n * A `` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEnter: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter-active' or\n * 'appear-active' class is applied.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter' or\n * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntered: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' class is\n * applied.\n *\n * @type Function(node: HtmlElement)\n */\n onExit: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit-active' is applied.\n *\n * @type Function(node: HtmlElement)\n */\n onExiting: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' classes\n * are **removed** and the `exit-done` class is added to the DOM node.\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nvar _default = CSSTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = require(\"react-dom\");\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * The `` component is a specialized `Transition` component\n * that animates between two children.\n *\n * ```jsx\n * \n *
I appear first
\n *
I replace the above
\n *
\n * ```\n */\nvar ReplaceTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(ReplaceTransition, _React$Component);\n\n function ReplaceTransition() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n\n _this.handleEnter = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _this.handleLifecycle('onEnter', 0, args);\n };\n\n _this.handleEntering = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return _this.handleLifecycle('onEntering', 0, args);\n };\n\n _this.handleEntered = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return _this.handleLifecycle('onEntered', 0, args);\n };\n\n _this.handleExit = function () {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n return _this.handleLifecycle('onExit', 1, args);\n };\n\n _this.handleExiting = function () {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n return _this.handleLifecycle('onExiting', 1, args);\n };\n\n _this.handleExited = function () {\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n\n return _this.handleLifecycle('onExited', 1, args);\n };\n\n return _this;\n }\n\n var _proto = ReplaceTransition.prototype;\n\n _proto.handleLifecycle = function handleLifecycle(handler, idx, originalArgs) {\n var _child$props;\n\n var children = this.props.children;\n\n var child = _react.default.Children.toArray(children)[idx];\n\n if (child.props[handler]) (_child$props = child.props)[handler].apply(_child$props, originalArgs);\n if (this.props[handler]) this.props[handler]((0, _reactDom.findDOMNode)(this));\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n children = _this$props.children,\n inProp = _this$props.in,\n props = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\"]);\n\n var _React$Children$toArr = _react.default.Children.toArray(children),\n first = _React$Children$toArr[0],\n second = _React$Children$toArr[1];\n\n delete props.onEnter;\n delete props.onEntering;\n delete props.onEntered;\n delete props.onExit;\n delete props.onExiting;\n delete props.onExited;\n return _react.default.createElement(_TransitionGroup.default, props, inProp ? _react.default.cloneElement(first, {\n key: 'first',\n onEnter: this.handleEnter,\n onEntering: this.handleEntering,\n onEntered: this.handleEntered\n }) : _react.default.cloneElement(second, {\n key: 'second',\n onEnter: this.handleExit,\n onEntering: this.handleExiting,\n onEntered: this.handleExited\n }));\n };\n\n return ReplaceTransition;\n}(_react.default.Component);\n\nReplaceTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n in: _propTypes.default.bool.isRequired,\n children: function children(props, propName) {\n if (_react.default.Children.count(props[propName]) !== 2) return new Error(\"\\\"\" + propName + \"\\\" must be exactly two transition components.\");\n return null;\n }\n} : {};\nvar _default = ReplaceTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar UNMOUNTED = 'unmounted';\nexports.UNMOUNTED = UNMOUNTED;\nvar EXITED = 'exited';\nexports.EXITED = EXITED;\nvar ENTERING = 'entering';\nexports.ENTERING = ENTERING;\nvar ENTERED = 'entered';\nexports.ENTERED = ENTERED;\nvar EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 0 },\n * entered: { opacity: 1 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
\n * I'm a fade Transition!\n *
\n * )}\n *
\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nexports.EXITING = EXITING;\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context.transitionGroup; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n var _proto = Transition.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: null // allows for nested Transitions\n\n };\n };\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n }; // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n var node = _reactDom.default.findDOMNode(this);\n\n if (nextStatus === ENTERING) {\n this.performEnter(node, mounting);\n } else {\n this.performExit(node);\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(node, mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context.transitionGroup ? this.context.transitionGroup.isMounting : mounting;\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node);\n });\n return;\n }\n\n this.props.onEnter(node, appearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(node, appearing);\n\n _this2.onTransitionEnd(node, enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node, appearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit(node) {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n if (!exit) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n return;\n }\n\n this.props.onExit(node);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(node);\n\n _this3.onTransitionEnd(node, timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n this.setNextCallback(handler);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n this.props.addEndListener(node, this.nextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n delete childProps.in;\n delete childProps.mountOnEnter;\n delete childProps.unmountOnExit;\n delete childProps.appear;\n delete childProps.enter;\n delete childProps.exit;\n delete childProps.timeout;\n delete childProps.addEndListener;\n delete childProps.onEnter;\n delete childProps.onEntering;\n delete childProps.onEntered;\n delete childProps.onExit;\n delete childProps.onExiting;\n delete childProps.onExited;\n\n if (typeof children === 'function') {\n return children(status, childProps);\n }\n\n var child = _react.default.Children.only(children);\n\n return _react.default.cloneElement(child, childProps);\n };\n\n return Transition;\n}(_react.default.Component);\n\nTransition.contextTypes = {\n transitionGroup: PropTypes.object\n};\nTransition.childContextTypes = {\n transitionGroup: function transitionGroup() {}\n};\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`, `'unmounted'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * Normally a component is not transitioned if it is shown when the `` component mounts.\n * If you want to transition on the first mount set `appear` to `true`, and the\n * component will transition in as soon as the `` mounts.\n *\n * > Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = _PropTypes.timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. **Note:** Timeouts are still used as a fallback if provided.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func // Name the function so it is clearer in the documentation\n\n} : {};\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(Transition);\n\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _ChildMapping = require(\"./utils/ChildMapping\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n /**\n * The `` component manages a set of transition components\n * (`` and ``) in a list. Like with the transition\n * components, `` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the ``.\n *\n * Note that `` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\n};\n\nvar TransitionGroup =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_assertThisInitialized(_this))); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: {\n isMounting: !this.appeared\n }\n };\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this.appeared = true;\n this.mounted = true;\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? (0, _ChildMapping.getInitialChildMapping)(nextProps, handleExited) : (0, _ChildMapping.getNextChildMapping)(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n };\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = (0, _ChildMapping.getChildMapping)(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return children;\n }\n\n return _react.default.createElement(Component, props, children);\n };\n\n return TransitionGroup;\n}(_react.default.Component);\n\nTransitionGroup.childContextTypes = {\n transitionGroup: _propTypes.default.object.isRequired\n};\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `` renders a `
` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `
` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: _propTypes.default.any,\n\n /**\n * A set of `` components, that are toggled `in` and out as they\n * leave. the `` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `` as\n * with our `` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: _propTypes.default.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: _propTypes.default.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: _propTypes.default.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: _propTypes.default.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: _propTypes.default.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(TransitionGroup);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _CSSTransition = _interopRequireDefault(require(\"./CSSTransition\"));\n\nvar _ReplaceTransition = _interopRequireDefault(require(\"./ReplaceTransition\"));\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n Transition: _Transition.default,\n TransitionGroup: _TransitionGroup.default,\n ReplaceTransition: _ReplaceTransition.default,\n CSSTransition: _CSSTransition.default\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.getChildMapping = getChildMapping;\nexports.mergeChildMappings = mergeChildMappings;\nexports.getInitialChildMapping = getInitialChildMapping;\nexports.getNextChildMapping = getNextChildMapping;\n\nvar _react = require(\"react\");\n\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\nfunction getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && (0, _react.isValidElement)(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) _react.Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\n\nfunction mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nfunction getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\n\nfunction getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!(0, _react.isValidElement)(child)) return;\n var hasPrev = key in prevChildMapping;\n var hasNext = key in nextChildMapping;\n var prevChild = prevChildMapping[key];\n var isLeaving = (0, _react.isValidElement)(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = (0, _react.cloneElement)(child, {\n in: false\n });\n } else if (hasNext && hasPrev && (0, _react.isValidElement)(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.classNamesShape = exports.timeoutsShape = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar timeoutsShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n enter: _propTypes.default.number,\n exit: _propTypes.default.number,\n appear: _propTypes.default.number\n}).isRequired]) : null;\nexports.timeoutsShape = timeoutsShape;\nvar classNamesShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({\n enter: _propTypes.default.string,\n exit: _propTypes.default.string,\n active: _propTypes.default.string\n}), _propTypes.default.shape({\n enter: _propTypes.default.string,\n enterDone: _propTypes.default.string,\n enterActive: _propTypes.default.string,\n exit: _propTypes.default.string,\n exitDone: _propTypes.default.string,\n exitActive: _propTypes.default.string\n})]) : null;\nexports.classNamesShape = classNamesShape;","/** @license React v16.13.1\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var l=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.forward_ref\"):60112,y=n?Symbol.for(\"react.suspense\"):60113,z=n?Symbol.for(\"react.memo\"):60115,A=n?Symbol.for(\"react.lazy\"):\n60116,B=\"function\"===typeof Symbol&&Symbol.iterator;function C(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cQ.length&&Q.push(a)}\nfunction T(a,b,c,e){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return c(e,a,\"\"===b?\".\"+U(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var k=0;k console.log(`refCount ${num}`)),\n * publish(),\n * refCount()\n * );\n *\n * const publishedInterval = interval(400).pipe(\n * tap((num) => console.log(`publish ${num}`)),\n * publish()\n * );\n *\n * refCountInterval.subscribe();\n * refCountInterval.subscribe();\n * // 'refCount 0' -----> 'refCount 1' -----> etc\n * // All subscriptions will receive the same value and the tap (and\n * // every other operator) before the publish operator will be executed\n * // only once per event independently of the number of subscriptions.\n *\n * publishedInterval.subscribe();\n * // Nothing happens until you call .connect() on the observable.\n * ```\n *\n * @see {@link ConnectableObservable}\n * @see {@link share}\n * @see {@link publish}\n */\nexport function refCount(): MonoTypeOperatorFunction {\n return function refCountOperatorFunction(source: ConnectableObservable): Observable {\n return source.lift(new RefCountOperator(source));\n } as MonoTypeOperatorFunction;\n}\n\nclass RefCountOperator implements Operator {\n constructor(private connectable: ConnectableObservable) {\n }\n call(subscriber: Subscriber, source: any): TeardownLogic {\n\n const { connectable } = this;\n ( connectable)._refCount++;\n\n const refCounter = new RefCountSubscriber(subscriber, connectable);\n const subscription = source.subscribe(refCounter);\n\n if (!refCounter.closed) {\n ( refCounter).connection = connectable.connect();\n }\n\n return subscription;\n }\n}\n\nclass RefCountSubscriber extends Subscriber {\n\n private connection: Subscription;\n\n constructor(destination: Subscriber,\n private connectable: ConnectableObservable) {\n super(destination);\n }\n\n protected _unsubscribe() {\n\n const { connectable } = this;\n if (!connectable) {\n this.connection = null;\n return;\n }\n\n this.connectable = null;\n const refCount = ( connectable)._refCount;\n if (refCount <= 0) {\n this.connection = null;\n return;\n }\n\n ( connectable)._refCount = refCount - 1;\n if (refCount > 1) {\n this.connection = null;\n return;\n }\n\n ///\n // Compare the local RefCountSubscriber's connection Subscription to the\n // connection Subscription on the shared ConnectableObservable. In cases\n // where the ConnectableObservable source synchronously emits values, and\n // the RefCountSubscriber's downstream Observers synchronously unsubscribe,\n // execution continues to here before the RefCountOperator has a chance to\n // supply the RefCountSubscriber with the shared connection Subscription.\n // For example:\n // ```\n // range(0, 10).pipe(\n // publish(),\n // refCount(),\n // take(5),\n // )\n // .subscribe();\n // ```\n // In order to account for this case, RefCountSubscriber should only dispose\n // the ConnectableObservable's shared connection Subscription if the\n // connection Subscription exists, *and* either:\n // a. RefCountSubscriber doesn't have a reference to the shared connection\n // Subscription yet, or,\n // b. RefCountSubscriber's connection Subscription reference is identical\n // to the shared connection Subscription\n ///\n const { connection } = this;\n const sharedConnection = ( connectable)._connection;\n this.connection = null;\n\n if (sharedConnection && (!connection || sharedConnection === connection)) {\n sharedConnection.unsubscribe();\n }\n }\n}\n","import { Subject, SubjectSubscriber } from '../Subject';\nimport { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { TeardownLogic } from '../types';\nimport { refCount as higherOrderRefCount } from '../operators/refCount';\n\n/**\n * @class ConnectableObservable\n */\nexport class ConnectableObservable extends Observable {\n\n protected _subject: Subject;\n protected _refCount: number = 0;\n protected _connection: Subscription;\n /** @internal */\n _isComplete = false;\n\n constructor(public source: Observable,\n protected subjectFactory: () => Subject) {\n super();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber) {\n return this.getSubject().subscribe(subscriber);\n }\n\n protected getSubject(): Subject {\n const subject = this._subject;\n if (!subject || subject.isStopped) {\n this._subject = this.subjectFactory();\n }\n return this._subject;\n }\n\n connect(): Subscription {\n let connection = this._connection;\n if (!connection) {\n this._isComplete = false;\n connection = this._connection = new Subscription();\n connection.add(this.source\n .subscribe(new ConnectableSubscriber(this.getSubject(), this)));\n if (connection.closed) {\n this._connection = null;\n connection = Subscription.EMPTY;\n }\n }\n return connection;\n }\n\n refCount(): Observable {\n return higherOrderRefCount()(this) as Observable;\n }\n}\n\nexport const connectableObservableDescriptor: PropertyDescriptorMap = (() => {\n const connectableProto = ConnectableObservable.prototype;\n return {\n operator: { value: null as null },\n _refCount: { value: 0, writable: true },\n _subject: { value: null as null, writable: true },\n _connection: { value: null as null, writable: true },\n _subscribe: { value: connectableProto._subscribe },\n _isComplete: { value: connectableProto._isComplete, writable: true },\n getSubject: { value: connectableProto.getSubject },\n connect: { value: connectableProto.connect },\n refCount: { value: connectableProto.refCount }\n };\n})();\n\nclass ConnectableSubscriber extends SubjectSubscriber {\n constructor(destination: Subject,\n private connectable: ConnectableObservable) {\n super(destination);\n }\n protected _error(err: any): void {\n this._unsubscribe();\n super._error(err);\n }\n protected _complete(): void {\n this.connectable._isComplete = true;\n this._unsubscribe();\n super._complete();\n }\n protected _unsubscribe() {\n const connectable = this.connectable;\n if (connectable) {\n this.connectable = null;\n const connection = connectable._connection;\n connectable._refCount = 0;\n connectable._subject = null;\n connectable._connection = null;\n if (connection) {\n connection.unsubscribe();\n }\n }\n }\n}\n\nclass RefCountOperator implements Operator {\n constructor(private connectable: ConnectableObservable) {\n }\n call(subscriber: Subscriber, source: any): TeardownLogic {\n\n const { connectable } = this;\n ( connectable)._refCount++;\n\n const refCounter = new RefCountSubscriber(subscriber, connectable);\n const subscription = source.subscribe(refCounter);\n\n if (!refCounter.closed) {\n ( refCounter).connection = connectable.connect();\n }\n\n return subscription;\n }\n}\n\nclass RefCountSubscriber extends Subscriber {\n\n private connection: Subscription;\n\n constructor(destination: Subscriber,\n private connectable: ConnectableObservable) {\n super(destination);\n }\n\n protected _unsubscribe() {\n\n const { connectable } = this;\n if (!connectable) {\n this.connection = null;\n return;\n }\n\n this.connectable = null;\n const refCount = ( connectable)._refCount;\n if (refCount <= 0) {\n this.connection = null;\n return;\n }\n\n ( connectable)._refCount = refCount - 1;\n if (refCount > 1) {\n this.connection = null;\n return;\n }\n\n ///\n // Compare the local RefCountSubscriber's connection Subscription to the\n // connection Subscription on the shared ConnectableObservable. In cases\n // where the ConnectableObservable source synchronously emits values, and\n // the RefCountSubscriber's downstream Observers synchronously unsubscribe,\n // execution continues to here before the RefCountOperator has a chance to\n // supply the RefCountSubscriber with the shared connection Subscription.\n // For example:\n // ```\n // range(0, 10).pipe(\n // publish(),\n // refCount(),\n // take(5),\n // ).subscribe();\n // ```\n // In order to account for this case, RefCountSubscriber should only dispose\n // the ConnectableObservable's shared connection Subscription if the\n // connection Subscription exists, *and* either:\n // a. RefCountSubscriber doesn't have a reference to the shared connection\n // Subscription yet, or,\n // b. RefCountSubscriber's connection Subscription reference is identical\n // to the shared connection Subscription\n ///\n const { connection } = this;\n const sharedConnection = ( connectable)._connection;\n this.connection = null;\n\n if (sharedConnection && (!connection || sharedConnection === connection)) {\n sharedConnection.unsubscribe();\n }\n }\n}\n","import { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subject } from '../Subject';\nimport { OperatorFunction } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function groupBy(keySelector: (value: T) => K): OperatorFunction>;\nexport function groupBy(keySelector: (value: T) => K, elementSelector: void, durationSelector: (grouped: GroupedObservable) => Observable): OperatorFunction>;\nexport function groupBy(keySelector: (value: T) => K, elementSelector?: (value: T) => R, durationSelector?: (grouped: GroupedObservable) => Observable): OperatorFunction>;\nexport function groupBy(keySelector: (value: T) => K, elementSelector?: (value: T) => R, durationSelector?: (grouped: GroupedObservable) => Observable, subjectSelector?: () => Subject): OperatorFunction>;\n/* tslint:enable:max-line-length */\n\n/**\n * Groups the items emitted by an Observable according to a specified criterion,\n * and emits these grouped items as `GroupedObservables`, one\n * {@link GroupedObservable} per group.\n *\n * ![](groupBy.png)\n *\n * When the Observable emits an item, a key is computed for this item with the keySelector function.\n *\n * If a {@link GroupedObservable} for this key exists, this {@link GroupedObservable} emits. Elsewhere, a new\n * {@link GroupedObservable} for this key is created and emits.\n *\n * A {@link GroupedObservable} represents values belonging to the same group represented by a common key. The common\n * key is available as the key field of a {@link GroupedObservable} instance.\n *\n * The elements emitted by {@link GroupedObservable}s are by default the items emitted by the Observable, or elements\n * returned by the elementSelector function.\n *\n * ## Examples\n *\n * ### Group objects by id and return as array\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { mergeMap, groupBy, reduce } from 'rxjs/operators';\n *\n * of(\n * {id: 1, name: 'JavaScript'},\n * {id: 2, name: 'Parcel'},\n * {id: 2, name: 'webpack'},\n * {id: 1, name: 'TypeScript'},\n * {id: 3, name: 'TSLint'}\n * ).pipe(\n * groupBy(p => p.id),\n * mergeMap((group$) => group$.pipe(reduce((acc, cur) => [...acc, cur], []))),\n * )\n * .subscribe(p => console.log(p));\n *\n * // displays:\n * // [ { id: 1, name: 'JavaScript'},\n * // { id: 1, name: 'TypeScript'} ]\n * //\n * // [ { id: 2, name: 'Parcel'},\n * // { id: 2, name: 'webpack'} ]\n * //\n * // [ { id: 3, name: 'TSLint'} ]\n * ```\n *\n * ### Pivot data on the id field\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { groupBy, map, mergeMap, reduce } from 'rxjs/operators';\n *\n * of(\n * { id: 1, name: 'JavaScript' },\n * { id: 2, name: 'Parcel' },\n * { id: 2, name: 'webpack' },\n * { id: 1, name: 'TypeScript' },\n * { id: 3, name: 'TSLint' }\n * )\n * .pipe(\n * groupBy(p => p.id, p => p.name),\n * mergeMap(group$ =>\n * group$.pipe(reduce((acc, cur) => [...acc, cur], [`${group$.key}`]))\n * ),\n * map(arr => ({ id: parseInt(arr[0], 10), values: arr.slice(1) }))\n * )\n * .subscribe(p => console.log(p));\n *\n * // displays:\n * // { id: 1, values: [ 'JavaScript', 'TypeScript' ] }\n * // { id: 2, values: [ 'Parcel', 'webpack' ] }\n * // { id: 3, values: [ 'TSLint' ] }\n * ```\n *\n * @param {function(value: T): K} keySelector A function that extracts the key\n * for each item.\n * @param {function(value: T): R} [elementSelector] A function that extracts the\n * return element for each item.\n * @param {function(grouped: GroupedObservable): Observable} [durationSelector]\n * A function that returns an Observable to determine how long each group should\n * exist.\n * @return {Observable>} An Observable that emits\n * GroupedObservables, each of which corresponds to a unique key value and each\n * of which emits those items from the source Observable that share that key\n * value.\n * @method groupBy\n * @owner Observable\n */\nexport function groupBy(keySelector: (value: T) => K,\n elementSelector?: ((value: T) => R) | void,\n durationSelector?: (grouped: GroupedObservable) => Observable,\n subjectSelector?: () => Subject): OperatorFunction> {\n return (source: Observable) =>\n source.lift(new GroupByOperator(keySelector, elementSelector, durationSelector, subjectSelector));\n}\n\nexport interface RefCountSubscription {\n count: number;\n unsubscribe: () => void;\n closed: boolean;\n attemptedToUnsubscribe: boolean;\n}\n\nclass GroupByOperator implements Operator> {\n constructor(private keySelector: (value: T) => K,\n private elementSelector?: ((value: T) => R) | void,\n private durationSelector?: (grouped: GroupedObservable) => Observable,\n private subjectSelector?: () => Subject) {\n }\n\n call(subscriber: Subscriber>, source: any): any {\n return source.subscribe(new GroupBySubscriber(\n subscriber, this.keySelector, this.elementSelector, this.durationSelector, this.subjectSelector\n ));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass GroupBySubscriber extends Subscriber implements RefCountSubscription {\n private groups: Map> = null;\n public attemptedToUnsubscribe: boolean = false;\n public count: number = 0;\n\n constructor(destination: Subscriber>,\n private keySelector: (value: T) => K,\n private elementSelector?: ((value: T) => R) | void,\n private durationSelector?: (grouped: GroupedObservable) => Observable,\n private subjectSelector?: () => Subject) {\n super(destination);\n }\n\n protected _next(value: T): void {\n let key: K;\n try {\n key = this.keySelector(value);\n } catch (err) {\n this.error(err);\n return;\n }\n\n this._group(value, key);\n }\n\n private _group(value: T, key: K) {\n let groups = this.groups;\n\n if (!groups) {\n groups = this.groups = new Map>();\n }\n\n let group = groups.get(key);\n\n let element: R;\n if (this.elementSelector) {\n try {\n element = this.elementSelector(value);\n } catch (err) {\n this.error(err);\n }\n } else {\n element = value;\n }\n\n if (!group) {\n group = (this.subjectSelector ? this.subjectSelector() : new Subject()) as Subject;\n groups.set(key, group);\n const groupedObservable = new GroupedObservable(key, group, this);\n this.destination.next(groupedObservable);\n if (this.durationSelector) {\n let duration: any;\n try {\n duration = this.durationSelector(new GroupedObservable(key, >group));\n } catch (err) {\n this.error(err);\n return;\n }\n this.add(duration.subscribe(new GroupDurationSubscriber(key, group, this)));\n }\n }\n\n if (!group.closed) {\n group.next(element);\n }\n }\n\n protected _error(err: any): void {\n const groups = this.groups;\n if (groups) {\n groups.forEach((group, key) => {\n group.error(err);\n });\n\n groups.clear();\n }\n this.destination.error(err);\n }\n\n protected _complete(): void {\n const groups = this.groups;\n if (groups) {\n groups.forEach((group, key) => {\n group.complete();\n });\n\n groups.clear();\n }\n this.destination.complete();\n }\n\n removeGroup(key: K): void {\n this.groups.delete(key);\n }\n\n unsubscribe() {\n if (!this.closed) {\n this.attemptedToUnsubscribe = true;\n if (this.count === 0) {\n super.unsubscribe();\n }\n }\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass GroupDurationSubscriber extends Subscriber {\n constructor(private key: K,\n private group: Subject,\n private parent: GroupBySubscriber) {\n super(group);\n }\n\n protected _next(value: T): void {\n this.complete();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n const { parent, key } = this;\n this.key = this.parent = null;\n if (parent) {\n parent.removeGroup(key);\n }\n }\n}\n\n/**\n * An Observable representing values belonging to the same group represented by\n * a common key. The values emitted by a GroupedObservable come from the source\n * Observable. The common key is available as the field `key` on a\n * GroupedObservable instance.\n *\n * @class GroupedObservable\n */\nexport class GroupedObservable extends Observable {\n /** @deprecated Do not construct this type. Internal use only */\n constructor(public key: K,\n private groupSubject: Subject,\n private refCountSubscription?: RefCountSubscription) {\n super();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber) {\n const subscription = new Subscription();\n const { refCountSubscription, groupSubject } = this;\n if (refCountSubscription && !refCountSubscription.closed) {\n subscription.add(new InnerRefCountSubscription(refCountSubscription));\n }\n subscription.add(groupSubject.subscribe(subscriber));\n return subscription;\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass InnerRefCountSubscription extends Subscription {\n constructor(private parent: RefCountSubscription) {\n super();\n parent.count++;\n }\n\n unsubscribe() {\n const parent = this.parent;\n if (!parent.closed && !this.closed) {\n super.unsubscribe();\n parent.count -= 1;\n if (parent.count === 0 && parent.attemptedToUnsubscribe) {\n parent.unsubscribe();\n }\n }\n }\n}\n","import { Action } from './Action';\nimport { SchedulerAction } from '../types';\nimport { Subscription } from '../Subscription';\nimport { AsyncScheduler } from './AsyncScheduler';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class AsyncAction extends Action {\n\n public id: any;\n public state: T;\n public delay: number;\n protected pending: boolean = false;\n\n constructor(protected scheduler: AsyncScheduler,\n protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n public schedule(state?: T, delay: number = 0): Subscription {\n\n if (this.closed) {\n return this;\n }\n\n // Always replace the current state with the new state.\n this.state = state;\n\n const id = this.id;\n const scheduler = this.scheduler;\n\n //\n // Important implementation note:\n //\n // Actions only execute once by default, unless rescheduled from within the\n // scheduled callback. This allows us to implement single and repeat\n // actions via the same code path, without adding API surface area, as well\n // as mimic traditional recursion but across asynchronous boundaries.\n //\n // However, JS runtimes and timers distinguish between intervals achieved by\n // serial `setTimeout` calls vs. a single `setInterval` call. An interval of\n // serial `setTimeout` calls can be individually delayed, which delays\n // scheduling the next `setTimeout`, and so on. `setInterval` attempts to\n // guarantee the interval callback will be invoked more precisely to the\n // interval period, regardless of load.\n //\n // Therefore, we use `setInterval` to schedule single and repeat actions.\n // If the action reschedules itself with the same delay, the interval is not\n // canceled. If the action doesn't reschedule, or reschedules with a\n // different delay, the interval will be canceled after scheduled callback\n // execution.\n //\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n\n // Set the pending flag indicating that this action has been scheduled, or\n // has recursively rescheduled itself.\n this.pending = true;\n\n this.delay = delay;\n // If this action has already an async Id, don't request a new one.\n this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n\n return this;\n }\n\n protected requestAsyncId(scheduler: AsyncScheduler, id?: any, delay: number = 0): any {\n return setInterval(scheduler.flush.bind(scheduler, this), delay);\n }\n\n protected recycleAsyncId(scheduler: AsyncScheduler, id: any, delay: number = 0): any {\n // If this action is rescheduled with the same delay time, don't clear the interval id.\n if (delay !== null && this.delay === delay && this.pending === false) {\n return id;\n }\n // Otherwise, if the action's delay time is different from the current delay,\n // or the action has been rescheduled before it's executed, clear the interval id\n clearInterval(id);\n return undefined;\n }\n\n /**\n * Immediately executes this action and the `work` it contains.\n * @return {any}\n */\n public execute(state: T, delay: number): any {\n\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n\n this.pending = false;\n const error = this._execute(state, delay);\n if (error) {\n return error;\n } else if (this.pending === false && this.id != null) {\n // Dequeue if the action didn't reschedule itself. Don't call\n // unsubscribe(), because the action could reschedule later.\n // For example:\n // ```\n // scheduler.schedule(function doWork(counter) {\n // /* ... I'm a busy worker bee ... */\n // var originalAction = this;\n // /* wait 100ms before rescheduling the action */\n // setTimeout(function () {\n // originalAction.schedule(counter + 1);\n // }, 100);\n // }, 1000);\n // ```\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n }\n\n protected _execute(state: T, delay: number): any {\n let errored: boolean = false;\n let errorValue: any = undefined;\n try {\n this.work(state);\n } catch (e) {\n errored = true;\n errorValue = !!e && e || new Error(e);\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n\n const id = this.id;\n const scheduler = this.scheduler;\n const actions = scheduler.actions;\n const index = actions.indexOf(this);\n\n this.work = null;\n this.state = null;\n this.pending = false;\n this.scheduler = null;\n\n if (index !== -1) {\n actions.splice(index, 1);\n }\n\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n\n this.delay = null;\n }\n}\n","import { Scheduler } from '../Scheduler';\nimport { Subscription } from '../Subscription';\nimport { SchedulerAction } from '../types';\n\n/**\n * A unit of work to be executed in a `scheduler`. An action is typically\n * created from within a {@link SchedulerLike} and an RxJS user does not need to concern\n * themselves about creating and manipulating an Action.\n *\n * ```ts\n * class Action extends Subscription {\n * new (scheduler: Scheduler, work: (state?: T) => void);\n * schedule(state?: T, delay: number = 0): Subscription;\n * }\n * ```\n *\n * @class Action\n */\nexport class Action extends Subscription {\n constructor(scheduler: Scheduler, work: (this: SchedulerAction, state?: T) => void) {\n super();\n }\n /**\n * Schedules this action on its parent {@link SchedulerLike} for execution. May be passed\n * some context object, `state`. May happen at some point in the future,\n * according to the `delay` parameter, if specified.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler.\n * @return {void}\n */\n public schedule(state?: T, delay: number = 0): Subscription {\n return this;\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { Subscription } from '../Subscription';\nimport { QueueScheduler } from './QueueScheduler';\nimport { SchedulerAction } from '../types';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class QueueAction extends AsyncAction {\n\n constructor(protected scheduler: QueueScheduler,\n protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n public schedule(state?: T, delay: number = 0): Subscription {\n if (delay > 0) {\n return super.schedule(state, delay);\n }\n this.delay = delay;\n this.state = state;\n this.scheduler.flush(this);\n return this;\n }\n\n public execute(state: T, delay: number): any {\n return (delay > 0 || this.closed) ?\n super.execute(state, delay) :\n this._execute(state, delay) ;\n }\n\n protected requestAsyncId(scheduler: QueueScheduler, id?: any, delay: number = 0): any {\n // If delay exists and is greater than 0, or if the delay is null (the\n // action wasn't rescheduled) but was originally scheduled as an async\n // action, then recycle as an async action.\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n // Otherwise flush the scheduler starting with this action.\n return scheduler.flush(this);\n }\n}\n","import { Action } from './scheduler/Action';\nimport { Subscription } from './Subscription';\nimport { SchedulerLike, SchedulerAction } from './types';\n\n/**\n * An execution context and a data structure to order tasks and schedule their\n * execution. Provides a notion of (potentially virtual) time, through the\n * `now()` getter method.\n *\n * Each unit of work in a Scheduler is called an `Action`.\n *\n * ```ts\n * class Scheduler {\n * now(): number;\n * schedule(work, delay?, state?): Subscription;\n * }\n * ```\n *\n * @class Scheduler\n * @deprecated Scheduler is an internal implementation detail of RxJS, and\n * should not be used directly. Rather, create your own class and implement\n * {@link SchedulerLike}\n */\nexport class Scheduler implements SchedulerLike {\n\n /**\n * Note: the extra arrow function wrapper is to make testing by overriding\n * Date.now easier.\n * @nocollapse\n */\n public static now: () => number = () => Date.now();\n\n constructor(private SchedulerAction: typeof Action,\n now: () => number = Scheduler.now) {\n this.now = now;\n }\n\n /**\n * A getter method that returns a number representing the current time\n * (at the time this function was called) according to the scheduler's own\n * internal clock.\n * @return {number} A number that represents the current time. May or may not\n * have a relation to wall-clock time. May or may not refer to a time unit\n * (e.g. milliseconds).\n */\n public now: () => number;\n\n /**\n * Schedules a function, `work`, for execution. May happen at some point in\n * the future, according to the `delay` parameter, if specified. May be passed\n * some context object, `state`, which will be passed to the `work` function.\n *\n * The given arguments will be processed an stored as an Action object in a\n * queue of actions.\n *\n * @param {function(state: ?T): ?Subscription} work A function representing a\n * task, or some unit of work to be executed by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler itself.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @return {Subscription} A subscription in order to be able to unsubscribe\n * the scheduled work.\n */\n public schedule(work: (this: SchedulerAction, state?: T) => void, delay: number = 0, state?: T): Subscription {\n return new this.SchedulerAction(this, work).schedule(state, delay);\n }\n}\n","import { Scheduler } from '../Scheduler';\nimport { Action } from './Action';\nimport { AsyncAction } from './AsyncAction';\nimport { SchedulerAction } from '../types';\nimport { Subscription } from '../Subscription';\n\nexport class AsyncScheduler extends Scheduler {\n public static delegate?: Scheduler;\n public actions: Array> = [];\n /**\n * A flag to indicate whether the Scheduler is currently executing a batch of\n * queued actions.\n * @type {boolean}\n * @deprecated internal use only\n */\n public active: boolean = false;\n /**\n * An internal ID used to track the latest asynchronous task such as those\n * coming from `setTimeout`, `setInterval`, `requestAnimationFrame`, and\n * others.\n * @type {any}\n * @deprecated internal use only\n */\n public scheduled: any = undefined;\n\n constructor(SchedulerAction: typeof Action,\n now: () => number = Scheduler.now) {\n super(SchedulerAction, () => {\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {\n return AsyncScheduler.delegate.now();\n } else {\n return now();\n }\n });\n }\n\n public schedule(work: (this: SchedulerAction, state?: T) => void, delay: number = 0, state?: T): Subscription {\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {\n return AsyncScheduler.delegate.schedule(work, delay, state);\n } else {\n return super.schedule(work, delay, state);\n }\n }\n\n public flush(action: AsyncAction): void {\n\n const {actions} = this;\n\n if (this.active) {\n actions.push(action);\n return;\n }\n\n let error: any;\n this.active = true;\n\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (action = actions.shift()); // exhaust the scheduler queue\n\n this.active = false;\n\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { QueueAction } from './QueueAction';\nimport { QueueScheduler } from './QueueScheduler';\n\n/**\n *\n * Queue Scheduler\n *\n * Put every next task on a queue, instead of executing it immediately\n *\n * `queue` scheduler, when used with delay, behaves the same as {@link asyncScheduler} scheduler.\n *\n * When used without delay, it schedules given task synchronously - executes it right when\n * it is scheduled. However when called recursively, that is when inside the scheduled task,\n * another task is scheduled with queue scheduler, instead of executing immediately as well,\n * that task will be put on a queue and wait for current one to finish.\n *\n * This means that when you execute task with `queue` scheduler, you are sure it will end\n * before any other task scheduled with that scheduler will start.\n *\n * ## Examples\n * Schedule recursively first, then do something\n * ```ts\n * import { queueScheduler } from 'rxjs';\n *\n * queueScheduler.schedule(() => {\n * queueScheduler.schedule(() => console.log('second')); // will not happen now, but will be put on a queue\n *\n * console.log('first');\n * });\n *\n * // Logs:\n * // \"first\"\n * // \"second\"\n * ```\n *\n * Reschedule itself recursively\n * ```ts\n * import { queueScheduler } from 'rxjs';\n *\n * queueScheduler.schedule(function(state) {\n * if (state !== 0) {\n * console.log('before', state);\n * this.schedule(state - 1); // `this` references currently executing Action,\n * // which we reschedule with new state\n * console.log('after', state);\n * }\n * }, 0, 3);\n *\n * // In scheduler that runs recursively, you would expect:\n * // \"before\", 3\n * // \"before\", 2\n * // \"before\", 1\n * // \"after\", 1\n * // \"after\", 2\n * // \"after\", 3\n *\n * // But with queue it logs:\n * // \"before\", 3\n * // \"after\", 3\n * // \"before\", 2\n * // \"after\", 2\n * // \"before\", 1\n * // \"after\", 1\n * ```\n */\nexport const queueScheduler = new QueueScheduler(QueueAction);\n\n/**\n * @deprecated renamed. Use {@link queueScheduler}\n */\nexport const queue = queueScheduler;\n","import { AsyncScheduler } from './AsyncScheduler';\n\nexport class QueueScheduler extends AsyncScheduler {\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\n\n/**\n * The same Observable instance returned by any call to {@link empty} without a\n * `scheduler`. It is preferrable to use this over `empty()`.\n */\nexport const EMPTY = new Observable(subscriber => subscriber.complete());\n\n/**\n * Creates an Observable that emits no items to the Observer and immediately\n * emits a complete notification.\n *\n * Just emits 'complete', and nothing else.\n * \n *\n * ![](empty.png)\n *\n * This static operator is useful for creating a simple Observable that only\n * emits the complete notification. It can be used for composing with other\n * Observables, such as in a {@link mergeMap}.\n *\n * ## Examples\n * ### Emit the number 7, then complete\n * ```ts\n * import { empty } from 'rxjs';\n * import { startWith } from 'rxjs/operators';\n *\n * const result = empty().pipe(startWith(7));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * ### Map and flatten only odd numbers to the sequence 'a', 'b', 'c'\n * ```ts\n * import { empty, interval, of } from 'rxjs';\n * import { mergeMap } from 'rxjs/operators';\n *\n * const interval$ = interval(1000);\n * const result = interval$.pipe(\n * mergeMap(x => x % 2 === 1 ? of('a', 'b', 'c') : empty()),\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following to the console:\n * // x is equal to the count on the interval eg(0,1,2,3,...)\n * // x will occur every 1000ms\n * // if x % 2 is equal to 1 print abc\n * // if x % 2 is not equal to 1 nothing will be output\n * ```\n *\n * @see {@link Observable}\n * @see {@link never}\n * @see {@link of}\n * @see {@link throwError}\n *\n * @param scheduler A {@link SchedulerLike} to use for scheduling\n * the emission of the complete notification.\n * @return An \"empty\" Observable: emits only the complete\n * notification.\n * @deprecated Deprecated in favor of using {@link EMPTY} constant, or {@link scheduled} (e.g. `scheduled([], scheduler)`)\n */\nexport function empty(scheduler?: SchedulerLike) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\n\nfunction emptyScheduled(scheduler: SchedulerLike) {\n return new Observable(subscriber => scheduler.schedule(() => subscriber.complete()));\n}\n","import { SchedulerLike } from '../types';\n\nexport function isScheduler(value: any): value is SchedulerLike {\n return value && typeof (value).schedule === 'function';\n}\n","import { Subscriber } from '../Subscriber';\n\n/**\n * Subscribes to an ArrayLike with a subscriber\n * @param array The array or array-like to subscribe to\n */\nexport const subscribeToArray = (array: ArrayLike) => (subscriber: Subscriber) => {\n for (let i = 0, len = array.length; i < len && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n};\n","import { PartialObserver } from './types';\nimport { Observable } from './Observable';\nimport { empty } from './observable/empty';\nimport { of } from './observable/of';\nimport { throwError } from './observable/throwError';\nimport { deprecate } from 'util';\n\n// TODO: When this enum is removed, replace it with a type alias. See #4556.\n/**\n * @deprecated NotificationKind is deprecated as const enums are not compatible with isolated modules. Use a string literal instead.\n */\nexport enum NotificationKind {\n NEXT = 'N',\n ERROR = 'E',\n COMPLETE = 'C',\n}\n\n/**\n * Represents a push-based event or value that an {@link Observable} can emit.\n * This class is particularly useful for operators that manage notifications,\n * like {@link materialize}, {@link dematerialize}, {@link observeOn}, and\n * others. Besides wrapping the actual delivered value, it also annotates it\n * with metadata of, for instance, what type of push message it is (`next`,\n * `error`, or `complete`).\n *\n * @see {@link materialize}\n * @see {@link dematerialize}\n * @see {@link observeOn}\n *\n * @class Notification\n */\nexport class Notification {\n hasValue: boolean;\n\n constructor(public kind: 'N' | 'E' | 'C', public value?: T, public error?: any) {\n this.hasValue = kind === 'N';\n }\n\n /**\n * Delivers to the given `observer` the value wrapped by this Notification.\n * @param {Observer} observer\n * @return\n */\n observe(observer: PartialObserver): any {\n switch (this.kind) {\n case 'N':\n return observer.next && observer.next(this.value);\n case 'E':\n return observer.error && observer.error(this.error);\n case 'C':\n return observer.complete && observer.complete();\n }\n }\n\n /**\n * Given some {@link Observer} callbacks, deliver the value represented by the\n * current Notification to the correctly corresponding callback.\n * @param {function(value: T): void} next An Observer `next` callback.\n * @param {function(err: any): void} [error] An Observer `error` callback.\n * @param {function(): void} [complete] An Observer `complete` callback.\n * @return {any}\n */\n do(next: (value: T) => void, error?: (err: any) => void, complete?: () => void): any {\n const kind = this.kind;\n switch (kind) {\n case 'N':\n return next && next(this.value);\n case 'E':\n return error && error(this.error);\n case 'C':\n return complete && complete();\n }\n }\n\n /**\n * Takes an Observer or its individual callback functions, and calls `observe`\n * or `do` methods accordingly.\n * @param {Observer|function(value: T): void} nextOrObserver An Observer or\n * the `next` callback.\n * @param {function(err: any): void} [error] An Observer `error` callback.\n * @param {function(): void} [complete] An Observer `complete` callback.\n * @return {any}\n */\n accept(nextOrObserver: PartialObserver | ((value: T) => void), error?: (err: any) => void, complete?: () => void) {\n if (nextOrObserver && typeof (>nextOrObserver).next === 'function') {\n return this.observe(>nextOrObserver);\n } else {\n return this.do(<(value: T) => void>nextOrObserver, error, complete);\n }\n }\n\n /**\n * Returns a simple Observable that just delivers the notification represented\n * by this Notification instance.\n * @return {any}\n */\n toObservable(): Observable {\n const kind = this.kind;\n switch (kind) {\n case 'N':\n return of(this.value);\n case 'E':\n return throwError(this.error);\n case 'C':\n return empty();\n }\n throw new Error('unexpected notification kind value');\n }\n\n private static completeNotification: Notification = new Notification('C');\n private static undefinedValueNotification: Notification = new Notification('N', undefined);\n\n /**\n * A shortcut to create a Notification instance of the type `next` from a\n * given value.\n * @param {T} value The `next` value.\n * @return {Notification} The \"next\" Notification representing the\n * argument.\n * @nocollapse\n */\n static createNext(value: T): Notification {\n if (typeof value !== 'undefined') {\n return new Notification('N', value);\n }\n return Notification.undefinedValueNotification;\n }\n\n /**\n * A shortcut to create a Notification instance of the type `error` from a\n * given error.\n * @param {any} [err] The `error` error.\n * @return {Notification} The \"error\" Notification representing the\n * argument.\n * @nocollapse\n */\n static createError(err?: any): Notification {\n return new Notification('E', undefined, err);\n }\n\n /**\n * A shortcut to create a Notification instance of the type `complete`.\n * @return {Notification} The valueless \"complete\" Notification.\n * @nocollapse\n */\n static createComplete(): Notification {\n return Notification.completeNotification;\n }\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { Subscription } from '../Subscription';\n\nexport function scheduleArray(input: ArrayLike, scheduler: SchedulerLike) {\n return new Observable(subscriber => {\n const sub = new Subscription();\n let i = 0;\n sub.add(scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n return;\n }\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n sub.add(this.schedule());\n }\n }));\n return sub;\n });\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { subscribeToArray } from '../util/subscribeToArray';\nimport { scheduleArray } from '../scheduled/scheduleArray';\n\nexport function fromArray(input: ArrayLike, scheduler?: SchedulerLike) {\n if (!scheduler) {\n return new Observable(subscribeToArray(input));\n } else {\n return scheduleArray(input, scheduler);\n }\n}\n","import { SchedulerLike } from '../types';\nimport { isScheduler } from '../util/isScheduler';\nimport { fromArray } from './fromArray';\nimport { Observable } from '../Observable';\nimport { scheduleArray } from '../scheduled/scheduleArray';\n\n/* tslint:disable:max-line-length */\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, d: T4, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7, scheduler: SchedulerLike):\n Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7, h: T8, scheduler: SchedulerLike):\n Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7, h: T8, i: T9, scheduler: SchedulerLike):\n Observable;\nexport function of(...args: (T | SchedulerLike)[]): Observable;\n\n// TODO(benlesh): Update the typings for this when we can switch to TS 3.x\nexport function of(a: T): Observable;\nexport function of(a: T, b: T2): Observable;\nexport function of(a: T, b: T2, c: T3): Observable;\nexport function of(a: T, b: T2, c: T3, d: T4): Observable;\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5): Observable;\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6): Observable;\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7):\n Observable;\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7, h: T8):\n Observable;\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7, h: T8, i: T9):\n Observable;\nexport function of(...args: T[]): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * Converts the arguments to an observable sequence.\n *\n * Each argument becomes a `next` notification.\n *\n * ![](of.png)\n *\n * Unlike {@link from}, it does not do any flattening and emits each argument in whole\n * as a separate `next` notification.\n *\n * ## Examples\n *\n * Emit the values `10, 20, 30`\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * of(10, 20, 30)\n * .subscribe(\n * next => console.log('next:', next),\n * err => console.log('error:', err),\n * () => console.log('the end'),\n * );\n * // result:\n * // 'next: 10'\n * // 'next: 20'\n * // 'next: 30'\n *\n * ```\n *\n * Emit the array `[1,2,3]`\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * of([1,2,3])\n * .subscribe(\n * next => console.log('next:', next),\n * err => console.log('error:', err),\n * () => console.log('the end'),\n * );\n * // result:\n * // 'next: [1,2,3]'\n * ```\n *\n * @see {@link from}\n * @see {@link range}\n *\n * @param {...T} values A comma separated list of arguments you want to be emitted\n * @return {Observable} An Observable that emits the arguments\n * described above and then completes.\n * @method of\n * @owner Observable\n */\n\nexport function of(...args: Array): Observable {\n let scheduler = args[args.length - 1] as SchedulerLike;\n if (isScheduler(scheduler)) {\n args.pop();\n return scheduleArray(args as T[], scheduler);\n } else {\n return fromArray(args as T[]);\n }\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { Subscriber } from '../Subscriber';\n\n/**\n * Creates an Observable that emits no items to the Observer and immediately\n * emits an error notification.\n *\n * Just emits 'error', and nothing else.\n * \n *\n * ![](throw.png)\n *\n * This static operator is useful for creating a simple Observable that only\n * emits the error notification. It can be used for composing with other\n * Observables, such as in a {@link mergeMap}.\n *\n * ## Examples\n * ### Emit the number 7, then emit an error\n * ```ts\n * import { throwError, concat, of } from 'rxjs';\n *\n * const result = concat(of(7), throwError(new Error('oops!')));\n * result.subscribe(x => console.log(x), e => console.error(e));\n *\n * // Logs:\n * // 7\n * // Error: oops!\n * ```\n *\n * ---\n *\n * ### Map and flatten numbers to the sequence 'a', 'b', 'c', but throw an error for 2\n * ```ts\n * import { throwError, interval, of } from 'rxjs';\n * import { mergeMap } from 'rxjs/operators';\n *\n * interval(1000).pipe(\n * mergeMap(x => x === 2\n * ? throwError('Twos are bad')\n * : of('a', 'b', 'c')\n * ),\n * ).subscribe(x => console.log(x), e => console.error(e));\n *\n * // Logs:\n * // a\n * // b\n * // c\n * // a\n * // b\n * // c\n * // Twos are bad\n * ```\n *\n * @see {@link Observable}\n * @see {@link empty}\n * @see {@link never}\n * @see {@link of}\n *\n * @param {any} error The particular Error to pass to the error notification.\n * @param {SchedulerLike} [scheduler] A {@link SchedulerLike} to use for scheduling\n * the emission of the error notification.\n * @return {Observable} An error Observable: emits only the error notification\n * using the given error argument.\n * @static true\n * @name throwError\n * @owner Observable\n */\nexport function throwError(error: any, scheduler?: SchedulerLike): Observable {\n if (!scheduler) {\n return new Observable(subscriber => subscriber.error(error));\n } else {\n return new Observable(subscriber => scheduler.schedule(dispatch, 0, { error, subscriber }));\n }\n}\n\ninterface DispatchArg {\n error: any;\n subscriber: Subscriber;\n}\n\nfunction dispatch({ error, subscriber }: DispatchArg) {\n subscriber.error(error);\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { Notification } from '../Notification';\nimport { MonoTypeOperatorFunction, PartialObserver, SchedulerAction, SchedulerLike, TeardownLogic } from '../types';\n\n/**\n *\n * Re-emits all notifications from source Observable with specified scheduler.\n *\n * Ensure a specific scheduler is used, from outside of an Observable.\n *\n * `observeOn` is an operator that accepts a scheduler as a first parameter, which will be used to reschedule\n * notifications emitted by the source Observable. It might be useful, if you do not have control over\n * internal scheduler of a given Observable, but want to control when its values are emitted nevertheless.\n *\n * Returned Observable emits the same notifications (nexted values, complete and error events) as the source Observable,\n * but rescheduled with provided scheduler. Note that this doesn't mean that source Observables internal\n * scheduler will be replaced in any way. Original scheduler still will be used, but when the source Observable emits\n * notification, it will be immediately scheduled again - this time with scheduler passed to `observeOn`.\n * An anti-pattern would be calling `observeOn` on Observable that emits lots of values synchronously, to split\n * that emissions into asynchronous chunks. For this to happen, scheduler would have to be passed into the source\n * Observable directly (usually into the operator that creates it). `observeOn` simply delays notifications a\n * little bit more, to ensure that they are emitted at expected moments.\n *\n * As a matter of fact, `observeOn` accepts second parameter, which specifies in milliseconds with what delay notifications\n * will be emitted. The main difference between {@link delay} operator and `observeOn` is that `observeOn`\n * will delay all notifications - including error notifications - while `delay` will pass through error\n * from source Observable immediately when it is emitted. In general it is highly recommended to use `delay` operator\n * for any kind of delaying of values in the stream, while using `observeOn` to specify which scheduler should be used\n * for notification emissions in general.\n *\n * ## Example\n * Ensure values in subscribe are called just before browser repaint.\n * ```ts\n * import { interval } from 'rxjs';\n * import { observeOn } from 'rxjs/operators';\n *\n * const intervals = interval(10); // Intervals are scheduled\n * // with async scheduler by default...\n * intervals.pipe(\n * observeOn(animationFrameScheduler), // ...but we will observe on animationFrame\n * ) // scheduler to ensure smooth animation.\n * .subscribe(val => {\n * someDiv.style.height = val + 'px';\n * });\n * ```\n *\n * @see {@link delay}\n *\n * @param {SchedulerLike} scheduler Scheduler that will be used to reschedule notifications from source Observable.\n * @param {number} [delay] Number of milliseconds that states with what delay every notification should be rescheduled.\n * @return {Observable} Observable that emits the same notifications as the source Observable,\n * but with provided scheduler.\n *\n * @method observeOn\n * @owner Observable\n */\nexport function observeOn(scheduler: SchedulerLike, delay: number = 0): MonoTypeOperatorFunction {\n return function observeOnOperatorFunction(source: Observable): Observable {\n return source.lift(new ObserveOnOperator(scheduler, delay));\n };\n}\n\nexport class ObserveOnOperator implements Operator {\n constructor(private scheduler: SchedulerLike, private delay: number = 0) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new ObserveOnSubscriber(subscriber, this.scheduler, this.delay));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class ObserveOnSubscriber extends Subscriber {\n /** @nocollapse */\n static dispatch(this: SchedulerAction, arg: ObserveOnMessage) {\n const { notification, destination } = arg;\n notification.observe(destination);\n this.unsubscribe();\n }\n\n constructor(destination: Subscriber,\n private scheduler: SchedulerLike,\n private delay: number = 0) {\n super(destination);\n }\n\n private scheduleMessage(notification: Notification): void {\n const destination = this.destination as Subscription;\n destination.add(this.scheduler.schedule(\n ObserveOnSubscriber.dispatch,\n this.delay,\n new ObserveOnMessage(notification, this.destination)\n ));\n }\n\n protected _next(value: T): void {\n this.scheduleMessage(Notification.createNext(value));\n }\n\n protected _error(err: any): void {\n this.scheduleMessage(Notification.createError(err));\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.scheduleMessage(Notification.createComplete());\n this.unsubscribe();\n }\n}\n\nexport class ObserveOnMessage {\n constructor(public notification: Notification,\n public destination: PartialObserver) {\n }\n}\n","import { Subject } from './Subject';\nimport { SchedulerLike } from './types';\nimport { queue } from './scheduler/queue';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { ObserveOnSubscriber } from './operators/observeOn';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\n/**\n * A variant of Subject that \"replays\" or emits old values to new subscribers.\n * It buffers a set number of values and will emit those values immediately to\n * any new subscribers in addition to emitting new values to existing subscribers.\n *\n * @class ReplaySubject\n */\nexport class ReplaySubject extends Subject {\n private _events: (ReplayEvent | T)[] = [];\n private _bufferSize: number;\n private _windowTime: number;\n private _infiniteTimeWindow: boolean = false;\n\n constructor(bufferSize: number = Number.POSITIVE_INFINITY,\n windowTime: number = Number.POSITIVE_INFINITY,\n private scheduler?: SchedulerLike) {\n super();\n this._bufferSize = bufferSize < 1 ? 1 : bufferSize;\n this._windowTime = windowTime < 1 ? 1 : windowTime;\n\n if (windowTime === Number.POSITIVE_INFINITY) {\n this._infiniteTimeWindow = true;\n this.next = this.nextInfiniteTimeWindow;\n } else {\n this.next = this.nextTimeWindow;\n }\n }\n\n private nextInfiniteTimeWindow(value: T): void {\n if (!this.isStopped) {\n const _events = this._events;\n _events.push(value);\n // Since this method is invoked in every next() call than the buffer\n // can overgrow the max size only by one item\n if (_events.length > this._bufferSize) {\n _events.shift();\n }\n }\n super.next(value);\n }\n\n private nextTimeWindow(value: T): void {\n if (!this.isStopped) {\n this._events.push(new ReplayEvent(this._getNow(), value));\n this._trimBufferThenGetEvents();\n }\n super.next(value);\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber): Subscription {\n // When `_infiniteTimeWindow === true` then the buffer is already trimmed\n const _infiniteTimeWindow = this._infiniteTimeWindow;\n const _events = _infiniteTimeWindow ? this._events : this._trimBufferThenGetEvents();\n const scheduler = this.scheduler;\n const len = _events.length;\n let subscription: Subscription;\n\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n } else if (this.isStopped || this.hasError) {\n subscription = Subscription.EMPTY;\n } else {\n this.observers.push(subscriber);\n subscription = new SubjectSubscription(this, subscriber);\n }\n\n if (scheduler) {\n subscriber.add(subscriber = new ObserveOnSubscriber(subscriber, scheduler));\n }\n\n if (_infiniteTimeWindow) {\n for (let i = 0; i < len && !subscriber.closed; i++) {\n subscriber.next(_events[i]);\n }\n } else {\n for (let i = 0; i < len && !subscriber.closed; i++) {\n subscriber.next((>_events[i]).value);\n }\n }\n\n if (this.hasError) {\n subscriber.error(this.thrownError);\n } else if (this.isStopped) {\n subscriber.complete();\n }\n\n return subscription;\n }\n\n _getNow(): number {\n return (this.scheduler || queue).now();\n }\n\n private _trimBufferThenGetEvents(): ReplayEvent[] {\n const now = this._getNow();\n const _bufferSize = this._bufferSize;\n const _windowTime = this._windowTime;\n const _events = []>this._events;\n\n const eventsCount = _events.length;\n let spliceCount = 0;\n\n // Trim events that fall out of the time window.\n // Start at the front of the list. Break early once\n // we encounter an event that falls within the window.\n while (spliceCount < eventsCount) {\n if ((now - _events[spliceCount].time) < _windowTime) {\n break;\n }\n spliceCount++;\n }\n\n if (eventsCount > _bufferSize) {\n spliceCount = Math.max(spliceCount, eventsCount - _bufferSize);\n }\n\n if (spliceCount > 0) {\n _events.splice(0, spliceCount);\n }\n\n return _events;\n }\n\n}\n\nclass ReplayEvent {\n constructor(public time: number, public value: T) {\n }\n}\n","import { Subject } from './Subject';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\n\n/**\n * A variant of Subject that only emits a value when it completes. It will emit\n * its latest value to all its observers on completion.\n *\n * @class AsyncSubject\n */\nexport class AsyncSubject extends Subject {\n private value: T = null;\n private hasNext: boolean = false;\n private hasCompleted: boolean = false;\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber): Subscription {\n if (this.hasError) {\n subscriber.error(this.thrownError);\n return Subscription.EMPTY;\n } else if (this.hasCompleted && this.hasNext) {\n subscriber.next(this.value);\n subscriber.complete();\n return Subscription.EMPTY;\n }\n return super._subscribe(subscriber);\n }\n\n next(value: T): void {\n if (!this.hasCompleted) {\n this.value = value;\n this.hasNext = true;\n }\n }\n\n error(error: any): void {\n if (!this.hasCompleted) {\n super.error(error);\n }\n }\n\n complete(): void {\n this.hasCompleted = true;\n if (this.hasNext) {\n super.next(this.value);\n }\n super.complete();\n }\n}\n","let nextHandle = 1;\nconst RESOLVED = (() => Promise.resolve())();\nconst activeHandles: { [key: number]: any } = {};\n\n/**\n * Finds the handle in the list of active handles, and removes it.\n * Returns `true` if found, `false` otherwise. Used both to clear\n * Immediate scheduled tasks, and to identify if a task should be scheduled.\n */\nfunction findAndClearHandle(handle: number): boolean {\n if (handle in activeHandles) {\n delete activeHandles[handle];\n return true;\n }\n return false;\n}\n\n/**\n * Helper functions to schedule and unschedule microtasks.\n */\nexport const Immediate = {\n setImmediate(cb: () => void): number {\n const handle = nextHandle++;\n activeHandles[handle] = true;\n RESOLVED.then(() => findAndClearHandle(handle) && cb());\n return handle;\n },\n\n clearImmediate(handle: number): void {\n findAndClearHandle(handle);\n },\n};\n\n/**\n * Used for internal testing purposes only. Do not export from library.\n */\nexport const TestTools = {\n pending() {\n return Object.keys(activeHandles).length;\n }\n};\n","import { Immediate } from '../util/Immediate';\nimport { AsyncAction } from './AsyncAction';\nimport { AsapScheduler } from './AsapScheduler';\nimport { SchedulerAction } from '../types';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class AsapAction extends AsyncAction {\n\n constructor(protected scheduler: AsapScheduler,\n protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n protected requestAsyncId(scheduler: AsapScheduler, id?: any, delay: number = 0): any {\n // If delay is greater than 0, request as an async action.\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n // Push the action to the end of the scheduler queue.\n scheduler.actions.push(this);\n // If a microtask has already been scheduled, don't schedule another\n // one. If a microtask hasn't been scheduled yet, schedule one now. Return\n // the current scheduled microtask id.\n return scheduler.scheduled || (scheduler.scheduled = Immediate.setImmediate(\n scheduler.flush.bind(scheduler, null)\n ));\n }\n protected recycleAsyncId(scheduler: AsapScheduler, id?: any, delay: number = 0): any {\n // If delay exists and is greater than 0, or if the delay is null (the\n // action wasn't rescheduled) but was originally scheduled as an async\n // action, then recycle as an async action.\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n // If the scheduler queue is empty, cancel the requested microtask and\n // set the scheduled flag to undefined so the next AsapAction will schedule\n // its own.\n if (scheduler.actions.length === 0) {\n Immediate.clearImmediate(id);\n scheduler.scheduled = undefined;\n }\n // Return undefined so the action knows to request a new async id if it's rescheduled.\n return undefined;\n }\n}\n","import { AsapAction } from './AsapAction';\nimport { AsapScheduler } from './AsapScheduler';\n\n/**\n *\n * Asap Scheduler\n *\n * Perform task as fast as it can be performed asynchronously\n *\n * `asap` scheduler behaves the same as {@link asyncScheduler} scheduler when you use it to delay task\n * in time. If however you set delay to `0`, `asap` will wait for current synchronously executing\n * code to end and then it will try to execute given task as fast as possible.\n *\n * `asap` scheduler will do its best to minimize time between end of currently executing code\n * and start of scheduled task. This makes it best candidate for performing so called \"deferring\".\n * Traditionally this was achieved by calling `setTimeout(deferredTask, 0)`, but that technique involves\n * some (although minimal) unwanted delay.\n *\n * Note that using `asap` scheduler does not necessarily mean that your task will be first to process\n * after currently executing code. In particular, if some task was also scheduled with `asap` before,\n * that task will execute first. That being said, if you need to schedule task asynchronously, but\n * as soon as possible, `asap` scheduler is your best bet.\n *\n * ## Example\n * Compare async and asap scheduler<\n * ```ts\n * import { asapScheduler, asyncScheduler } from 'rxjs';\n *\n * asyncScheduler.schedule(() => console.log('async')); // scheduling 'async' first...\n * asapScheduler.schedule(() => console.log('asap'));\n *\n * // Logs:\n * // \"asap\"\n * // \"async\"\n * // ... but 'asap' goes first!\n * ```\n */\nexport const asapScheduler = new AsapScheduler(AsapAction);\n\n/**\n * @deprecated renamed. Use {@link asapScheduler}\n */\nexport const asap = asapScheduler;\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\nexport class AsapScheduler extends AsyncScheduler {\n public flush(action?: AsyncAction): void {\n\n this.active = true;\n this.scheduled = undefined;\n\n const {actions} = this;\n let error: any;\n let index: number = -1;\n let count: number = actions.length;\n action = action || actions.shift();\n\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n\n this.active = false;\n\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\n/**\n *\n * Async Scheduler\n *\n * Schedule task as if you used setTimeout(task, duration)\n *\n * `async` scheduler schedules tasks asynchronously, by putting them on the JavaScript\n * event loop queue. It is best used to delay tasks in time or to schedule tasks repeating\n * in intervals.\n *\n * If you just want to \"defer\" task, that is to perform it right after currently\n * executing synchronous code ends (commonly achieved by `setTimeout(deferredTask, 0)`),\n * better choice will be the {@link asapScheduler} scheduler.\n *\n * ## Examples\n * Use async scheduler to delay task\n * ```ts\n * import { asyncScheduler } from 'rxjs';\n *\n * const task = () => console.log('it works!');\n *\n * asyncScheduler.schedule(task, 2000);\n *\n * // After 2 seconds logs:\n * // \"it works!\"\n * ```\n *\n * Use async scheduler to repeat task in intervals\n * ```ts\n * import { asyncScheduler } from 'rxjs';\n *\n * function task(state) {\n * console.log(state);\n * this.schedule(state + 1, 1000); // `this` references currently executing Action,\n * // which we reschedule with new state and delay\n * }\n *\n * asyncScheduler.schedule(task, 3000, 0);\n *\n * // Logs:\n * // 0 after 3s\n * // 1 after 4s\n * // 2 after 5s\n * // 3 after 6s\n * ```\n */\nexport const asyncScheduler = new AsyncScheduler(AsyncAction);\n\n/**\n * @deprecated renamed. Use {@link asyncScheduler}\n */\nexport const async = asyncScheduler;","import { AsyncAction } from './AsyncAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\nimport { SchedulerAction } from '../types';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class AnimationFrameAction extends AsyncAction {\n\n constructor(protected scheduler: AnimationFrameScheduler,\n protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n protected requestAsyncId(scheduler: AnimationFrameScheduler, id?: any, delay: number = 0): any {\n // If delay is greater than 0, request as an async action.\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n // Push the action to the end of the scheduler queue.\n scheduler.actions.push(this);\n // If an animation frame has already been requested, don't request another\n // one. If an animation frame hasn't been requested yet, request one. Return\n // the current animation frame request id.\n return scheduler.scheduled || (scheduler.scheduled = requestAnimationFrame(\n () => scheduler.flush(null)));\n }\n protected recycleAsyncId(scheduler: AnimationFrameScheduler, id?: any, delay: number = 0): any {\n // If delay exists and is greater than 0, or if the delay is null (the\n // action wasn't rescheduled) but was originally scheduled as an async\n // action, then recycle as an async action.\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n // If the scheduler queue is empty, cancel the requested animation frame and\n // set the scheduled flag to undefined so the next AnimationFrameAction will\n // request its own.\n if (scheduler.actions.length === 0) {\n cancelAnimationFrame(id);\n scheduler.scheduled = undefined;\n }\n // Return undefined so the action knows to request a new async id if it's rescheduled.\n return undefined;\n }\n}\n","import { AnimationFrameAction } from './AnimationFrameAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\n\n/**\n *\n * Animation Frame Scheduler\n *\n * Perform task when `window.requestAnimationFrame` would fire\n *\n * When `animationFrame` scheduler is used with delay, it will fall back to {@link asyncScheduler} scheduler\n * behaviour.\n *\n * Without delay, `animationFrame` scheduler can be used to create smooth browser animations.\n * It makes sure scheduled task will happen just before next browser content repaint,\n * thus performing animations as efficiently as possible.\n *\n * ## Example\n * Schedule div height animation\n * ```ts\n * // html:
\n * import { animationFrameScheduler } from 'rxjs';\n *\n * const div = document.querySelector('div');\n *\n * animationFrameScheduler.schedule(function(height) {\n * div.style.height = height + \"px\";\n *\n * this.schedule(height + 1); // `this` references currently executing Action,\n * // which we reschedule with new state\n * }, 0, 0);\n *\n * // You will see a div element growing in height\n * ```\n */\nexport const animationFrameScheduler = new AnimationFrameScheduler(AnimationFrameAction);\n\n/**\n * @deprecated renamed. Use {@link animationFrameScheduler}\n */\nexport const animationFrame = animationFrameScheduler;\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\nexport class AnimationFrameScheduler extends AsyncScheduler {\n public flush(action?: AsyncAction): void {\n\n this.active = true;\n this.scheduled = undefined;\n\n const {actions} = this;\n let error: any;\n let index: number = -1;\n let count: number = actions.length;\n action = action || actions.shift();\n\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n\n this.active = false;\n\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { Subscription } from '../Subscription';\nimport { AsyncScheduler } from './AsyncScheduler';\nimport { SchedulerAction } from '../types';\n\nexport class VirtualTimeScheduler extends AsyncScheduler {\n\n protected static frameTimeFactor: number = 10;\n\n public frame: number = 0;\n public index: number = -1;\n\n constructor(SchedulerAction: typeof AsyncAction = VirtualAction as any,\n public maxFrames: number = Number.POSITIVE_INFINITY) {\n super(SchedulerAction, () => this.frame);\n }\n\n /**\n * Prompt the Scheduler to execute all of its queued actions, therefore\n * clearing its queue.\n * @return {void}\n */\n public flush(): void {\n\n const {actions, maxFrames} = this;\n let error: any, action: AsyncAction;\n\n while ((action = actions[0]) && action.delay <= maxFrames) {\n actions.shift();\n this.frame = action.delay;\n\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n }\n\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @nodoc\n */\nexport class VirtualAction extends AsyncAction {\n\n protected active: boolean = true;\n\n constructor(protected scheduler: VirtualTimeScheduler,\n protected work: (this: SchedulerAction, state?: T) => void,\n protected index: number = scheduler.index += 1) {\n super(scheduler, work);\n this.index = scheduler.index = index;\n }\n\n public schedule(state?: T, delay: number = 0): Subscription {\n if (!this.id) {\n return super.schedule(state, delay);\n }\n this.active = false;\n // If an action is rescheduled, we save allocations by mutating its state,\n // pushing it to the end of the scheduler queue, and recycling the action.\n // But since the VirtualTimeScheduler is used for testing, VirtualActions\n // must be immutable so they can be inspected later.\n const action = new VirtualAction(this.scheduler, this.work);\n this.add(action);\n return action.schedule(state, delay);\n }\n\n protected requestAsyncId(scheduler: VirtualTimeScheduler, id?: any, delay: number = 0): any {\n this.delay = scheduler.frame + delay;\n const {actions} = scheduler;\n actions.push(this);\n (actions as Array>).sort(VirtualAction.sortActions);\n return true;\n }\n\n protected recycleAsyncId(scheduler: VirtualTimeScheduler, id?: any, delay: number = 0): any {\n return undefined;\n }\n\n protected _execute(state: T, delay: number): any {\n if (this.active === true) {\n return super._execute(state, delay);\n }\n }\n\n public static sortActions(a: VirtualAction, b: VirtualAction) {\n if (a.delay === b.delay) {\n if (a.index === b.index) {\n return 0;\n } else if (a.index > b.index) {\n return 1;\n } else {\n return -1;\n }\n } else if (a.delay > b.delay) {\n return 1;\n } else {\n return -1;\n }\n }\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput } from '../types';\n\n/**\n * Tests to see if the object is an RxJS {@link Observable}\n * @param obj the object to test\n */\nexport function isObservable(obj: any): obj is Observable {\n return !!obj && (obj instanceof Observable || (typeof obj.lift === 'function' && typeof obj.subscribe === 'function'));\n}\n","export interface ArgumentOutOfRangeError extends Error {\n}\n\nexport interface ArgumentOutOfRangeErrorCtor {\n new(): ArgumentOutOfRangeError;\n}\n\nconst ArgumentOutOfRangeErrorImpl = (() => {\n function ArgumentOutOfRangeErrorImpl(this: any) {\n Error.call(this);\n this.message = 'argument out of range';\n this.name = 'ArgumentOutOfRangeError';\n return this;\n }\n\n ArgumentOutOfRangeErrorImpl.prototype = Object.create(Error.prototype);\n\n return ArgumentOutOfRangeErrorImpl;\n})();\n\n/**\n * An error thrown when an element was queried at a certain index of an\n * Observable, but no such index or position exists in that sequence.\n *\n * @see {@link elementAt}\n * @see {@link take}\n * @see {@link takeLast}\n *\n * @class ArgumentOutOfRangeError\n */\nexport const ArgumentOutOfRangeError: ArgumentOutOfRangeErrorCtor = ArgumentOutOfRangeErrorImpl as any;","export interface EmptyError extends Error {\n}\n\nexport interface EmptyErrorCtor {\n new(): EmptyError;\n}\n\nconst EmptyErrorImpl = (() => {\n function EmptyErrorImpl(this: any) {\n Error.call(this);\n this.message = 'no elements in sequence';\n this.name = 'EmptyError';\n return this;\n }\n\n EmptyErrorImpl.prototype = Object.create(Error.prototype);\n\n return EmptyErrorImpl;\n})();\n\n/**\n * An error thrown when an Observable or a sequence was queried but has no\n * elements.\n *\n * @see {@link first}\n * @see {@link last}\n * @see {@link single}\n *\n * @class EmptyError\n */\nexport const EmptyError: EmptyErrorCtor = EmptyErrorImpl as any;","export interface TimeoutError extends Error {\n}\n\nexport interface TimeoutErrorCtor {\n new(): TimeoutError;\n}\n\nconst TimeoutErrorImpl = (() => {\n function TimeoutErrorImpl(this: any) {\n Error.call(this);\n this.message = 'Timeout has occurred';\n this.name = 'TimeoutError';\n return this;\n }\n\n TimeoutErrorImpl.prototype = Object.create(Error.prototype);\n\n return TimeoutErrorImpl;\n})();\n\n/**\n * An error thrown when duetime elapses.\n *\n * @see {@link operators/timeout}\n *\n * @class TimeoutError\n */\nexport const TimeoutError: TimeoutErrorCtor = TimeoutErrorImpl as any;\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { OperatorFunction } from '../types';\n\n/**\n * Applies a given `project` function to each value emitted by the source\n * Observable, and emits the resulting values as an Observable.\n *\n * Like [Array.prototype.map()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map),\n * it passes each source value through a transformation function to get\n * corresponding output values.\n *\n * ![](map.png)\n *\n * Similar to the well known `Array.prototype.map` function, this operator\n * applies a projection to each value and emits that projection in the output\n * Observable.\n *\n * ## Example\n * Map every click to the clientX position of that click\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { map } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const positions = clicks.pipe(map(ev => ev.clientX));\n * positions.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link mapTo}\n * @see {@link pluck}\n *\n * @param {function(value: T, index: number): R} project The function to apply\n * to each `value` emitted by the source Observable. The `index` parameter is\n * the number `i` for the i-th emission that has happened since the\n * subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to define what `this` is in the\n * `project` function.\n * @return {Observable} An Observable that emits the values from the source\n * Observable transformed by the given `project` function.\n * @method map\n * @owner Observable\n */\nexport function map(project: (value: T, index: number) => R, thisArg?: any): OperatorFunction {\n return function mapOperation(source: Observable): Observable {\n if (typeof project !== 'function') {\n throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');\n }\n return source.lift(new MapOperator(project, thisArg));\n };\n}\n\nexport class MapOperator implements Operator {\n constructor(private project: (value: T, index: number) => R, private thisArg: any) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass MapSubscriber extends Subscriber {\n count: number = 0;\n private thisArg: any;\n\n constructor(destination: Subscriber,\n private project: (value: T, index: number) => R,\n thisArg: any) {\n super(destination);\n this.thisArg = thisArg || this;\n }\n\n // NOTE: This looks unoptimized, but it's actually purposefully NOT\n // using try/catch optimizations.\n protected _next(value: T) {\n let result: R;\n try {\n result = this.project.call(this.thisArg, value, this.count++);\n } catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n }\n}\n","import { SchedulerLike, SchedulerAction } from '../types';\nimport { Observable } from '../Observable';\nimport { AsyncSubject } from '../AsyncSubject';\nimport { Subscriber } from '../Subscriber';\nimport { map } from '../operators/map';\nimport { canReportError } from '../util/canReportError';\nimport { isArray } from '../util/isArray';\nimport { isScheduler } from '../util/isScheduler';\n\n// tslint:disable:max-line-length\n/** @deprecated resultSelector is no longer supported, use a mapping function. */\nexport function bindCallback(callbackFunc: Function, resultSelector: Function, scheduler?: SchedulerLike): (...args: any[]) => Observable;\n\nexport function bindCallback(callbackFunc: (callback: (res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): () => Observable;\nexport function bindCallback(callbackFunc: (callback: (res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): () => Observable<[R1, R2, R3]>;\nexport function bindCallback(callbackFunc: (callback: (res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): () => Observable<[R1, R2]>;\nexport function bindCallback(callbackFunc: (callback: (res1: R1) => any) => any, scheduler?: SchedulerLike): () => Observable;\nexport function bindCallback(callbackFunc: (callback: () => any) => any, scheduler?: SchedulerLike): () => Observable;\n\nexport function bindCallback(callbackFunc: (arg1: A1, callback: (res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, callback: (res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable<[R1, R2, R3]>;\nexport function bindCallback(callbackFunc: (arg1: A1, callback: (res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable<[R1, R2]>;\nexport function bindCallback(callbackFunc: (arg1: A1, callback: (res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, callback: () => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable;\n\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable<[R1, R2, R3]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable<[R1, R2]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, callback: () => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable;\n\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable<[R1, R2, R3]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable<[R1, R2]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: () => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable;\n\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable<[R1, R2, R3]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable<[R1, R2]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: () => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable;\n\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable<[R1, R2, R3]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable<[R1, R2]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: () => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable;\n\nexport function bindCallback(callbackFunc: (...args: Array any)>) => any, scheduler?: SchedulerLike): (...args: A[]) => Observable;\nexport function bindCallback(callbackFunc: (...args: Array any)>) => any, scheduler?: SchedulerLike): (...args: A[]) => Observable;\n\nexport function bindCallback(callbackFunc: Function, scheduler?: SchedulerLike): (...args: any[]) => Observable;\n\n// tslint:enable:max-line-length\n\n/**\n * Converts a callback API to a function that returns an Observable.\n *\n * Give it a function `f` of type `f(x, callback)` and\n * it will return a function `g` that when called as `g(x)` will output an\n * Observable.\n *\n * `bindCallback` is not an operator because its input and output are not\n * Observables. The input is a function `func` with some parameters. The\n * last parameter must be a callback function that `func` calls when it is\n * done.\n *\n * The output of `bindCallback` is a function that takes the same parameters\n * as `func`, except the last one (the callback). When the output function\n * is called with arguments it will return an Observable. If function `func`\n * calls its callback with one argument, the Observable will emit that value.\n * If on the other hand the callback is called with multiple values the resulting\n * Observable will emit an array with said values as arguments.\n *\n * It is **very important** to remember that input function `func` is not called\n * when the output function is, but rather when the Observable returned by the output\n * function is subscribed. This means if `func` makes an AJAX request, that request\n * will be made every time someone subscribes to the resulting Observable, but not before.\n *\n * The last optional parameter - `scheduler` - can be used to control when the call\n * to `func` happens after someone subscribes to Observable, as well as when results\n * passed to callback will be emitted. By default, the subscription to an Observable calls `func`\n * synchronously, but using {@link asyncScheduler} as the last parameter will defer the call to `func`,\n * just like wrapping the call in `setTimeout` with a timeout of `0` would. If you were to use the async Scheduler\n * and call `subscribe` on the output Observable, all function calls that are currently executing\n * will end before `func` is invoked.\n *\n * By default, results passed to the callback are emitted immediately after `func` invokes the callback.\n * In particular, if the callback is called synchronously, then the subscription of the resulting Observable\n * will call the `next` function synchronously as well. If you want to defer that call,\n * you may use {@link asyncScheduler} just as before. This means that by using `Scheduler.async` you can\n * ensure that `func` always calls its callback asynchronously, thus avoiding terrifying Zalgo.\n *\n * Note that the Observable created by the output function will always emit a single value\n * and then complete immediately. If `func` calls the callback multiple times, values from subsequent\n * calls will not appear in the stream. If you need to listen for multiple calls,\n * you probably want to use {@link fromEvent} or {@link fromEventPattern} instead.\n *\n * If `func` depends on some context (`this` property) and is not already bound, the context of `func`\n * will be the context that the output function has at call time. In particular, if `func`\n * is called as a method of some objec and if `func` is not already bound, in order to preserve the context\n * it is recommended that the context of the output function is set to that object as well.\n *\n * If the input function calls its callback in the \"node style\" (i.e. first argument to callback is\n * optional error parameter signaling whether the call failed or not), {@link bindNodeCallback}\n * provides convenient error handling and probably is a better choice.\n * `bindCallback` will treat such functions the same as any other and error parameters\n * (whether passed or not) will always be interpreted as regular callback argument.\n *\n * ## Examples\n *\n * ### Convert jQuery's getJSON to an Observable API\n * ```ts\n * import { bindCallback } from 'rxjs';\n * import * as jQuery from 'jquery';\n *\n * // Suppose we have jQuery.getJSON('/my/url', callback)\n * const getJSONAsObservable = bindCallback(jQuery.getJSON);\n * const result = getJSONAsObservable('/my/url');\n * result.subscribe(x => console.log(x), e => console.error(e));\n * ```\n *\n * ### Receive an array of arguments passed to a callback\n * ```ts\n * import { bindCallback } from 'rxjs';\n *\n * const someFunction = (a, b, c) => {\n * console.log(a); // 5\n * console.log(b); // 'some string'\n * console.log(c); // {someProperty: 'someValue'}\n * };\n *\n * const boundSomeFunction = bindCallback(someFunction);\n * boundSomeFunction().subscribe(values => {\n * console.log(values) // [5, 'some string', {someProperty: 'someValue'}]\n * });\n * ```\n *\n * ### Compare behaviour with and without async Scheduler\n * ```ts\n * import { bindCallback } from 'rxjs';\n *\n * function iCallMyCallbackSynchronously(cb) {\n * cb();\n * }\n *\n * const boundSyncFn = bindCallback(iCallMyCallbackSynchronously);\n * const boundAsyncFn = bindCallback(iCallMyCallbackSynchronously, null, Rx.Scheduler.async);\n *\n * boundSyncFn().subscribe(() => console.log('I was sync!'));\n * boundAsyncFn().subscribe(() => console.log('I was async!'));\n * console.log('This happened...');\n *\n * // Logs:\n * // I was sync!\n * // This happened...\n * // I was async!\n * ```\n *\n * ### Use bindCallback on an object method\n * ```ts\n * import { bindCallback } from 'rxjs';\n *\n * const boundMethod = bindCallback(someObject.methodWithCallback);\n * boundMethod.call(someObject) // make sure methodWithCallback has access to someObject\n * .subscribe(subscriber);\n * ```\n *\n * @see {@link bindNodeCallback}\n * @see {@link from}\n *\n * @param {function} func A function with a callback as the last parameter.\n * @param {SchedulerLike} [scheduler] The scheduler on which to schedule the\n * callbacks.\n * @return {function(...params: *): Observable} A function which returns the\n * Observable that delivers the same values the callback would deliver.\n * @name bindCallback\n */\nexport function bindCallback(\n callbackFunc: Function,\n resultSelector?: Function|SchedulerLike,\n scheduler?: SchedulerLike\n): (...args: any[]) => Observable {\n if (resultSelector) {\n if (isScheduler(resultSelector)) {\n scheduler = resultSelector;\n } else {\n // DEPRECATED PATH\n return (...args: any[]) => bindCallback(callbackFunc, scheduler)(...args).pipe(\n map((args) => isArray(args) ? resultSelector(...args) : resultSelector(args)),\n );\n }\n }\n\n return function (this: any, ...args: any[]): Observable {\n const context = this;\n let subject: AsyncSubject;\n const params = {\n context,\n subject,\n callbackFunc,\n scheduler,\n };\n return new Observable(subscriber => {\n if (!scheduler) {\n if (!subject) {\n subject = new AsyncSubject();\n const handler = (...innerArgs: any[]) => {\n subject.next(innerArgs.length <= 1 ? innerArgs[0] : innerArgs);\n subject.complete();\n };\n\n try {\n callbackFunc.apply(context, [...args, handler]);\n } catch (err) {\n if (canReportError(subject)) {\n subject.error(err);\n } else {\n console.warn(err);\n }\n }\n }\n return subject.subscribe(subscriber);\n } else {\n const state: DispatchState = {\n args, subscriber, params,\n };\n return scheduler.schedule>(dispatch, 0, state);\n }\n });\n };\n}\n\ninterface DispatchState {\n args: any[];\n subscriber: Subscriber;\n params: ParamsContext;\n}\n\ninterface ParamsContext {\n callbackFunc: Function;\n scheduler: SchedulerLike;\n context: any;\n subject: AsyncSubject;\n}\n\nfunction dispatch(this: SchedulerAction>, state: DispatchState) {\n const self = this;\n const { args, subscriber, params } = state;\n const { callbackFunc, context, scheduler } = params;\n let { subject } = params;\n if (!subject) {\n subject = params.subject = new AsyncSubject();\n\n const handler = (...innerArgs: any[]) => {\n const value = innerArgs.length <= 1 ? innerArgs[0] : innerArgs;\n this.add(scheduler.schedule>(dispatchNext, 0, { value, subject }));\n };\n\n try {\n callbackFunc.apply(context, [...args, handler]);\n } catch (err) {\n subject.error(err);\n }\n }\n\n this.add(subject.subscribe(subscriber));\n}\n\ninterface NextState {\n subject: AsyncSubject;\n value: T;\n}\n\nfunction dispatchNext(this: SchedulerAction>, state: NextState) {\n const { value, subject } = state;\n subject.next(value);\n subject.complete();\n}\n\ninterface ErrorState {\n subject: AsyncSubject;\n err: any;\n}\n\nfunction dispatchError(this: SchedulerAction>, state: ErrorState) {\n const { err, subject } = state;\n subject.error(err);\n}\n","import { Observable } from '../Observable';\nimport { AsyncSubject } from '../AsyncSubject';\nimport { Subscriber } from '../Subscriber';\nimport { SchedulerAction, SchedulerLike } from '../types';\nimport { map } from '../operators/map';\nimport { canReportError } from '../util/canReportError';\nimport { isScheduler } from '../util/isScheduler';\nimport { isArray } from '../util/isArray';\n\n/* tslint:disable:max-line-length */\n/** @deprecated resultSelector is deprecated, pipe to map instead */\nexport function bindNodeCallback(callbackFunc: Function, resultSelector: Function, scheduler?: SchedulerLike): (...args: any[]) => Observable;\n\nexport function bindNodeCallback(callbackFunc: (callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (...args: any[]) => Observable;\nexport function bindNodeCallback(callbackFunc: (callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): () => Observable<[R1, R2, R3]>;\nexport function bindNodeCallback(callbackFunc: (callback: (err: any, res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): () => Observable<[R1, R2]>;\nexport function bindNodeCallback(callbackFunc: (callback: (err: any, res1: R1) => any) => any, scheduler?: SchedulerLike): () => Observable;\nexport function bindNodeCallback(callbackFunc: (callback: (err: any) => any) => any, scheduler?: SchedulerLike): () => Observable;\n\nexport function bindNodeCallback(callbackFunc: (arg1: A1, callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (...args: any[]) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable<[R1, R2, R3]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, callback: (err: any, res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable<[R1, R2]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, callback: (err: any, res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, callback: (err: any) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable;\n\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (...args: any[]) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable<[R1, R2, R3]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (err: any, res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable<[R1, R2]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (err: any, res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (err: any) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable;\n\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (...args: any[]) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable<[R1, R2, R3]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (err: any, res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable<[R1, R2]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (err: any, res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (err: any) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable;\n\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (...args: any[]) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable<[R1, R2, R3]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (err: any, res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable<[R1, R2]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (err: any, res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (err: any) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable;\n\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (...args: any[]) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable<[R1, R2, R3]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (err: any, res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable<[R1, R2]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (err: any, res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (err: any) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable; /* tslint:enable:max-line-length */\n\nexport function bindNodeCallback(callbackFunc: Function, scheduler?: SchedulerLike): (...args: any[]) => Observable;\n/**\n * Converts a Node.js-style callback API to a function that returns an\n * Observable.\n *\n * It's just like {@link bindCallback}, but the\n * callback is expected to be of type `callback(error, result)`.\n *\n * `bindNodeCallback` is not an operator because its input and output are not\n * Observables. The input is a function `func` with some parameters, but the\n * last parameter must be a callback function that `func` calls when it is\n * done. The callback function is expected to follow Node.js conventions,\n * where the first argument to the callback is an error object, signaling\n * whether call was successful. If that object is passed to callback, it means\n * something went wrong.\n *\n * The output of `bindNodeCallback` is a function that takes the same\n * parameters as `func`, except the last one (the callback). When the output\n * function is called with arguments, it will return an Observable.\n * If `func` calls its callback with error parameter present, Observable will\n * error with that value as well. If error parameter is not passed, Observable will emit\n * second parameter. If there are more parameters (third and so on),\n * Observable will emit an array with all arguments, except first error argument.\n *\n * Note that `func` will not be called at the same time output function is,\n * but rather whenever resulting Observable is subscribed. By default call to\n * `func` will happen synchronously after subscription, but that can be changed\n * with proper `scheduler` provided as optional third parameter. {@link SchedulerLike}\n * can also control when values from callback will be emitted by Observable.\n * To find out more, check out documentation for {@link bindCallback}, where\n * {@link SchedulerLike} works exactly the same.\n *\n * As in {@link bindCallback}, context (`this` property) of input function will be set to context\n * of returned function, when it is called.\n *\n * After Observable emits value, it will complete immediately. This means\n * even if `func` calls callback again, values from second and consecutive\n * calls will never appear on the stream. If you need to handle functions\n * that call callbacks multiple times, check out {@link fromEvent} or\n * {@link fromEventPattern} instead.\n *\n * Note that `bindNodeCallback` can be used in non-Node.js environments as well.\n * \"Node.js-style\" callbacks are just a convention, so if you write for\n * browsers or any other environment and API you use implements that callback style,\n * `bindNodeCallback` can be safely used on that API functions as well.\n *\n * Remember that Error object passed to callback does not have to be an instance\n * of JavaScript built-in `Error` object. In fact, it does not even have to an object.\n * Error parameter of callback function is interpreted as \"present\", when value\n * of that parameter is truthy. It could be, for example, non-zero number, non-empty\n * string or boolean `true`. In all of these cases resulting Observable would error\n * with that value. This means usually regular style callbacks will fail very often when\n * `bindNodeCallback` is used. If your Observable errors much more often then you\n * would expect, check if callback really is called in Node.js-style and, if not,\n * switch to {@link bindCallback} instead.\n *\n * Note that even if error parameter is technically present in callback, but its value\n * is falsy, it still won't appear in array emitted by Observable.\n *\n * ## Examples\n * ### Read a file from the filesystem and get the data as an Observable\n * ```ts\n * import * as fs from 'fs';\n * const readFileAsObservable = bindNodeCallback(fs.readFile);\n * const result = readFileAsObservable('./roadNames.txt', 'utf8');\n * result.subscribe(x => console.log(x), e => console.error(e));\n * ```\n *\n * ### Use on function calling callback with multiple arguments\n * ```ts\n * someFunction((err, a, b) => {\n * console.log(err); // null\n * console.log(a); // 5\n * console.log(b); // \"some string\"\n * });\n * const boundSomeFunction = bindNodeCallback(someFunction);\n * boundSomeFunction()\n * .subscribe(value => {\n * console.log(value); // [5, \"some string\"]\n * });\n * ```\n *\n * ### Use on function calling callback in regular style\n * ```ts\n * someFunction(a => {\n * console.log(a); // 5\n * });\n * const boundSomeFunction = bindNodeCallback(someFunction);\n * boundSomeFunction()\n * .subscribe(\n * value => {} // never gets called\n * err => console.log(err) // 5\n * );\n * ```\n *\n * @see {@link bindCallback}\n * @see {@link from}\n *\n * @param {function} func Function with a Node.js-style callback as the last parameter.\n * @param {SchedulerLike} [scheduler] The scheduler on which to schedule the\n * callbacks.\n * @return {function(...params: *): Observable} A function which returns the\n * Observable that delivers the same values the Node.js callback would\n * deliver.\n * @name bindNodeCallback\n */\nexport function bindNodeCallback(\n callbackFunc: Function,\n resultSelector: Function|SchedulerLike,\n scheduler?: SchedulerLike\n): (...args: any[]) => Observable {\n\n if (resultSelector) {\n if (isScheduler(resultSelector)) {\n scheduler = resultSelector;\n } else {\n // DEPRECATED PATH\n return (...args: any[]) => bindNodeCallback(callbackFunc, scheduler)(...args).pipe(\n map(args => isArray(args) ? resultSelector(...args) : resultSelector(args))\n );\n }\n }\n\n return function(this: any, ...args: any[]): Observable {\n const params: ParamsState = {\n subject: undefined,\n args,\n callbackFunc,\n scheduler,\n context: this,\n };\n return new Observable(subscriber => {\n const { context } = params;\n let { subject } = params;\n if (!scheduler) {\n if (!subject) {\n subject = params.subject = new AsyncSubject();\n const handler = (...innerArgs: any[]) => {\n const err = innerArgs.shift();\n\n if (err) {\n subject.error(err);\n return;\n }\n\n subject.next(innerArgs.length <= 1 ? innerArgs[0] : innerArgs);\n subject.complete();\n };\n\n try {\n callbackFunc.apply(context, [...args, handler]);\n } catch (err) {\n if (canReportError(subject)) {\n subject.error(err);\n } else {\n console.warn(err);\n }\n }\n }\n return subject.subscribe(subscriber);\n } else {\n return scheduler.schedule>(dispatch, 0, { params, subscriber, context });\n }\n });\n };\n}\n\ninterface DispatchState {\n subscriber: Subscriber;\n context: any;\n params: ParamsState;\n}\n\ninterface ParamsState {\n callbackFunc: Function;\n args: any[];\n scheduler: SchedulerLike;\n subject: AsyncSubject;\n context: any;\n}\n\nfunction dispatch(this: SchedulerAction>, state: DispatchState) {\n const { params, subscriber, context } = state;\n const { callbackFunc, args, scheduler } = params;\n let subject = params.subject;\n\n if (!subject) {\n subject = params.subject = new AsyncSubject();\n\n const handler = (...innerArgs: any[]) => {\n const err = innerArgs.shift();\n if (err) {\n this.add(scheduler.schedule>(dispatchError, 0, { err, subject }));\n } else {\n const value = innerArgs.length <= 1 ? innerArgs[0] : innerArgs;\n this.add(scheduler.schedule>(dispatchNext, 0, { value, subject }));\n }\n };\n\n try {\n callbackFunc.apply(context, [...args, handler]);\n } catch (err) {\n this.add(scheduler.schedule>(dispatchError, 0, { err, subject }));\n }\n }\n\n this.add(subject.subscribe(subscriber));\n}\n\ninterface DispatchNextArg {\n subject: AsyncSubject;\n value: T;\n}\n\nfunction dispatchNext(arg: DispatchNextArg) {\n const { value, subject } = arg;\n subject.next(value);\n subject.complete();\n}\n\ninterface DispatchErrorArg {\n subject: AsyncSubject;\n err: any;\n}\n\nfunction dispatchError(arg: DispatchErrorArg) {\n const { err, subject } = arg;\n subject.error(err);\n}\n","import { Subscriber } from './Subscriber';\nimport { InnerSubscriber } from './InnerSubscriber';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class OuterSubscriber extends Subscriber {\n notifyNext(outerValue: T, innerValue: R,\n outerIndex: number, innerIndex: number,\n innerSub: InnerSubscriber): void {\n this.destination.next(innerValue);\n }\n\n notifyError(error: any, innerSub: InnerSubscriber): void {\n this.destination.error(error);\n }\n\n notifyComplete(innerSub: InnerSubscriber): void {\n this.destination.complete();\n }\n}\n","import { Subscriber } from './Subscriber';\nimport { OuterSubscriber } from './OuterSubscriber';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class InnerSubscriber extends Subscriber {\n private index = 0;\n\n constructor(private parent: OuterSubscriber, public outerValue: T, public outerIndex: number) {\n super();\n }\n\n protected _next(value: R): void {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this);\n }\n\n protected _error(error: any): void {\n this.parent.notifyError(error, this);\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n }\n}\n","export function getSymbolIterator(): symbol {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator' as any;\n }\n\n return Symbol.iterator;\n}\n\nexport const iterator = getSymbolIterator();\n\n/**\n * @deprecated use {@link iterator} instead\n */\nexport const $$iterator = iterator;\n","/**\n * Tests to see if the object is an ES2015 (ES6) Promise\n * @see {@link https://www.ecma-international.org/ecma-262/6.0/#sec-promise-objects}\n * @param value the object to test\n */\nexport function isPromise(value: any): value is PromiseLike {\n return !!value && typeof (value).subscribe !== 'function' && typeof (value as any).then === 'function';\n}\n","import { ObservableInput } from '../types';\nimport { subscribeToArray } from './subscribeToArray';\nimport { subscribeToPromise } from './subscribeToPromise';\nimport { subscribeToIterable } from './subscribeToIterable';\nimport { subscribeToObservable } from './subscribeToObservable';\nimport { isArrayLike } from './isArrayLike';\nimport { isPromise } from './isPromise';\nimport { isObject } from './isObject';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { observable as Symbol_observable } from '../symbol/observable';\nimport { Subscription } from '../Subscription';\nimport { Subscriber } from '../Subscriber';\n\nexport const subscribeTo = (result: ObservableInput): (subscriber: Subscriber) => Subscription | void => {\n if (!!result && typeof result[Symbol_observable] === 'function') {\n return subscribeToObservable(result as any);\n } else if (isArrayLike(result)) {\n return subscribeToArray(result);\n } else if (isPromise(result)) {\n return subscribeToPromise(result as Promise);\n } else if (!!result && typeof result[Symbol_iterator] === 'function') {\n return subscribeToIterable(result as any);\n } else {\n const value = isObject(result) ? 'an invalid object' : `'${result}'`;\n const msg = `You provided ${value} where a stream was expected.`\n + ' You can provide an Observable, Promise, Array, or Iterable.';\n throw new TypeError(msg);\n }\n};\n","import { Subscriber } from '../Subscriber';\nimport { observable as Symbol_observable } from '../symbol/observable';\n\n/**\n * Subscribes to an object that implements Symbol.observable with the given\n * Subscriber.\n * @param obj An object that implements Symbol.observable\n */\nexport const subscribeToObservable = (obj: any) => (subscriber: Subscriber) => {\n const obs = obj[Symbol_observable]();\n if (typeof obs.subscribe !== 'function') {\n // Should be caught by observable subscribe function error handling.\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n } else {\n return obs.subscribe(subscriber);\n }\n};\n","import { Subscriber } from '../Subscriber';\nimport { hostReportError } from './hostReportError';\n\nexport const subscribeToPromise = (promise: PromiseLike) => (subscriber: Subscriber) => {\n promise.then(\n (value) => {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n },\n (err: any) => subscriber.error(err)\n )\n .then(null, hostReportError);\n return subscriber;\n};\n","import { Subscriber } from '../Subscriber';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\n\nexport const subscribeToIterable = (iterable: Iterable) => (subscriber: Subscriber) => {\n const iterator = (iterable as any)[Symbol_iterator]();\n\n do {\n let item: IteratorResult;\n try {\n item = iterator.next();\n } catch (err) {\n subscriber.error(err);\n return subscriber;\n }\n if (item.done) {\n subscriber.complete();\n break;\n }\n subscriber.next(item.value);\n if (subscriber.closed) {\n break;\n }\n } while (true);\n\n // Finalize the iterator if it happens to be a Generator\n if (typeof iterator.return === 'function') {\n subscriber.add(() => {\n if (iterator.return) {\n iterator.return();\n }\n });\n }\n\n return subscriber;\n};\n","import { Subscription } from '../Subscription';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { Subscriber } from '../Subscriber';\nimport { subscribeTo } from './subscribeTo';\nimport { Observable } from '../Observable';\n\nexport function subscribeToResult(\n outerSubscriber: OuterSubscriber,\n result: any,\n outerValue: undefined,\n outerIndex: undefined,\n innerSubscriber: InnerSubscriber\n): Subscription | undefined;\n\nexport function subscribeToResult(\n outerSubscriber: OuterSubscriber,\n result: any,\n outerValue?: T,\n outerIndex?: number\n): Subscription | undefined;\n\nexport function subscribeToResult(\n outerSubscriber: OuterSubscriber,\n result: any,\n outerValue?: T,\n outerIndex?: number,\n innerSubscriber: Subscriber = new InnerSubscriber(outerSubscriber, outerValue, outerIndex)\n): Subscription | undefined {\n if (innerSubscriber.closed) {\n return undefined;\n }\n if (result instanceof Observable) {\n return result.subscribe(innerSubscriber);\n }\n return subscribeTo(result)(innerSubscriber) as Subscription;\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput, SchedulerLike, ObservedValueOf } from '../types';\nimport { isScheduler } from '../util/isScheduler';\nimport { isArray } from '../util/isArray';\nimport { Subscriber } from '../Subscriber';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { Operator } from '../Operator';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { fromArray } from './fromArray';\n\nconst NONE = {};\n\n/* tslint:disable:max-line-length */\n\n// If called with a single array, it \"auto-spreads\" the array, with result selector\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, R>(sources: [O1], resultSelector: (v1: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, R>(sources: [O1, O2], resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, R>(sources: [O1, O2, O3], resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, R>(sources: [O1, O2, O3, O4], resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, R>(sources: [O1, O2, O3, O4, O5], resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput, R>(sources: [O1, O2, O3, O4, O5, O6], resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf, v6: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, R>(sources: O[], resultSelector: (...args: ObservedValueOf[]) => R, scheduler?: SchedulerLike): Observable;\n\n// standard call, but with a result selector\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, R>(v1: O1, resultSelector: (v1: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, R>(v1: O1, v2: O2, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, v4: O4, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, v6: O6, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf, v6: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n\n// With a scheduler (deprecated)\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest>(sources: [O1], scheduler: SchedulerLike): Observable<[ObservedValueOf]>;\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest, O2 extends ObservableInput>(sources: [O1, O2], scheduler: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput>(sources: [O1, O2, O3], scheduler: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput>(sources: [O1, O2, O3, O4], scheduler: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput>(sources: [O1, O2, O3, O4, O5], scheduler: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput>(sources: [O1, O2, O3, O4, O5, O6], scheduler: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest>(sources: O[], scheduler: SchedulerLike): Observable[]>;\n\n// Best case\nexport function combineLatest>(sources: [O1]): Observable<[ObservedValueOf]>;\nexport function combineLatest, O2 extends ObservableInput>(sources: [O1, O2]): Observable<[ObservedValueOf, ObservedValueOf]>;\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput>(sources: [O1, O2, O3]): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput>(sources: [O1, O2, O3, O4]): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput>(sources: [O1, O2, O3, O4, O5]): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput>(sources: [O1, O2, O3, O4, O5, O6]): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function combineLatest>(sources: O[]): Observable[]>;\n\n// Standard calls\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest>(v1: O1, scheduler?: SchedulerLike): Observable<[ObservedValueOf]>;\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest, O2 extends ObservableInput>(v1: O1, v2: O2, scheduler?: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput>(v1: O1, v2: O2, v3: O3, scheduler?: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, scheduler?: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, scheduler?: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, v6: O6, scheduler?: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest>(...observables: O[]): Observable;\n\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest, R>(...observables: Array | ((...values: Array) => R)>): Observable;\n\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, R>(array: O[], resultSelector: (...values: ObservedValueOf[]) => R, scheduler?: SchedulerLike): Observable;\n\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest>(...observables: Array): Observable;\n\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest, R>(...observables: Array[]) => R) | SchedulerLike>): Observable;\n\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest(...observables: Array | ((...values: Array) => R) | SchedulerLike>): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * Combines multiple Observables to create an Observable whose values are\n * calculated from the latest values of each of its input Observables.\n *\n * Whenever any input Observable emits a value, it\n * computes a formula using the latest values from all the inputs, then emits\n * the output of that formula.\n *\n * ![](combineLatest.png)\n *\n * `combineLatest` combines the values from all the Observables passed as\n * arguments. This is done by subscribing to each Observable in order and,\n * whenever any Observable emits, collecting an array of the most recent\n * values from each Observable. So if you pass `n` Observables to operator,\n * returned Observable will always emit an array of `n` values, in order\n * corresponding to order of passed Observables (value from the first Observable\n * on the first place and so on).\n *\n * Static version of `combineLatest` accepts either an array of Observables\n * or each Observable can be put directly as an argument. Note that array of\n * Observables is good choice, if you don't know beforehand how many Observables\n * you will combine. Passing empty array will result in Observable that\n * completes immediately.\n *\n * To ensure output array has always the same length, `combineLatest` will\n * actually wait for all input Observables to emit at least once,\n * before it starts emitting results. This means if some Observable emits\n * values before other Observables started emitting, all these values but the last\n * will be lost. On the other hand, if some Observable does not emit a value but\n * completes, resulting Observable will complete at the same moment without\n * emitting anything, since it will be now impossible to include value from\n * completed Observable in resulting array. Also, if some input Observable does\n * not emit any value and never completes, `combineLatest` will also never emit\n * and never complete, since, again, it will wait for all streams to emit some\n * value.\n *\n * If at least one Observable was passed to `combineLatest` and all passed Observables\n * emitted something, resulting Observable will complete when all combined\n * streams complete. So even if some Observable completes, result of\n * `combineLatest` will still emit values when other Observables do. In case\n * of completed Observable, its value from now on will always be the last\n * emitted value. On the other hand, if any Observable errors, `combineLatest`\n * will error immediately as well, and all other Observables will be unsubscribed.\n *\n * `combineLatest` accepts as optional parameter `project` function, which takes\n * as arguments all values that would normally be emitted by resulting Observable.\n * `project` can return any kind of value, which will be then emitted by Observable\n * instead of default array. Note that `project` does not take as argument that array\n * of values, but values themselves. That means default `project` can be imagined\n * as function that takes all its arguments and puts them into an array.\n *\n * ## Examples\n * ### Combine two timer Observables\n * ```ts\n * import { combineLatest, timer } from 'rxjs';\n *\n * const firstTimer = timer(0, 1000); // emit 0, 1, 2... after every second, starting from now\n * const secondTimer = timer(500, 1000); // emit 0, 1, 2... after every second, starting 0,5s from now\n * const combinedTimers = combineLatest(firstTimer, secondTimer);\n * combinedTimers.subscribe(value => console.log(value));\n * // Logs\n * // [0, 0] after 0.5s\n * // [1, 0] after 1s\n * // [1, 1] after 1.5s\n * // [2, 1] after 2s\n * ```\n *\n * ### Combine an array of Observables\n * ```ts\n * import { combineLatest, of } from 'rxjs';\n * import { delay, starWith } from 'rxjs/operators';\n *\n * const observables = [1, 5, 10].map(\n * n => of(n).pipe(\n * delay(n * 1000), // emit 0 and then emit n after n seconds\n * startWith(0),\n * )\n * );\n * const combined = combineLatest(observables);\n * combined.subscribe(value => console.log(value));\n * // Logs\n * // [0, 0, 0] immediately\n * // [1, 0, 0] after 1s\n * // [1, 5, 0] after 5s\n * // [1, 5, 10] after 10s\n * ```\n *\n *\n * ### Use project function to dynamically calculate the Body-Mass Index\n * ```ts\n * import { combineLatest, of } from 'rxjs';\n * import { map } from 'rxjs/operators';\n *\n * const weight = of(70, 72, 76, 79, 75);\n * const height = of(1.76, 1.77, 1.78);\n * const bmi = combineLatest(weight, height).pipe(\n * map(([w, h]) => w / (h * h)),\n * );\n * bmi.subscribe(x => console.log('BMI is ' + x));\n *\n * // With output to console:\n * // BMI is 24.212293388429753\n * // BMI is 23.93948099205209\n * // BMI is 23.671253629592222\n * ```\n *\n * @see {@link combineAll}\n * @see {@link merge}\n * @see {@link withLatestFrom}\n *\n * @param {ObservableInput} observable1 An input Observable to combine with other Observables.\n * @param {ObservableInput} observable2 An input Observable to combine with other Observables.\n * More than one input Observables may be given as arguments\n * or an array of Observables may be given as the first argument.\n * @param {function} [project] An optional function to project the values from\n * the combined latest values into a new value on the output Observable.\n * @param {SchedulerLike} [scheduler=null] The {@link SchedulerLike} to use for subscribing to\n * each input Observable.\n * @return {Observable} An Observable of projected values from the most recent\n * values from each input Observable, or an array of the most recent values from\n * each input Observable.\n */\nexport function combineLatest, R>(\n ...observables: (O | ((...values: ObservedValueOf[]) => R) | SchedulerLike)[]\n): Observable {\n let resultSelector: ((...values: Array) => R) | undefined = undefined;\n let scheduler: SchedulerLike|undefined = undefined;\n\n if (isScheduler(observables[observables.length - 1])) {\n scheduler = observables.pop() as SchedulerLike;\n }\n\n if (typeof observables[observables.length - 1] === 'function') {\n resultSelector = observables.pop() as (...values: Array) => R;\n }\n\n // if the first and only other argument besides the resultSelector is an array\n // assume it's been called with `combineLatest([obs1, obs2, obs3], resultSelector)`\n if (observables.length === 1 && isArray(observables[0])) {\n observables = observables[0] as any;\n }\n\n return fromArray(observables, scheduler).lift(new CombineLatestOperator(resultSelector));\n}\n\nexport class CombineLatestOperator implements Operator {\n constructor(private resultSelector?: (...values: Array) => R) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new CombineLatestSubscriber(subscriber, this.resultSelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class CombineLatestSubscriber extends OuterSubscriber {\n private active: number = 0;\n private values: any[] = [];\n private observables: any[] = [];\n private toRespond?: number;\n\n constructor(destination: Subscriber, private resultSelector?: (...values: Array) => R) {\n super(destination);\n }\n\n protected _next(observable: any) {\n this.values.push(NONE);\n this.observables.push(observable);\n }\n\n protected _complete() {\n const observables = this.observables;\n const len = observables.length;\n if (len === 0) {\n this.destination.complete!();\n } else {\n this.active = len;\n this.toRespond = len;\n for (let i = 0; i < len; i++) {\n const observable = observables[i];\n this.add(subscribeToResult(this, observable, undefined, i));\n }\n }\n }\n\n notifyComplete(unused: Subscriber): void {\n if ((this.active -= 1) === 0) {\n this.destination.complete!();\n }\n }\n\n notifyNext(_outerValue: T, innerValue: R,\n outerIndex: number): void {\n const values = this.values;\n const oldVal = values[outerIndex];\n const toRespond = !this.toRespond\n ? 0\n : oldVal === NONE ? --this.toRespond : this.toRespond;\n values[outerIndex] = innerValue;\n\n if (toRespond === 0) {\n if (this.resultSelector) {\n this._tryResultSelector(values);\n } else {\n this.destination.next!(values.slice());\n }\n }\n }\n\n private _tryResultSelector(values: any[]) {\n let result: any;\n try {\n result = this.resultSelector!.apply(this, values);\n } catch (err) {\n this.destination.error!(err);\n return;\n }\n this.destination.next!(result);\n }\n}\n","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { ObservableInput, SchedulerLike, Observable } from 'rxjs';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\n\n/**\n * Converts from a common {@link ObservableInput} type to an observable where subscription and emissions\n * are scheduled on the provided scheduler.\n *\n * @see from\n * @see of\n *\n * @param input The observable, array, promise, iterable, etc you would like to schedule\n * @param scheduler The scheduler to use to schedule the subscription and emissions from\n * the returned observable.\n */\nexport function scheduled(input: ObservableInput, scheduler: SchedulerLike): Observable {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n } else if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n } else if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n } else if (isIterable(input) || typeof input === 'string') {\n return scheduleIterable(input, scheduler);\n }\n }\n\n throw new TypeError((input !== null && typeof input || input) + ' is not observable');\n}\n","import { InteropObservable } from '../types';\nimport { observable as Symbol_observable } from '../symbol/observable';\n\n/** Identifies an input as being Observable (but not necessary an Rx Observable) */\nexport function isInteropObservable(input: any): input is InteropObservable {\n return input && typeof input[Symbol_observable] === 'function';\n}\n","import { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { observable as Symbol_observable } from '../symbol/observable';\nimport { InteropObservable, SchedulerLike, Subscribable } from '../types';\n\nexport function scheduleObservable(input: InteropObservable, scheduler: SchedulerLike) {\n return new Observable(subscriber => {\n const sub = new Subscription();\n sub.add(scheduler.schedule(() => {\n const observable: Subscribable = input[Symbol_observable]();\n sub.add(observable.subscribe({\n next(value) { sub.add(scheduler.schedule(() => subscriber.next(value))); },\n error(err) { sub.add(scheduler.schedule(() => subscriber.error(err))); },\n complete() { sub.add(scheduler.schedule(() => subscriber.complete())); },\n }));\n }));\n return sub;\n });\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { Subscription } from '../Subscription';\n\nexport function schedulePromise(input: PromiseLike, scheduler: SchedulerLike) {\n return new Observable(subscriber => {\n const sub = new Subscription();\n sub.add(scheduler.schedule(() => input.then(\n value => {\n sub.add(scheduler.schedule(() => {\n subscriber.next(value);\n sub.add(scheduler.schedule(() => subscriber.complete()));\n }));\n },\n err => {\n sub.add(scheduler.schedule(() => subscriber.error(err)));\n }\n )));\n return sub;\n });\n}\n","import { iterator as Symbol_iterator } from '../symbol/iterator';\n\n/** Identifies an input as being an Iterable */\nexport function isIterable(input: any): input is Iterable {\n return input && typeof input[Symbol_iterator] === 'function';\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { Subscription } from '../Subscription';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\n\nexport function scheduleIterable(input: Iterable, scheduler: SchedulerLike) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable(subscriber => {\n const sub = new Subscription();\n let iterator: Iterator;\n sub.add(() => {\n // Finalize generators\n if (iterator && typeof iterator.return === 'function') {\n iterator.return();\n }\n });\n sub.add(scheduler.schedule(() => {\n iterator = input[Symbol_iterator]();\n sub.add(scheduler.schedule(function () {\n if (subscriber.closed) {\n return;\n }\n let value: T;\n let done: boolean;\n try {\n const result = iterator.next();\n value = result.value;\n done = result.done;\n } catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n } else {\n subscriber.next(value);\n this.schedule();\n }\n }));\n }));\n return sub;\n });\n}\n","import { Observable } from '../Observable';\nimport { subscribeTo } from '../util/subscribeTo';\nimport { ObservableInput, SchedulerLike, ObservedValueOf } from '../types';\nimport { scheduled } from '../scheduled/scheduled';\n\nexport function from>(input: O): Observable>;\n/** @deprecated use {@link scheduled} instead. */\nexport function from>(input: O, scheduler: SchedulerLike): Observable>;\n\n/**\n * Creates an Observable from an Array, an array-like object, a Promise, an iterable object, or an Observable-like object.\n *\n * Converts almost anything to an Observable.\n *\n * ![](from.png)\n *\n * `from` converts various other objects and data types into Observables. It also converts a Promise, an array-like, or an\n * iterable\n * object into an Observable that emits the items in that promise, array, or iterable. A String, in this context, is treated\n * as an array of characters. Observable-like objects (contains a function named with the ES2015 Symbol for Observable) can also be\n * converted through this operator.\n *\n * ## Examples\n *\n * ### Converts an array to an Observable\n *\n * ```ts\n * import { from } from 'rxjs';\n *\n * const array = [10, 20, 30];\n * const result = from(array);\n *\n * result.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 10\n * // 20\n * // 30\n * ```\n *\n * ---\n *\n * ### Convert an infinite iterable (from a generator) to an Observable\n *\n * ```ts\n * import { from } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * function* generateDoubles(seed) {\n * let i = seed;\n * while (true) {\n * yield i;\n * i = 2 * i; // double it\n * }\n * }\n *\n * const iterator = generateDoubles(3);\n * const result = from(iterator).pipe(take(10));\n *\n * result.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 3\n * // 6\n * // 12\n * // 24\n * // 48\n * // 96\n * // 192\n * // 384\n * // 768\n * // 1536\n * ```\n *\n * ---\n *\n * ### With async scheduler\n *\n * ```ts\n * import { from, asyncScheduler } from 'rxjs';\n *\n * console.log('start');\n *\n * const array = [10, 20, 30];\n * const result = from(array, asyncScheduler);\n *\n * result.subscribe(x => console.log(x));\n *\n * console.log('end');\n *\n * // Logs:\n * // start\n * // end\n * // 10\n * // 20\n * // 30\n * ```\n *\n * @see {@link fromEvent}\n * @see {@link fromEventPattern}\n *\n * @param {ObservableInput} A subscription object, a Promise, an Observable-like,\n * an Array, an iterable, or an array-like object to be converted.\n * @param {SchedulerLike} An optional {@link SchedulerLike} on which to schedule the emission of values.\n * @return {Observable}\n * @name from\n * @owner Observable\n */\nexport function from(input: ObservableInput, scheduler?: SchedulerLike): Observable {\n if (!scheduler) {\n if (input instanceof Observable) {\n return input;\n }\n return new Observable(subscribeTo(input));\n } else {\n return scheduled(input, scheduler);\n }\n}\n","/** @prettier */\nimport { Subscription } from './Subscription';\nimport { Subscriber } from './Subscriber';\nimport { Observable } from './Observable';\nimport { subscribeTo } from './util/subscribeTo';\n\ninterface SimpleOuterSubscriberLike {\n /**\n * A handler for inner next notifications from the inner subscription\n * @param innerValue the value nexted by the inner producer\n */\n notifyNext(innerValue: T): void;\n /**\n * A handler for inner error notifications from the inner subscription\n * @param err the error from the inner producer\n */\n notifyError(err: any): void;\n /**\n * A handler for inner complete notifications from the inner subscription.\n */\n notifyComplete(): void;\n}\n\nexport class SimpleInnerSubscriber extends Subscriber {\n constructor(private parent: SimpleOuterSubscriberLike) {\n super();\n }\n\n protected _next(value: T): void {\n this.parent.notifyNext(value);\n }\n\n protected _error(error: any): void {\n this.parent.notifyError(error);\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.parent.notifyComplete();\n this.unsubscribe();\n }\n}\n\nexport class ComplexInnerSubscriber extends Subscriber {\n constructor(private parent: ComplexOuterSubscriber, public outerValue: T, public outerIndex: number) {\n super();\n }\n\n protected _next(value: R): void {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this);\n }\n\n protected _error(error: any): void {\n this.parent.notifyError(error);\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n }\n}\n\nexport class SimpleOuterSubscriber extends Subscriber implements SimpleOuterSubscriberLike {\n notifyNext(innerValue: R): void {\n this.destination.next(innerValue);\n }\n\n notifyError(err: any): void {\n this.destination.error(err);\n }\n\n notifyComplete(): void {\n this.destination.complete();\n }\n}\n\n/**\n * DO NOT USE (formerly \"OuterSubscriber\")\n * TODO: We want to refactor this and remove it. It is retaining values it shouldn't for long\n * periods of time.\n */\nexport class ComplexOuterSubscriber extends Subscriber {\n /**\n * @param _outerValue Used by: bufferToggle, delayWhen, windowToggle\n * @param innerValue Used by: subclass default, combineLatest, race, bufferToggle, windowToggle, withLatestFrom\n * @param _outerIndex Used by: combineLatest, race, withLatestFrom\n * @param _innerSub Used by: delayWhen\n */\n notifyNext(_outerValue: T, innerValue: R, _outerIndex: number, _innerSub: ComplexInnerSubscriber): void {\n this.destination.next(innerValue);\n }\n\n notifyError(error: any): void {\n this.destination.error(error);\n }\n\n /**\n * @param _innerSub Used by: race, bufferToggle, delayWhen, windowToggle, windowWhen\n */\n notifyComplete(_innerSub: ComplexInnerSubscriber): void {\n this.destination.complete();\n }\n}\n\nexport function innerSubscribe(result: any, innerSubscriber: Subscriber): Subscription | undefined {\n if (innerSubscriber.closed) {\n return undefined;\n }\n if (result instanceof Observable) {\n return result.subscribe(innerSubscriber);\n }\n let subscription: Subscription;\n try {\n subscription = subscribeTo(result)(innerSubscriber) as Subscription;\n } catch (error) {\n innerSubscriber.error(error);\n }\n return subscription;\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { map } from './map';\nimport { from } from '../observable/from';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\n\n/* tslint:disable:max-line-length */\nexport function mergeMap>(project: (value: T, index: number) => O, concurrent?: number): OperatorFunction>;\n/** @deprecated resultSelector no longer supported, use inner map instead */\nexport function mergeMap>(project: (value: T, index: number) => O, resultSelector: undefined, concurrent?: number): OperatorFunction>;\n/** @deprecated resultSelector no longer supported, use inner map instead */\nexport function mergeMap>(project: (value: T, index: number) => O, resultSelector: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R, concurrent?: number): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable.\n *\n * Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link mergeAll}.\n *\n * ![](mergeMap.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an Observable, and then merging those resulting Observables and\n * emitting the results of this merger.\n *\n * ## Example\n * Map and flatten each letter to an Observable ticking every 1 second\n * ```ts\n * import { of, interval } from 'rxjs';\n * import { mergeMap, map } from 'rxjs/operators';\n *\n * const letters = of('a', 'b', 'c');\n * const result = letters.pipe(\n * mergeMap(x => interval(1000).pipe(map(i => x+i))),\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // a0\n * // b0\n * // c0\n * // a1\n * // b1\n * // c1\n * // continues to list a,b,c with respective ascending integers\n * ```\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link merge}\n * @see {@link mergeAll}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @return {Observable} An Observable that emits the result of applying the\n * projection function (and the optional deprecated `resultSelector`) to each item\n * emitted by the source Observable and merging the results of the Observables\n * obtained from this transformation.\n */\nexport function mergeMap>(\n project: (value: T, index: number) => O,\n resultSelector?: ((outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R) | number,\n concurrent: number = Number.POSITIVE_INFINITY\n): OperatorFunction|R> {\n if (typeof resultSelector === 'function') {\n // DEPRECATED PATH\n return (source: Observable) => source.pipe(\n mergeMap((a, i) => from(project(a, i)).pipe(\n map((b: any, ii: number) => resultSelector(a, b, i, ii)),\n ), concurrent)\n );\n } else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return (source: Observable) => source.lift(new MergeMapOperator(project, concurrent));\n}\n\nexport class MergeMapOperator implements Operator {\n constructor(private project: (value: T, index: number) => ObservableInput,\n private concurrent: number = Number.POSITIVE_INFINITY) {\n }\n\n call(observer: Subscriber, source: any): any {\n return source.subscribe(new MergeMapSubscriber(\n observer, this.project, this.concurrent\n ));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class MergeMapSubscriber extends SimpleOuterSubscriber {\n private hasCompleted: boolean = false;\n private buffer: T[] = [];\n private active: number = 0;\n protected index: number = 0;\n\n constructor(destination: Subscriber,\n private project: (value: T, index: number) => ObservableInput,\n private concurrent: number = Number.POSITIVE_INFINITY) {\n super(destination);\n }\n\n protected _next(value: T): void {\n if (this.active < this.concurrent) {\n this._tryNext(value);\n } else {\n this.buffer.push(value);\n }\n }\n\n protected _tryNext(value: T) {\n let result: ObservableInput;\n const index = this.index++;\n try {\n result = this.project(value, index);\n } catch (err) {\n this.destination.error!(err);\n return;\n }\n this.active++;\n this._innerSub(result);\n }\n\n private _innerSub(ish: ObservableInput): void {\n const innerSubscriber = new SimpleInnerSubscriber(this);\n const destination = this.destination as Subscription;\n destination.add(innerSubscriber);\n const innerSubscription = innerSubscribe(ish, innerSubscriber);\n // The returned subscription will usually be the subscriber that was\n // passed. However, interop subscribers will be wrapped and for\n // unsubscriptions to chain correctly, the wrapper needs to be added, too.\n if (innerSubscription !== innerSubscriber) {\n destination.add(innerSubscription);\n }\n }\n\n protected _complete(): void {\n this.hasCompleted = true;\n if (this.active === 0 && this.buffer.length === 0) {\n this.destination.complete!();\n }\n this.unsubscribe();\n }\n\n notifyNext(innerValue: R): void {\n this.destination.next!(innerValue);\n }\n\n notifyComplete(): void {\n const buffer = this.buffer;\n this.active--;\n if (buffer.length > 0) {\n this._next(buffer.shift()!);\n } else if (this.active === 0 && this.hasCompleted) {\n this.destination.complete!();\n }\n }\n}\n\n/**\n * @deprecated renamed. Use {@link mergeMap}\n */\nexport const flatMap = mergeMap;","\nimport { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nimport { OperatorFunction, ObservableInput } from '../types';\n\n/**\n * Converts a higher-order Observable into a first-order Observable which\n * concurrently delivers all values that are emitted on the inner Observables.\n *\n * Flattens an Observable-of-Observables.\n *\n * ![](mergeAll.png)\n *\n * `mergeAll` subscribes to an Observable that emits Observables, also known as\n * a higher-order Observable. Each time it observes one of these emitted inner\n * Observables, it subscribes to that and delivers all the values from the\n * inner Observable on the output Observable. The output Observable only\n * completes once all inner Observables have completed. Any error delivered by\n * a inner Observable will be immediately emitted on the output Observable.\n *\n * ## Examples\n * Spawn a new interval Observable for each click event, and blend their outputs as one Observable\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { map, mergeAll } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(map((ev) => interval(1000)));\n * const firstOrder = higherOrder.pipe(mergeAll());\n * firstOrder.subscribe(x => console.log(x));\n * ```\n *\n * Count from 0 to 9 every second for each click, but only allow 2 concurrent timers\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { take, map, mergeAll } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(\n * map((ev) => interval(1000).pipe(take(10))),\n * );\n * const firstOrder = higherOrder.pipe(mergeAll(2));\n * firstOrder.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link combineAll}\n * @see {@link concatAll}\n * @see {@link exhaust}\n * @see {@link merge}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switchAll}\n * @see {@link switchMap}\n * @see {@link zipAll}\n *\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of inner\n * Observables being subscribed to concurrently.\n * @return {Observable} An Observable that emits values coming from all the\n * inner Observables emitted by the source Observable.\n * @method mergeAll\n * @owner Observable\n */\nexport function mergeAll(concurrent: number = Number.POSITIVE_INFINITY): OperatorFunction, T> {\n return mergeMap(identity, concurrent);\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput, SchedulerLike, ObservedValueOf } from '../types';\nimport { isScheduler } from '../util/isScheduler';\nimport { of } from './of';\nimport { from } from './from';\nimport { concatAll } from '../operators/concatAll';\n\n/* tslint:disable:max-line-length */\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat>(v1: O1, scheduler: SchedulerLike): Observable>;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat, O2 extends ObservableInput>(v1: O1, v2: O2, scheduler: SchedulerLike): Observable | ObservedValueOf>;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput>(v1: O1, v2: O2, v3: O3, scheduler: SchedulerLike): Observable | ObservedValueOf | ObservedValueOf>;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, scheduler: SchedulerLike): Observable | ObservedValueOf | ObservedValueOf | ObservedValueOf>;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, scheduler: SchedulerLike): Observable | ObservedValueOf | ObservedValueOf | ObservedValueOf | ObservedValueOf>;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, v6: O6, scheduler: SchedulerLike): Observable | ObservedValueOf | ObservedValueOf | ObservedValueOf | ObservedValueOf | ObservedValueOf>;\n\nexport function concat>(v1: O1): Observable>;\nexport function concat, O2 extends ObservableInput>(v1: O1, v2: O2): Observable | ObservedValueOf>;\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput>(v1: O1, v2: O2, v3: O3): Observable | ObservedValueOf | ObservedValueOf>;\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4): Observable | ObservedValueOf | ObservedValueOf | ObservedValueOf>;\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5): Observable | ObservedValueOf | ObservedValueOf | ObservedValueOf | ObservedValueOf>;\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, v6: O6): Observable | ObservedValueOf | ObservedValueOf | ObservedValueOf | ObservedValueOf | ObservedValueOf>;\nexport function concat>(...observables: O[]): Observable>;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat>(...observables: (O | SchedulerLike)[]): Observable>;\nexport function concat(...observables: ObservableInput[]): Observable;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat(...observables: (ObservableInput | SchedulerLike)[]): Observable;\n/* tslint:enable:max-line-length */\n/**\n * Creates an output Observable which sequentially emits all values from given\n * Observable and then moves on to the next.\n *\n * Concatenates multiple Observables together by\n * sequentially emitting their values, one Observable after the other.\n *\n * ![](concat.png)\n *\n * `concat` joins multiple Observables together, by subscribing to them one at a time and\n * merging their results into the output Observable. You can pass either an array of\n * Observables, or put them directly as arguments. Passing an empty array will result\n * in Observable that completes immediately.\n *\n * `concat` will subscribe to first input Observable and emit all its values, without\n * changing or affecting them in any way. When that Observable completes, it will\n * subscribe to then next Observable passed and, again, emit its values. This will be\n * repeated, until the operator runs out of Observables. When last input Observable completes,\n * `concat` will complete as well. At any given moment only one Observable passed to operator\n * emits values. If you would like to emit values from passed Observables concurrently, check out\n * {@link merge} instead, especially with optional `concurrent` parameter. As a matter of fact,\n * `concat` is an equivalent of `merge` operator with `concurrent` parameter set to `1`.\n *\n * Note that if some input Observable never completes, `concat` will also never complete\n * and Observables following the one that did not complete will never be subscribed. On the other\n * hand, if some Observable simply completes immediately after it is subscribed, it will be\n * invisible for `concat`, which will just move on to the next Observable.\n *\n * If any Observable in chain errors, instead of passing control to the next Observable,\n * `concat` will error immediately as well. Observables that would be subscribed after\n * the one that emitted error, never will.\n *\n * If you pass to `concat` the same Observable many times, its stream of values\n * will be \"replayed\" on every subscription, which means you can repeat given Observable\n * as many times as you like. If passing the same Observable to `concat` 1000 times becomes tedious,\n * you can always use {@link repeat}.\n *\n * ## Examples\n * ### Concatenate a timer counting from 0 to 3 with a synchronous sequence from 1 to 10\n * ```ts\n * import { concat, interval, range } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const timer = interval(1000).pipe(take(4));\n * const sequence = range(1, 10);\n * const result = concat(timer, sequence);\n * result.subscribe(x => console.log(x));\n *\n * // results in:\n * // 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3 -immediate-> 1 ... 10\n * ```\n *\n * ### Concatenate 3 Observables\n * ```ts\n * import { concat, interval } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const timer1 = interval(1000).pipe(take(10));\n * const timer2 = interval(2000).pipe(take(6));\n * const timer3 = interval(500).pipe(take(10));\n *\n * const result = concat(timer1, timer2, timer3);\n * result.subscribe(x => console.log(x));\n *\n * // results in the following:\n * // (Prints to console sequentially)\n * // -1000ms-> 0 -1000ms-> 1 -1000ms-> ... 9\n * // -2000ms-> 0 -2000ms-> 1 -2000ms-> ... 5\n * // -500ms-> 0 -500ms-> 1 -500ms-> ... 9\n * ```\n *\n * ### Concatenate the same Observable to repeat it\n * ```ts\n * import { concat, interval } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const timer = interval(1000).pipe(take(2));\n *\n * concat(timer, timer) // concatenating the same Observable!\n * .subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('...and it is done!')\n * );\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // 0 after 3s\n * // 1 after 4s\n * // \"...and it is done!\" also after 4s\n * ```\n *\n * @see {@link concatAll}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n * @see {@link startWith}\n * @see {@link endWith}\n *\n * @param {ObservableInput} input1 An input Observable to concatenate with others.\n * @param {ObservableInput} input2 An input Observable to concatenate with others.\n * More than one input Observables may be given as argument.\n * @param {SchedulerLike} [scheduler=null] An optional {@link SchedulerLike} to schedule each\n * Observable subscription on.\n * @return {Observable} All values of each passed Observable merged into a\n * single Observable, in order, in serial fashion.\n * @static true\n * @name concat\n * @owner Observable\n */\nexport function concat, R>(...observables: Array): Observable | R> {\n return concatAll()(of(...observables));\n}\n","\nimport { mergeAll } from './mergeAll';\nimport { OperatorFunction, ObservableInput } from '../types';\n\nexport function concatAll(): OperatorFunction, T>;\nexport function concatAll(): OperatorFunction;\n\n/**\n * Converts a higher-order Observable into a first-order Observable by\n * concatenating the inner Observables in order.\n *\n * Flattens an Observable-of-Observables by putting one\n * inner Observable after the other.\n *\n * ![](concatAll.png)\n *\n * Joins every Observable emitted by the source (a higher-order Observable), in\n * a serial fashion. It subscribes to each inner Observable only after the\n * previous inner Observable has completed, and merges all of their values into\n * the returned observable.\n *\n * __Warning:__ If the source Observable emits Observables quickly and\n * endlessly, and the inner Observables it emits generally complete slower than\n * the source emits, you can run into memory issues as the incoming Observables\n * collect in an unbounded buffer.\n *\n * Note: `concatAll` is equivalent to `mergeAll` with concurrency parameter set\n * to `1`.\n *\n * ## Example\n *\n * For each click event, tick every second from 0 to 3, with no concurrency\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { map, take, concatAll } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(\n * map(ev => interval(1000).pipe(take(4))),\n * );\n * const firstOrder = higherOrder.pipe(concatAll());\n * firstOrder.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n * ```\n *\n * @see {@link combineAll}\n * @see {@link concat}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n * @see {@link exhaust}\n * @see {@link mergeAll}\n * @see {@link switchAll}\n * @see {@link switchMap}\n * @see {@link zipAll}\n *\n * @return {Observable} An Observable emitting values from all the inner\n * Observables concatenated.\n * @method concatAll\n * @owner Observable\n */\nexport function concatAll(): OperatorFunction, T> {\n return mergeAll(1);\n}\n","import { Observable } from '../Observable';\nimport { SubscribableOrPromise, ObservedValueOf, ObservableInput } from '../types';\nimport { from } from './from'; // lol\nimport { empty } from './empty';\n\n/**\n * Creates an Observable that, on subscribe, calls an Observable factory to\n * make an Observable for each new Observer.\n *\n * Creates the Observable lazily, that is, only when it\n * is subscribed.\n * \n *\n * ![](defer.png)\n *\n * `defer` allows you to create the Observable only when the Observer\n * subscribes, and create a fresh Observable for each Observer. It waits until\n * an Observer subscribes to it, and then it generates an Observable,\n * typically with an Observable factory function. It does this afresh for each\n * subscriber, so although each subscriber may think it is subscribing to the\n * same Observable, in fact each subscriber gets its own individual\n * Observable.\n *\n * ## Example\n * ### Subscribe to either an Observable of clicks or an Observable of interval, at random\n * ```ts\n * import { defer, fromEvent, interval } from 'rxjs';\n *\n * const clicksOrInterval = defer(function () {\n * return Math.random() > 0.5\n * ? fromEvent(document, 'click')\n * : interval(1000);\n * });\n * clicksOrInterval.subscribe(x => console.log(x));\n *\n * // Results in the following behavior:\n * // If the result of Math.random() is greater than 0.5 it will listen\n * // for clicks anywhere on the \"document\"; when document is clicked it\n * // will log a MouseEvent object to the console. If the result is less\n * // than 0.5 it will emit ascending numbers, one every second(1000ms).\n * ```\n *\n * @see {@link Observable}\n *\n * @param {function(): SubscribableOrPromise} observableFactory The Observable\n * factory function to invoke for each Observer that subscribes to the output\n * Observable. May also return a Promise, which will be converted on the fly\n * to an Observable.\n * @return {Observable} An Observable whose Observers' subscriptions trigger\n * an invocation of the given Observable factory function.\n * @static true\n * @name defer\n * @owner Observable\n */\nexport function defer | void>(observableFactory: () => R): Observable> {\n return new Observable>(subscriber => {\n let input: R | void;\n try {\n input = observableFactory();\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n const source = input ? from(input as ObservableInput>) : empty();\n return source.subscribe(subscriber);\n });\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput, ObservedValuesFromArray, ObservedValueOf, SubscribableOrPromise } from '../types';\nimport { isArray } from '../util/isArray';\nimport { map } from '../operators/map';\nimport { isObject } from '../util/isObject';\nimport { isObservable } from '../util/isObservable';\nimport { from } from './from';\n\n/* tslint:disable:max-line-length */\n\n// forkJoin(a$, b$, c$)\n/** @deprecated Use the version that takes an array of Observables instead */\nexport function forkJoin(v1: SubscribableOrPromise): Observable<[T]>;\n/** @deprecated Use the version that takes an array of Observables instead */\nexport function forkJoin(v1: ObservableInput, v2: ObservableInput): Observable<[T, T2]>;\n/** @deprecated Use the version that takes an array of Observables instead */\nexport function forkJoin(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput): Observable<[T, T2, T3]>;\n/** @deprecated Use the version that takes an array of Observables instead */\nexport function forkJoin(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): Observable<[T, T2, T3, T4]>;\n/** @deprecated Use the version that takes an array of Observables instead */\nexport function forkJoin(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): Observable<[T, T2, T3, T4, T5]>;\n/** @deprecated Use the version that takes an array of Observables instead */\nexport function forkJoin(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): Observable<[T, T2, T3, T4, T5, T6]>;\n\n// forkJoin([a$, b$, c$]);\n// TODO(benlesh): Uncomment for TS 3.0\n// export function forkJoin(sources: []): Observable;\nexport function forkJoin(sources: [ObservableInput]): Observable<[A]>;\nexport function forkJoin(sources: [ObservableInput, ObservableInput]): Observable<[A, B]>;\nexport function forkJoin(sources: [ObservableInput, ObservableInput, ObservableInput]): Observable<[A, B, C]>;\nexport function forkJoin(sources: [ObservableInput, ObservableInput, ObservableInput, ObservableInput]): Observable<[A, B, C, D]>;\nexport function forkJoin(sources: [ObservableInput, ObservableInput, ObservableInput, ObservableInput, ObservableInput]): Observable<[A, B, C, D, E]>;\nexport function forkJoin(sources: [ObservableInput, ObservableInput, ObservableInput, ObservableInput, ObservableInput, ObservableInput]): Observable<[A, B, C, D, E, F]>;\nexport function forkJoin[]>(sources: A): Observable[]>;\n\n// forkJoin({})\nexport function forkJoin(sourcesObject: {}): Observable;\nexport function forkJoin(sourcesObject: T): Observable<{ [K in keyof T]: ObservedValueOf }>;\n\n/** @deprecated resultSelector is deprecated, pipe to map instead */\nexport function forkJoin(...args: Array|Function>): Observable;\n/** @deprecated Use the version that takes an array of Observables instead */\nexport function forkJoin(...sources: ObservableInput[]): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * Accepts an `Array` of {@link ObservableInput} or a dictionary `Object` of {@link ObservableInput} and returns\n * an {@link Observable} that emits either an array of values in the exact same order as the passed array,\n * or a dictionary of values in the same shape as the passed dictionary.\n *\n * Wait for Observables to complete and then combine last values they emitted.\n *\n * ![](forkJoin.png)\n *\n * `forkJoin` is an operator that takes any number of input observables which can be passed either as an array\n * or a dictionary of input observables. If no input observables are provided, resulting stream will complete\n * immediately.\n *\n * `forkJoin` will wait for all passed observables to complete and then it will emit an array or an object with last\n * values from corresponding observables.\n *\n * If you pass an array of `n` observables to the operator, resulting\n * array will have `n` values, where first value is the last thing emitted by the first observable,\n * second value is the last thing emitted by the second observable and so on.\n *\n * If you pass a dictionary of observables to the operator, resulting\n * objects will have the same keys as the dictionary passed, with their last values they've emitted\n * located at the corresponding key.\n *\n * That means `forkJoin` will not emit more than once and it will complete after that. If you need to emit combined\n * values not only at the end of lifecycle of passed observables, but also throughout it, try out {@link combineLatest}\n * or {@link zip} instead.\n *\n * In order for resulting array to have the same length as the number of input observables, whenever any of\n * that observables completes without emitting any value, `forkJoin` will complete at that moment as well\n * and it will not emit anything either, even if it already has some last values from other observables.\n * Conversely, if there is an observable that never completes, `forkJoin` will never complete as well,\n * unless at any point some other observable completes without emitting value, which brings us back to\n * the previous case. Overall, in order for `forkJoin` to emit a value, all observables passed as arguments\n * have to emit something at least once and complete.\n *\n * If any input observable errors at some point, `forkJoin` will error as well and all other observables\n * will be immediately unsubscribed.\n *\n * Optionally `forkJoin` accepts project function, that will be called with values which normally\n * would land in emitted array. Whatever is returned by project function, will appear in output\n * observable instead. This means that default project can be thought of as a function that takes\n * all its arguments and puts them into an array. Note that project function will be called only\n * when output observable is supposed to emit a result.\n *\n * ## Examples\n *\n * ### Use forkJoin with a dictionary of observable inputs\n * ```ts\n * import { forkJoin, of, timer } from 'rxjs';\n *\n * const observable = forkJoin({\n * foo: of(1, 2, 3, 4),\n * bar: Promise.resolve(8),\n * baz: timer(4000),\n * });\n * observable.subscribe({\n * next: value => console.log(value),\n * complete: () => console.log('This is how it ends!'),\n * });\n *\n * // Logs:\n * // { foo: 4, bar: 8, baz: 0 } after 4 seconds\n * // \"This is how it ends!\" immediately after\n * ```\n *\n * ### Use forkJoin with an array of observable inputs\n * ```ts\n * import { forkJoin, of } from 'rxjs';\n *\n * const observable = forkJoin([\n * of(1, 2, 3, 4),\n * Promise.resolve(8),\n * timer(4000),\n * ]);\n * observable.subscribe({\n * next: value => console.log(value),\n * complete: () => console.log('This is how it ends!'),\n * });\n *\n * // Logs:\n * // [4, 8, 0] after 4 seconds\n * // \"This is how it ends!\" immediately after\n * ```\n *\n * @see {@link combineLatest}\n * @see {@link zip}\n *\n * @param {...ObservableInput} sources Any number of Observables provided either as an array or as an arguments\n * passed directly to the operator.\n * @param {function} [project] Function that takes values emitted by input Observables and returns value\n * that will appear in resulting Observable instead of default array.\n * @return {Observable} Observable emitting either an array of last values emitted by passed Observables\n * or value from project function.\n */\nexport function forkJoin(\n ...sources: any[]\n): Observable {\n if (sources.length === 1) {\n const first = sources[0];\n if (isArray(first)) {\n return forkJoinInternal(first, null);\n }\n // TODO(benlesh): isObservable check will not be necessary when deprecated path is removed.\n if (isObject(first) && Object.getPrototypeOf(first) === Object.prototype) {\n const keys = Object.keys(first);\n return forkJoinInternal(keys.map(key => first[key]), keys);\n }\n }\n\n // DEPRECATED PATHS BELOW HERE\n if (typeof sources[sources.length - 1] === 'function') {\n const resultSelector = sources.pop() as Function;\n sources = (sources.length === 1 && isArray(sources[0])) ? sources[0] : sources;\n return forkJoinInternal(sources, null).pipe(\n map((args: any[]) => resultSelector(...args))\n );\n }\n\n return forkJoinInternal(sources, null);\n}\n\nfunction forkJoinInternal(sources: ObservableInput[], keys: string[] | null): Observable {\n return new Observable(subscriber => {\n const len = sources.length;\n if (len === 0) {\n subscriber.complete();\n return;\n }\n const values = new Array(len);\n let completed = 0;\n let emitted = 0;\n for (let i = 0; i < len; i++) {\n const source = from(sources[i]);\n let hasValue = false;\n subscriber.add(source.subscribe({\n next: value => {\n if (!hasValue) {\n hasValue = true;\n emitted++;\n }\n values[i] = value;\n },\n error: err => subscriber.error(err),\n complete: () => {\n completed++;\n if (completed === len || !hasValue) {\n if (emitted === len) {\n subscriber.next(keys ?\n keys.reduce((result, key, i) => (result[key] = values[i], result), {}) :\n values);\n }\n subscriber.complete();\n }\n }\n }));\n }\n });\n}\n","import { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { isFunction } from '../util/isFunction';\nimport { Subscriber } from '../Subscriber';\nimport { map } from '../operators/map';\n\nconst toString: Function = (() => Object.prototype.toString)();\n\nexport interface NodeStyleEventEmitter {\n addListener: (eventName: string | symbol, handler: NodeEventHandler) => this;\n removeListener: (eventName: string | symbol, handler: NodeEventHandler) => this;\n}\n\nexport type NodeEventHandler = (...args: any[]) => void;\n\n// For APIs that implement `addListener` and `removeListener` methods that may\n// not use the same arguments or return EventEmitter values\n// such as React Native\nexport interface NodeCompatibleEventEmitter {\n addListener: (eventName: string, handler: NodeEventHandler) => void | {};\n removeListener: (eventName: string, handler: NodeEventHandler) => void | {};\n}\n\nexport interface JQueryStyleEventEmitter {\n on: (eventName: string, handler: Function) => void;\n off: (eventName: string, handler: Function) => void;\n}\n\nexport interface HasEventTargetAddRemove {\n addEventListener(type: string, listener: ((evt: E) => void) | null, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: string, listener?: ((evt: E) => void) | null, options?: EventListenerOptions | boolean): void;\n}\n\nexport type EventTargetLike = HasEventTargetAddRemove | NodeStyleEventEmitter | NodeCompatibleEventEmitter | JQueryStyleEventEmitter;\n\nexport type FromEventTarget = EventTargetLike | ArrayLike>;\n\nexport interface EventListenerOptions {\n capture?: boolean;\n passive?: boolean;\n once?: boolean;\n}\n\nexport interface AddEventListenerOptions extends EventListenerOptions {\n once?: boolean;\n passive?: boolean;\n}\n\n/* tslint:disable:max-line-length */\nexport function fromEvent(target: FromEventTarget, eventName: string): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function fromEvent(target: FromEventTarget, eventName: string, resultSelector: (...args: any[]) => T): Observable;\nexport function fromEvent(target: FromEventTarget, eventName: string, options: EventListenerOptions): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function fromEvent(target: FromEventTarget, eventName: string, options: EventListenerOptions, resultSelector: (...args: any[]) => T): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * Creates an Observable that emits events of a specific type coming from the\n * given event target.\n *\n * Creates an Observable from DOM events, or Node.js\n * EventEmitter events or others.\n *\n * ![](fromEvent.png)\n *\n * `fromEvent` accepts as a first argument event target, which is an object with methods\n * for registering event handler functions. As a second argument it takes string that indicates\n * type of event we want to listen for. `fromEvent` supports selected types of event targets,\n * which are described in detail below. If your event target does not match any of the ones listed,\n * you should use {@link fromEventPattern}, which can be used on arbitrary APIs.\n * When it comes to APIs supported by `fromEvent`, their methods for adding and removing event\n * handler functions have different names, but they all accept a string describing event type\n * and function itself, which will be called whenever said event happens.\n *\n * Every time resulting Observable is subscribed, event handler function will be registered\n * to event target on given event type. When that event fires, value\n * passed as a first argument to registered function will be emitted by output Observable.\n * When Observable is unsubscribed, function will be unregistered from event target.\n *\n * Note that if event target calls registered function with more than one argument, second\n * and following arguments will not appear in resulting stream. In order to get access to them,\n * you can pass to `fromEvent` optional project function, which will be called with all arguments\n * passed to event handler. Output Observable will then emit value returned by project function,\n * instead of the usual value.\n *\n * Remember that event targets listed below are checked via duck typing. It means that\n * no matter what kind of object you have and no matter what environment you work in,\n * you can safely use `fromEvent` on that object if it exposes described methods (provided\n * of course they behave as was described above). So for example if Node.js library exposes\n * event target which has the same method names as DOM EventTarget, `fromEvent` is still\n * a good choice.\n *\n * If the API you use is more callback then event handler oriented (subscribed\n * callback function fires only once and thus there is no need to manually\n * unregister it), you should use {@link bindCallback} or {@link bindNodeCallback}\n * instead.\n *\n * `fromEvent` supports following types of event targets:\n *\n * **DOM EventTarget**\n *\n * This is an object with `addEventListener` and `removeEventListener` methods.\n *\n * In the browser, `addEventListener` accepts - apart from event type string and event\n * handler function arguments - optional third parameter, which is either an object or boolean,\n * both used for additional configuration how and when passed function will be called. When\n * `fromEvent` is used with event target of that type, you can provide this values\n * as third parameter as well.\n *\n * **Node.js EventEmitter**\n *\n * An object with `addListener` and `removeListener` methods.\n *\n * **JQuery-style event target**\n *\n * An object with `on` and `off` methods\n *\n * **DOM NodeList**\n *\n * List of DOM Nodes, returned for example by `document.querySelectorAll` or `Node.childNodes`.\n *\n * Although this collection is not event target in itself, `fromEvent` will iterate over all Nodes\n * it contains and install event handler function in every of them. When returned Observable\n * is unsubscribed, function will be removed from all Nodes.\n *\n * **DOM HtmlCollection**\n *\n * Just as in case of NodeList it is a collection of DOM nodes. Here as well event handler function is\n * installed and removed in each of elements.\n *\n *\n * ## Examples\n * ### Emits clicks happening on the DOM document\n * ```ts\n * import { fromEvent } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * clicks.subscribe(x => console.log(x));\n *\n * // Results in:\n * // MouseEvent object logged to console every time a click\n * // occurs on the document.\n * ```\n *\n * ### Use addEventListener with capture option\n * ```ts\n * import { fromEvent } from 'rxjs';\n *\n * const clicksInDocument = fromEvent(document, 'click', true); // note optional configuration parameter\n * // which will be passed to addEventListener\n * const clicksInDiv = fromEvent(someDivInDocument, 'click');\n *\n * clicksInDocument.subscribe(() => console.log('document'));\n * clicksInDiv.subscribe(() => console.log('div'));\n *\n * // By default events bubble UP in DOM tree, so normally\n * // when we would click on div in document\n * // \"div\" would be logged first and then \"document\".\n * // Since we specified optional `capture` option, document\n * // will catch event when it goes DOWN DOM tree, so console\n * // will log \"document\" and then \"div\".\n * ```\n *\n * @see {@link bindCallback}\n * @see {@link bindNodeCallback}\n * @see {@link fromEventPattern}\n *\n * @param {FromEventTarget} target The DOM EventTarget, Node.js\n * EventEmitter, JQuery-like event target, NodeList or HTMLCollection to attach the event handler to.\n * @param {string} eventName The event name of interest, being emitted by the\n * `target`.\n * @param {EventListenerOptions} [options] Options to pass through to addEventListener\n * @return {Observable}\n * @name fromEvent\n */\nexport function fromEvent(\n target: FromEventTarget,\n eventName: string,\n options?: EventListenerOptions | ((...args: any[]) => T),\n resultSelector?: ((...args: any[]) => T)\n): Observable {\n\n if (isFunction(options)) {\n // DEPRECATED PATH\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n // DEPRECATED PATH\n return fromEvent(target, eventName, options).pipe(\n map(args => isArray(args) ? resultSelector(...args) : resultSelector(args))\n );\n }\n\n return new Observable(subscriber => {\n function handler(e: T) {\n if (arguments.length > 1) {\n subscriber.next(Array.prototype.slice.call(arguments));\n } else {\n subscriber.next(e);\n }\n }\n setupSubscription(target, eventName, handler, subscriber, options as EventListenerOptions);\n });\n}\n\nfunction setupSubscription(sourceObj: FromEventTarget, eventName: string,\n handler: (...args: any[]) => void, subscriber: Subscriber,\n options?: EventListenerOptions) {\n let unsubscribe: () => void;\n if (isEventTarget(sourceObj)) {\n const source = sourceObj;\n sourceObj.addEventListener(eventName, handler, options);\n unsubscribe = () => source.removeEventListener(eventName, handler, options);\n } else if (isJQueryStyleEventEmitter(sourceObj)) {\n const source = sourceObj;\n sourceObj.on(eventName, handler);\n unsubscribe = () => source.off(eventName, handler);\n } else if (isNodeStyleEventEmitter(sourceObj)) {\n const source = sourceObj;\n sourceObj.addListener(eventName, handler as NodeEventHandler);\n unsubscribe = () => source.removeListener(eventName, handler as NodeEventHandler);\n } else if (sourceObj && (sourceObj as any).length) {\n for (let i = 0, len = (sourceObj as any).length; i < len; i++) {\n setupSubscription(sourceObj[i], eventName, handler, subscriber, options);\n }\n } else {\n throw new TypeError('Invalid event target');\n }\n\n subscriber.add(unsubscribe);\n}\n\nfunction isNodeStyleEventEmitter(sourceObj: any): sourceObj is NodeStyleEventEmitter {\n return sourceObj && typeof sourceObj.addListener === 'function' && typeof sourceObj.removeListener === 'function';\n}\n\nfunction isJQueryStyleEventEmitter(sourceObj: any): sourceObj is JQueryStyleEventEmitter {\n return sourceObj && typeof sourceObj.on === 'function' && typeof sourceObj.off === 'function';\n}\n\nfunction isEventTarget(sourceObj: any): sourceObj is HasEventTargetAddRemove {\n return sourceObj && typeof sourceObj.addEventListener === 'function' && typeof sourceObj.removeEventListener === 'function';\n}\n","import { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { isFunction } from '../util/isFunction';\nimport { NodeEventHandler } from './fromEvent';\nimport { map } from '../operators/map';\n\n/* tslint:disable:max-line-length */\nexport function fromEventPattern(addHandler: (handler: NodeEventHandler) => any, removeHandler?: (handler: NodeEventHandler, signal?: any) => void): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function fromEventPattern(addHandler: (handler: NodeEventHandler) => any, removeHandler?: (handler: NodeEventHandler, signal?: any) => void, resultSelector?: (...args: any[]) => T): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * Creates an Observable from an arbitrary API for registering event handlers.\n *\n * When that method for adding event handler was something {@link fromEvent}\n * was not prepared for.\n *\n * ![](fromEventPattern.png)\n *\n * `fromEventPattern` allows you to convert into an Observable any API that supports registering handler functions\n * for events. It is similar to {@link fromEvent}, but far\n * more flexible. In fact, all use cases of {@link fromEvent} could be easily handled by\n * `fromEventPattern` (although in slightly more verbose way).\n *\n * This operator accepts as a first argument an `addHandler` function, which will be injected with\n * handler parameter. That handler is actually an event handler function that you now can pass\n * to API expecting it. `addHandler` will be called whenever Observable\n * returned by the operator is subscribed, so registering handler in API will not\n * necessarily happen when `fromEventPattern` is called.\n *\n * After registration, every time an event that we listen to happens,\n * Observable returned by `fromEventPattern` will emit value that event handler\n * function was called with. Note that if event handler was called with more\n * then one argument, second and following arguments will not appear in the Observable.\n *\n * If API you are using allows to unregister event handlers as well, you can pass to `fromEventPattern`\n * another function - `removeHandler` - as a second parameter. It will be injected\n * with the same handler function as before, which now you can use to unregister\n * it from the API. `removeHandler` will be called when consumer of resulting Observable\n * unsubscribes from it.\n *\n * In some APIs unregistering is actually handled differently. Method registering an event handler\n * returns some kind of token, which is later used to identify which function should\n * be unregistered or it itself has method that unregisters event handler.\n * If that is the case with your API, make sure token returned\n * by registering method is returned by `addHandler`. Then it will be passed\n * as a second argument to `removeHandler`, where you will be able to use it.\n *\n * If you need access to all event handler parameters (not only the first one),\n * or you need to transform them in any way, you can call `fromEventPattern` with optional\n * third parameter - project function which will accept all arguments passed to\n * event handler when it is called. Whatever is returned from project function will appear on\n * resulting stream instead of usual event handlers first argument. This means\n * that default project can be thought of as function that takes its first parameter\n * and ignores the rest.\n *\n * ## Example\n * ### Emits clicks happening on the DOM document\n *\n * ```ts\n * import { fromEventPattern } from 'rxjs';\n *\n * function addClickHandler(handler) {\n * document.addEventListener('click', handler);\n * }\n *\n * function removeClickHandler(handler) {\n * document.removeEventListener('click', handler);\n * }\n *\n * const clicks = fromEventPattern(\n * addClickHandler,\n * removeClickHandler\n * );\n * clicks.subscribe(x => console.log(x));\n *\n * // Whenever you click anywhere in the browser, DOM MouseEvent\n * // object will be logged.\n * ```\n *\n * ## Example\n * ### Use with API that returns cancellation token\n *\n * ```ts\n * import { fromEventPattern } from 'rxjs';\n *\n * const token = someAPI.registerEventHandler(function() {});\n * someAPI.unregisterEventHandler(token); // this APIs cancellation method accepts\n * // not handler itself, but special token.\n *\n * const someAPIObservable = fromEventPattern(\n * function(handler) { return someAPI.registerEventHandler(handler); }, // Note that we return the token here...\n * function(handler, token) { someAPI.unregisterEventHandler(token); } // ...to then use it here.\n * );\n * ```\n *\n * ## Example\n * ### Use with project function\n *\n * ```ts\n * import { fromEventPattern } from 'rxjs';\n *\n * someAPI.registerEventHandler((eventType, eventMessage) => {\n * console.log(eventType, eventMessage); // Logs \"EVENT_TYPE\" \"EVENT_MESSAGE\" to console.\n * });\n *\n * const someAPIObservable = fromEventPattern(\n * handler => someAPI.registerEventHandler(handler),\n * handler => someAPI.unregisterEventHandler(handler)\n * (eventType, eventMessage) => eventType + \" --- \" + eventMessage // without that function only \"EVENT_TYPE\"\n * ); // would be emitted by the Observable\n *\n * someAPIObservable.subscribe(value => console.log(value));\n *\n * // Logs:\n * // \"EVENT_TYPE --- EVENT_MESSAGE\"\n * ```\n *\n * @see {@link fromEvent}\n * @see {@link bindCallback}\n * @see {@link bindNodeCallback}\n *\n * @param {function(handler: Function): any} addHandler A function that takes\n * a `handler` function as argument and attaches it somehow to the actual\n * source of events.\n * @param {function(handler: Function, token?: any): void} [removeHandler] A function that\n * takes a `handler` function as an argument and removes it from the event source. If `addHandler`\n * returns some kind of token, `removeHandler` function will have it as a second parameter.\n * @param {function(...args: any): T} [project] A function to\n * transform results. It takes the arguments from the event handler and\n * should return a single value.\n * @return {Observable} Observable which, when an event happens, emits first parameter\n * passed to registered event handler. Alternatively it emits whatever project function returns\n * at that moment.\n * @static true\n * @name fromEventPattern\n * @owner Observable\n */\n\nexport function fromEventPattern(addHandler: (handler: NodeEventHandler) => any,\n removeHandler?: (handler: NodeEventHandler, signal?: any) => void,\n resultSelector?: (...args: any[]) => T): Observable {\n\n if (resultSelector) {\n // DEPRECATED PATH\n return fromEventPattern(addHandler, removeHandler).pipe(\n map(args => isArray(args) ? resultSelector(...args) : resultSelector(args))\n );\n }\n\n return new Observable(subscriber => {\n const handler = (...e: T[]) => subscriber.next(e.length === 1 ? e[0] : e);\n\n let retValue: any;\n try {\n retValue = addHandler(handler);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n\n if (!isFunction(removeHandler)) {\n return undefined;\n }\n\n return () => removeHandler(handler, retValue) ;\n });\n}\n","import { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { identity } from '../util/identity';\nimport { SchedulerAction, SchedulerLike } from '../types';\nimport { isScheduler } from '../util/isScheduler';\n\nexport type ConditionFunc = (state: S) => boolean;\nexport type IterateFunc = (state: S) => S;\nexport type ResultFunc = (state: S) => T;\n\ninterface SchedulerState {\n needIterate?: boolean;\n state: S;\n subscriber: Subscriber;\n condition?: ConditionFunc;\n iterate: IterateFunc;\n resultSelector: ResultFunc;\n}\n\nexport interface GenerateBaseOptions {\n /**\n * Initial state.\n */\n initialState: S;\n /**\n * Condition function that accepts state and returns boolean.\n * When it returns false, the generator stops.\n * If not specified, a generator never stops.\n */\n condition?: ConditionFunc;\n /**\n * Iterate function that accepts state and returns new state.\n */\n iterate: IterateFunc;\n /**\n * SchedulerLike to use for generation process.\n * By default, a generator starts immediately.\n */\n scheduler?: SchedulerLike;\n}\n\nexport interface GenerateOptions extends GenerateBaseOptions {\n /**\n * Result selection function that accepts state and returns a value to emit.\n */\n resultSelector: ResultFunc;\n}\n\n/**\n * Generates an observable sequence by running a state-driven loop\n * producing the sequence's elements, using the specified scheduler\n * to send out observer messages.\n *\n * ![](generate.png)\n *\n * @example Produces sequence of 0, 1, 2, ... 9, then completes.\n * const res = generate(0, x => x < 10, x => x + 1, x => x);\n *\n * @example Using asap scheduler, produces sequence of 2, 3, 5, then completes.\n * const res = generate(1, x => x < 5, x => x * 2, x => x + 1, asap);\n *\n * @see {@link from}\n * @see {@link Observable}\n *\n * @param {S} initialState Initial state.\n * @param {function (state: S): boolean} condition Condition to terminate generation (upon returning false).\n * @param {function (state: S): S} iterate Iteration step function.\n * @param {function (state: S): T} resultSelector Selector function for results produced in the sequence. (deprecated)\n * @param {SchedulerLike} [scheduler] A {@link SchedulerLike} on which to run the generator loop. If not provided, defaults to emit immediately.\n * @returns {Observable} The generated sequence.\n */\n export function generate(initialState: S,\n condition: ConditionFunc,\n iterate: IterateFunc,\n resultSelector: ResultFunc,\n scheduler?: SchedulerLike): Observable;\n\n/**\n * Generates an Observable by running a state-driven loop\n * that emits an element on each iteration.\n *\n * Use it instead of nexting values in a for loop.\n *\n * \n *\n * `generate` allows you to create stream of values generated with a loop very similar to\n * traditional for loop. First argument of `generate` is a beginning value. Second argument\n * is a function that accepts this value and tests if some condition still holds. If it does,\n * loop continues, if not, it stops. Third value is a function which takes previously defined\n * value and modifies it in some way on each iteration. Note how these three parameters\n * are direct equivalents of three expressions in regular for loop: first expression\n * initializes some state (for example numeric index), second tests if loop can make next\n * iteration (for example if index is lower than 10) and third states how defined value\n * will be modified on every step (index will be incremented by one).\n *\n * Return value of a `generate` operator is an Observable that on each loop iteration\n * emits a value. First, condition function is ran. If it returned true, Observable\n * emits currently stored value (initial value at the first iteration) and then updates\n * that value with iterate function. If at some point condition returned false, Observable\n * completes at that moment.\n *\n * Optionally you can pass fourth parameter to `generate` - a result selector function which allows you\n * to immediately map value that would normally be emitted by an Observable.\n *\n * If you find three anonymous functions in `generate` call hard to read, you can provide\n * single object to the operator instead. That object has properties: `initialState`,\n * `condition`, `iterate` and `resultSelector`, which should have respective values that you\n * would normally pass to `generate`. `resultSelector` is still optional, but that form\n * of calling `generate` allows you to omit `condition` as well. If you omit it, that means\n * condition always holds, so output Observable will never complete.\n *\n * Both forms of `generate` can optionally accept a scheduler. In case of multi-parameter call,\n * scheduler simply comes as a last argument (no matter if there is resultSelector\n * function or not). In case of single-parameter call, you can provide it as a\n * `scheduler` property on object passed to the operator. In both cases scheduler decides when\n * next iteration of the loop will happen and therefore when next value will be emitted\n * by the Observable. For example to ensure that each value is pushed to the observer\n * on separate task in event loop, you could use `async` scheduler. Note that\n * by default (when no scheduler is passed) values are simply emitted synchronously.\n *\n *\n * @example Use with condition and iterate functions.\n * const generated = generate(0, x => x < 3, x => x + 1);\n *\n * generated.subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('Yo!')\n * );\n *\n * // Logs:\n * // 0\n * // 1\n * // 2\n * // \"Yo!\"\n *\n *\n * @example Use with condition, iterate and resultSelector functions.\n * const generated = generate(0, x => x < 3, x => x + 1, x => x * 1000);\n *\n * generated.subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('Yo!')\n * );\n *\n * // Logs:\n * // 0\n * // 1000\n * // 2000\n * // \"Yo!\"\n *\n *\n * @example Use with options object.\n * const generated = generate({\n * initialState: 0,\n * condition(value) { return value < 3; },\n * iterate(value) { return value + 1; },\n * resultSelector(value) { return value * 1000; }\n * });\n *\n * generated.subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('Yo!')\n * );\n *\n * // Logs:\n * // 0\n * // 1000\n * // 2000\n * // \"Yo!\"\n *\n * @example Use options object without condition function.\n * const generated = generate({\n * initialState: 0,\n * iterate(value) { return value + 1; },\n * resultSelector(value) { return value * 1000; }\n * });\n *\n * generated.subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('Yo!') // This will never run.\n * );\n *\n * // Logs:\n * // 0\n * // 1000\n * // 2000\n * // 3000\n * // ...and never stops.\n *\n *\n * @see {@link from}\n * @see {@link index/Observable.create}\n *\n * @param {S} initialState Initial state.\n * @param {function (state: S): boolean} condition Condition to terminate generation (upon returning false).\n * @param {function (state: S): S} iterate Iteration step function.\n * @param {function (state: S): T} [resultSelector] Selector function for results produced in the sequence.\n * @param {Scheduler} [scheduler] A {@link Scheduler} on which to run the generator loop. If not provided, defaults to emitting immediately.\n * @return {Observable} The generated sequence.\n */\nexport function generate(initialState: S,\n condition: ConditionFunc,\n iterate: IterateFunc,\n scheduler?: SchedulerLike): Observable;\n\n/**\n * Generates an observable sequence by running a state-driven loop\n * producing the sequence's elements, using the specified scheduler\n * to send out observer messages.\n * The overload accepts options object that might contain initial state, iterate,\n * condition and scheduler.\n *\n * ![](generate.png)\n *\n * @example Produces sequence of 0, 1, 2, ... 9, then completes.\n * const res = generate({\n * initialState: 0,\n * condition: x => x < 10,\n * iterate: x => x + 1,\n * });\n *\n * @see {@link from}\n * @see {@link Observable}\n *\n * @param {GenerateBaseOptions} options Object that must contain initialState, iterate and might contain condition and scheduler.\n * @returns {Observable} The generated sequence.\n */\nexport function generate(options: GenerateBaseOptions): Observable;\n\n/**\n * Generates an observable sequence by running a state-driven loop\n * producing the sequence's elements, using the specified scheduler\n * to send out observer messages.\n * The overload accepts options object that might contain initial state, iterate,\n * condition, result selector and scheduler.\n *\n * ![](generate.png)\n *\n * @example Produces sequence of 0, 1, 2, ... 9, then completes.\n * const res = generate({\n * initialState: 0,\n * condition: x => x < 10,\n * iterate: x => x + 1,\n * resultSelector: x => x,\n * });\n *\n * @see {@link from}\n * @see {@link Observable}\n *\n * @param {GenerateOptions} options Object that must contain initialState, iterate, resultSelector and might contain condition and scheduler.\n * @returns {Observable} The generated sequence.\n */\nexport function generate(options: GenerateOptions): Observable;\n\nexport function generate(initialStateOrOptions: S | GenerateOptions,\n condition?: ConditionFunc,\n iterate?: IterateFunc,\n resultSelectorOrObservable?: (ResultFunc) | SchedulerLike,\n scheduler?: SchedulerLike): Observable {\n\n let resultSelector: ResultFunc;\n let initialState: S;\n\n if (arguments.length == 1) {\n const options = initialStateOrOptions as GenerateOptions;\n initialState = options.initialState;\n condition = options.condition;\n iterate = options.iterate;\n resultSelector = options.resultSelector || identity as ResultFunc;\n scheduler = options.scheduler;\n } else if (resultSelectorOrObservable === undefined || isScheduler(resultSelectorOrObservable)) {\n initialState = initialStateOrOptions as S;\n resultSelector = identity as ResultFunc;\n scheduler = resultSelectorOrObservable as SchedulerLike;\n } else {\n initialState = initialStateOrOptions as S;\n resultSelector = resultSelectorOrObservable as ResultFunc;\n }\n\n return new Observable(subscriber => {\n let state = initialState;\n if (scheduler) {\n return scheduler.schedule>(dispatch, 0, {\n subscriber,\n iterate,\n condition,\n resultSelector,\n state\n });\n }\n\n do {\n if (condition) {\n let conditionResult: boolean;\n try {\n conditionResult = condition(state);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n if (!conditionResult) {\n subscriber.complete();\n break;\n }\n }\n let value: T;\n try {\n value = resultSelector(state);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n subscriber.next(value);\n if (subscriber.closed) {\n break;\n }\n try {\n state = iterate(state);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n } while (true);\n\n return undefined;\n });\n}\n\nfunction dispatch(this: SchedulerAction>, state: SchedulerState) {\n const { subscriber, condition } = state;\n if (subscriber.closed) {\n return undefined;\n }\n if (state.needIterate) {\n try {\n state.state = state.iterate(state.state);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n } else {\n state.needIterate = true;\n }\n if (condition) {\n let conditionResult: boolean;\n try {\n conditionResult = condition(state.state);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n if (!conditionResult) {\n subscriber.complete();\n return undefined;\n }\n if (subscriber.closed) {\n return undefined;\n }\n }\n let value: T;\n try {\n value = state.resultSelector(state.state);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n if (subscriber.closed) {\n return undefined;\n }\n subscriber.next(value);\n if (subscriber.closed) {\n return undefined;\n }\n return this.schedule(state);\n}\n","import { Observable } from '../Observable';\nimport { defer } from './defer';\nimport { EMPTY } from './empty';\nimport { SubscribableOrPromise } from '../types';\n\n/**\n * Decides at subscription time which Observable will actually be subscribed.\n *\n * `If` statement for Observables.\n *\n * `iif` accepts a condition function and two Observables. When\n * an Observable returned by the operator is subscribed, condition function will be called.\n * Based on what boolean it returns at that moment, consumer will subscribe either to\n * the first Observable (if condition was true) or to the second (if condition was false). Condition\n * function may also not return anything - in that case condition will be evaluated as false and\n * second Observable will be subscribed.\n *\n * Note that Observables for both cases (true and false) are optional. If condition points to an Observable that\n * was left undefined, resulting stream will simply complete immediately. That allows you to, rather\n * than controlling which Observable will be subscribed, decide at runtime if consumer should have access\n * to given Observable or not.\n *\n * If you have more complex logic that requires decision between more than two Observables, {@link defer}\n * will probably be a better choice. Actually `iif` can be easily implemented with {@link defer}\n * and exists only for convenience and readability reasons.\n *\n *\n * ## Examples\n * ### Change at runtime which Observable will be subscribed\n * ```ts\n * import { iif, of } from 'rxjs';\n *\n * let subscribeToFirst;\n * const firstOrSecond = iif(\n * () => subscribeToFirst,\n * of('first'),\n * of('second'),\n * );\n *\n * subscribeToFirst = true;\n * firstOrSecond.subscribe(value => console.log(value));\n *\n * // Logs:\n * // \"first\"\n *\n * subscribeToFirst = false;\n * firstOrSecond.subscribe(value => console.log(value));\n *\n * // Logs:\n * // \"second\"\n *\n * ```\n *\n * ### Control an access to an Observable\n * ```ts\n * let accessGranted;\n * const observableIfYouHaveAccess = iif(\n * () => accessGranted,\n * of('It seems you have an access...'), // Note that only one Observable is passed to the operator.\n * );\n *\n * accessGranted = true;\n * observableIfYouHaveAccess.subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('The end'),\n * );\n *\n * // Logs:\n * // \"It seems you have an access...\"\n * // \"The end\"\n *\n * accessGranted = false;\n * observableIfYouHaveAccess.subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('The end'),\n * );\n *\n * // Logs:\n * // \"The end\"\n * ```\n *\n * @see {@link defer}\n *\n * @param {function(): boolean} condition Condition which Observable should be chosen.\n * @param {Observable} [trueObservable] An Observable that will be subscribed if condition is true.\n * @param {Observable} [falseObservable] An Observable that will be subscribed if condition is false.\n * @return {Observable} Either first or second Observable, depending on condition.\n * @static true\n * @name iif\n * @owner Observable\n*/\nexport function iif(\n condition: () => boolean,\n trueResult: SubscribableOrPromise = EMPTY,\n falseResult: SubscribableOrPromise = EMPTY\n): Observable {\n return defer(() => condition() ? trueResult : falseResult);\n}\n","import { isArray } from './isArray';\n\nexport function isNumeric(val: any): val is number | string {\n // parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n // ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n // subtraction forces infinities to NaN\n // adding 1 corrects loss of precision from parseFloat (#15100)\n return !isArray(val) && (val - parseFloat(val) + 1) >= 0;\n}\n","import { Observable } from '../Observable';\nimport { async } from '../scheduler/async';\nimport { SchedulerAction, SchedulerLike } from '../types';\nimport { isNumeric } from '../util/isNumeric';\nimport { Subscriber } from '../Subscriber';\n\n/**\n * Creates an Observable that emits sequential numbers every specified\n * interval of time, on a specified {@link SchedulerLike}.\n *\n * Emits incremental numbers periodically in time.\n * \n *\n * ![](interval.png)\n *\n * `interval` returns an Observable that emits an infinite sequence of\n * ascending integers, with a constant interval of time of your choosing\n * between those emissions. The first emission is not sent immediately, but\n * only after the first period has passed. By default, this operator uses the\n * `async` {@link SchedulerLike} to provide a notion of time, but you may pass any\n * {@link SchedulerLike} to it.\n *\n * ## Example\n * Emits ascending numbers, one every second (1000ms) up to the number 3\n * ```ts\n * import { interval } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const numbers = interval(1000);\n *\n * const takeFourNumbers = numbers.pipe(take(4));\n *\n * takeFourNumbers.subscribe(x => console.log('Next: ', x));\n *\n * // Logs:\n * // Next: 0\n * // Next: 1\n * // Next: 2\n * // Next: 3\n * ```\n *\n * @see {@link timer}\n * @see {@link delay}\n *\n * @param {number} [period=0] The interval size in milliseconds (by default)\n * or the time unit determined by the scheduler's clock.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for scheduling\n * the emission of values, and providing a notion of \"time\".\n * @return {Observable} An Observable that emits a sequential number each time\n * interval.\n * @static true\n * @name interval\n * @owner Observable\n */\nexport function interval(period = 0,\n scheduler: SchedulerLike = async): Observable {\n if (!isNumeric(period) || period < 0) {\n period = 0;\n }\n\n if (!scheduler || typeof scheduler.schedule !== 'function') {\n scheduler = async;\n }\n\n return new Observable(subscriber => {\n subscriber.add(\n scheduler.schedule(dispatch, period, { subscriber, counter: 0, period })\n );\n return subscriber;\n });\n}\n\nfunction dispatch(this: SchedulerAction, state: IntervalState) {\n const { subscriber, counter, period } = state;\n subscriber.next(counter);\n this.schedule({ subscriber, counter: counter + 1, period }, period);\n}\n\ninterface IntervalState {\n subscriber: Subscriber;\n counter: number;\n period: number;\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput, SchedulerLike} from '../types';\nimport { isScheduler } from '../util/isScheduler';\nimport { mergeAll } from '../operators/mergeAll';\nimport { fromArray } from './fromArray';\n\n/* tslint:disable:max-line-length */\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, concurrent: number, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, concurrent: number, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, concurrent: number, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, concurrent: number, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, concurrent: number, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, concurrent: number, scheduler: SchedulerLike): Observable;\n\nexport function merge(v1: ObservableInput): Observable;\nexport function merge(v1: ObservableInput, concurrent?: number): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, concurrent?: number): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, concurrent?: number): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, concurrent?: number): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, concurrent?: number): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, concurrent?: number): Observable;\nexport function merge(...observables: (ObservableInput | number)[]): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(...observables: (ObservableInput | SchedulerLike | number)[]): Observable;\nexport function merge(...observables: (ObservableInput | number)[]): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(...observables: (ObservableInput | SchedulerLike | number)[]): Observable;\n/* tslint:enable:max-line-length */\n/**\n * Creates an output Observable which concurrently emits all values from every\n * given input Observable.\n *\n * Flattens multiple Observables together by blending\n * their values into one Observable.\n *\n * ![](merge.png)\n *\n * `merge` subscribes to each given input Observable (as arguments), and simply\n * forwards (without doing any transformation) all the values from all the input\n * Observables to the output Observable. The output Observable only completes\n * once all input Observables have completed. Any error delivered by an input\n * Observable will be immediately emitted on the output Observable.\n *\n * ## Examples\n * ### Merge together two Observables: 1s interval and clicks\n * ```ts\n * import { merge, fromEvent, interval } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const timer = interval(1000);\n * const clicksOrTimer = merge(clicks, timer);\n * clicksOrTimer.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // timer will emit ascending values, one every second(1000ms) to console\n * // clicks logs MouseEvents to console everytime the \"document\" is clicked\n * // Since the two streams are merged you see these happening\n * // as they occur.\n * ```\n *\n * ### Merge together 3 Observables, but only 2 run concurrently\n * ```ts\n * import { merge, interval } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const timer1 = interval(1000).pipe(take(10));\n * const timer2 = interval(2000).pipe(take(6));\n * const timer3 = interval(500).pipe(take(10));\n * const concurrent = 2; // the argument\n * const merged = merge(timer1, timer2, timer3, concurrent);\n * merged.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // - First timer1 and timer2 will run concurrently\n * // - timer1 will emit a value every 1000ms for 10 iterations\n * // - timer2 will emit a value every 2000ms for 6 iterations\n * // - after timer1 hits its max iteration, timer2 will\n * // continue, and timer3 will start to run concurrently with timer2\n * // - when timer2 hits its max iteration it terminates, and\n * // timer3 will continue to emit a value every 500ms until it is complete\n * ```\n *\n * @see {@link mergeAll}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n *\n * @param {...ObservableInput} observables Input Observables to merge together.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @param {SchedulerLike} [scheduler=null] The {@link SchedulerLike} to use for managing\n * concurrency of input Observables.\n * @return {Observable} an Observable that emits items that are the result of\n * every input Observable.\n * @static true\n * @name merge\n * @owner Observable\n */\nexport function merge(...observables: Array | SchedulerLike | number>): Observable {\n let concurrent = Number.POSITIVE_INFINITY;\n let scheduler: SchedulerLike = null;\n let last: any = observables[observables.length - 1];\n if (isScheduler(last)) {\n scheduler = observables.pop();\n if (observables.length > 1 && typeof observables[observables.length - 1] === 'number') {\n concurrent = observables.pop();\n }\n } else if (typeof last === 'number') {\n concurrent = observables.pop();\n }\n\n if (scheduler === null && observables.length === 1 && observables[0] instanceof Observable) {\n return >observables[0];\n }\n\n return mergeAll(concurrent)(fromArray(observables, scheduler));\n}\n","import { Observable } from '../Observable';\nimport { noop } from '../util/noop';\n\n/**\n * An Observable that emits no items to the Observer and never completes.\n *\n * ![](never.png)\n *\n * A simple Observable that emits neither values nor errors nor the completion\n * notification. It can be used for testing purposes or for composing with other\n * Observables. Please note that by never emitting a complete notification, this\n * Observable keeps the subscription from being disposed automatically.\n * Subscriptions need to be manually disposed.\n *\n * ## Example\n * ### Emit the number 7, then never emit anything else (not even complete)\n * ```ts\n * import { NEVER } from 'rxjs';\n * import { startWith } from 'rxjs/operators';\n *\n * function info() {\n * console.log('Will not be called');\n * }\n * const result = NEVER.pipe(startWith(7));\n * result.subscribe(x => console.log(x), info, info);\n *\n * ```\n *\n * @see {@link Observable}\n * @see {@link index/EMPTY}\n * @see {@link of}\n * @see {@link throwError}\n */\nexport const NEVER = new Observable(noop);\n\n/**\n * @deprecated Deprecated in favor of using {@link NEVER} constant.\n */\nexport function never () {\n return NEVER;\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput } from '../types';\nimport { from } from './from';\nimport { isArray } from '../util/isArray';\nimport { EMPTY } from './empty';\n\n/* tslint:disable:max-line-length */\nexport function onErrorResumeNext(v: ObservableInput): Observable;\nexport function onErrorResumeNext(v2: ObservableInput, v3: ObservableInput): Observable;\nexport function onErrorResumeNext(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): Observable;\nexport function onErrorResumeNext(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): Observable;\nexport function onErrorResumeNext(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): Observable;\n\nexport function onErrorResumeNext(...observables: Array | ((...values: Array) => R)>): Observable;\nexport function onErrorResumeNext(array: ObservableInput[]): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * When any of the provided Observable emits an complete or error notification, it immediately subscribes to the next one\n * that was passed.\n *\n * Execute series of Observables no matter what, even if it means swallowing errors.\n *\n * ![](onErrorResumeNext.png)\n *\n * `onErrorResumeNext` Will subscribe to each observable source it is provided, in order.\n * If the source it's subscribed to emits an error or completes, it will move to the next source\n * without error.\n *\n * If `onErrorResumeNext` is provided no arguments, or a single, empty array, it will return {@link index/EMPTY}.\n *\n * `onErrorResumeNext` is basically {@link concat}, only it will continue, even if one of its\n * sources emits an error.\n *\n * Note that there is no way to handle any errors thrown by sources via the result of\n * `onErrorResumeNext`. If you want to handle errors thrown in any given source, you can\n * always use the {@link catchError} operator on them before passing them into `onErrorResumeNext`.\n *\n * ## Example\n * Subscribe to the next Observable after map fails\n * ```ts\n * import { onErrorResumeNext, of } from 'rxjs';\n * import { map } from 'rxjs/operators';\n *\n * onErrorResumeNext(\n * of(1, 2, 3, 0).pipe(\n * map(x => {\n * if (x === 0) throw Error();\n * return 10 / x;\n * })\n * ),\n * of(1, 2, 3),\n * )\n * .subscribe(\n * val => console.log(val),\n * err => console.log(err), // Will never be called.\n * () => console.log('done'),\n * );\n *\n * // Logs:\n * // 10\n * // 5\n * // 3.3333333333333335\n * // 1\n * // 2\n * // 3\n * // \"done\"\n * ```\n *\n * @see {@link concat}\n * @see {@link catchError}\n *\n * @param {...ObservableInput} sources Observables (or anything that *is* observable) passed either directly or as an array.\n * @return {Observable} An Observable that concatenates all sources, one after the other,\n * ignoring all errors, such that any error causes it to move on to the next source.\n */\nexport function onErrorResumeNext(...sources: Array |\n Array> |\n ((...values: Array) => R)>): Observable {\n\n if (sources.length === 0) {\n return EMPTY;\n }\n\n const [ first, ...remainder ] = sources;\n\n if (sources.length === 1 && isArray(first)) {\n return onErrorResumeNext(...first);\n }\n\n return new Observable(subscriber => {\n const subNext = () => subscriber.add(\n onErrorResumeNext(...remainder).subscribe(subscriber)\n );\n\n return from(first).subscribe({\n next(value) { subscriber.next(value); },\n error: subNext,\n complete: subNext,\n });\n });\n}\n","import { Observable } from '../Observable';\nimport { SchedulerAction, SchedulerLike } from '../types';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\n\n/**\n * Convert an object into an Observable of `[key, value]` pairs.\n *\n * Turn entries of an object into a stream.\n *\n * \n *\n * `pairs` takes an arbitrary object and returns an Observable that emits arrays. Each\n * emitted array has exactly two elements - the first is a key from the object\n * and the second is a value corresponding to that key. Keys are extracted from\n * an object via `Object.keys` function, which means that they will be only\n * enumerable keys that are present on an object directly - not ones inherited\n * via prototype chain.\n *\n * By default these arrays are emitted synchronously. To change that you can\n * pass a {@link SchedulerLike} as a second argument to `pairs`.\n *\n * @example Converts a javascript object to an Observable\n * ```ts\n * import { pairs } from 'rxjs';\n *\n * const obj = {\n * foo: 42,\n * bar: 56,\n * baz: 78\n * };\n *\n * pairs(obj)\n * .subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('the end!')\n * );\n *\n * // Logs:\n * // [\"foo\", 42],\n * // [\"bar\", 56],\n * // [\"baz\", 78],\n * // \"the end!\"\n * ```\n *\n * @param {Object} obj The object to inspect and turn into an\n * Observable sequence.\n * @param {Scheduler} [scheduler] An optional IScheduler to schedule\n * when resulting Observable will emit values.\n * @returns {(Observable>)} An observable sequence of\n * [key, value] pairs from the object.\n */\nexport function pairs(obj: Object, scheduler?: SchedulerLike): Observable<[string, T]> {\n if (!scheduler) {\n return new Observable<[string, T]>(subscriber => {\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length && !subscriber.closed; i++) {\n const key = keys[i];\n if (obj.hasOwnProperty(key)) {\n subscriber.next([key, obj[key]]);\n }\n }\n subscriber.complete();\n });\n } else {\n return new Observable<[string, T]>(subscriber => {\n const keys = Object.keys(obj);\n const subscription = new Subscription();\n subscription.add(\n scheduler.schedule<{ keys: string[], index: number, subscriber: Subscriber<[string, T]>, subscription: Subscription, obj: Object }>\n (dispatch, 0, { keys, index: 0, subscriber, subscription, obj }));\n return subscription;\n });\n }\n}\n\n/** @internal */\nexport function dispatch(this: SchedulerAction,\n state: { keys: string[], index: number, subscriber: Subscriber<[string, T]>, subscription: Subscription, obj: Object }) {\n const { keys, index, subscriber, subscription, obj } = state;\n if (!subscriber.closed) {\n if (index < keys.length) {\n const key = keys[index];\n subscriber.next([key, obj[key]]);\n subscription.add(this.schedule({ keys, index: index + 1, subscriber, subscription, obj }));\n } else {\n subscriber.complete();\n }\n }\n}\n","export function not(pred: Function, thisArg: any): Function {\n function notPred(): any {\n return !(( notPred).pred.apply(( notPred).thisArg, arguments));\n }\n ( notPred).pred = pred;\n ( notPred).thisArg = thisArg;\n return notPred;\n}","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { OperatorFunction, MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function filter(predicate: (value: T, index: number) => value is S,\n thisArg?: any): OperatorFunction;\nexport function filter(predicate: (value: T, index: number) => boolean,\n thisArg?: any): MonoTypeOperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Filter items emitted by the source Observable by only emitting those that\n * satisfy a specified predicate.\n *\n * Like\n * [Array.prototype.filter()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter),\n * it only emits a value from the source if it passes a criterion function.\n *\n * ![](filter.png)\n *\n * Similar to the well-known `Array.prototype.filter` method, this operator\n * takes values from the source Observable, passes them through a `predicate`\n * function and only emits those values that yielded `true`.\n *\n * ## Example\n * Emit only click events whose target was a DIV element\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { filter } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const clicksOnDivs = clicks.pipe(filter(ev => ev.target.tagName === 'DIV'));\n * clicksOnDivs.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link distinct}\n * @see {@link distinctUntilChanged}\n * @see {@link distinctUntilKeyChanged}\n * @see {@link ignoreElements}\n * @see {@link partition}\n * @see {@link skip}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates each value emitted by the source Observable. If it returns `true`,\n * the value is emitted, if `false` the value is not passed to the output\n * Observable. The `index` parameter is the number `i` for the i-th source\n * emission that has happened since the subscription, starting from the number\n * `0`.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {Observable} An Observable of values from the source that were\n * allowed by the `predicate` function.\n * @method filter\n * @owner Observable\n */\nexport function filter(predicate: (value: T, index: number) => boolean,\n thisArg?: any): MonoTypeOperatorFunction {\n return function filterOperatorFunction(source: Observable): Observable {\n return source.lift(new FilterOperator(predicate, thisArg));\n };\n}\n\nclass FilterOperator implements Operator {\n constructor(private predicate: (value: T, index: number) => boolean,\n private thisArg?: any) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new FilterSubscriber(subscriber, this.predicate, this.thisArg));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass FilterSubscriber extends Subscriber {\n\n count: number = 0;\n\n constructor(destination: Subscriber,\n private predicate: (value: T, index: number) => boolean,\n private thisArg: any) {\n super(destination);\n }\n\n // the try catch block below is left specifically for\n // optimization and perf reasons. a tryCatcher is not necessary here.\n protected _next(value: T) {\n let result: any;\n try {\n result = this.predicate.call(this.thisArg, value, this.count++);\n } catch (err) {\n this.destination.error(err);\n return;\n }\n if (result) {\n this.destination.next(value);\n }\n }\n}\n","import { not } from '../util/not';\nimport { subscribeTo } from '../util/subscribeTo';\nimport { filter } from '../operators/filter';\nimport { ObservableInput } from '../types';\nimport { Observable } from '../Observable';\n\n/**\n * Splits the source Observable into two, one with values that satisfy a\n * predicate, and another with values that don't satisfy the predicate.\n *\n * It's like {@link filter}, but returns two Observables:\n * one like the output of {@link filter}, and the other with values that did not\n * pass the condition.\n *\n * ![](partition.png)\n *\n * `partition` outputs an array with two Observables that partition the values\n * from the source Observable through the given `predicate` function. The first\n * Observable in that array emits source values for which the predicate argument\n * returns true. The second Observable emits source values for which the\n * predicate returns false. The first behaves like {@link filter} and the second\n * behaves like {@link filter} with the predicate negated.\n *\n * ## Example\n * Partition a set of numbers into odds and evens observables\n * ```ts\n * import { of, partition } from 'rxjs';\n *\n * const observableValues = of(1, 2, 3, 4, 5, 6);\n * const [evens$, odds$] = partition(observableValues, (value, index) => value % 2 === 0);\n *\n * odds$.subscribe(x => console.log('odds', x));\n * evens$.subscribe(x => console.log('evens', x));\n *\n * // Logs:\n * // odds 1\n * // odds 3\n * // odds 5\n * // evens 2\n * // evens 4\n * // evens 6\n * ```\n *\n * @see {@link filter}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates each value emitted by the source Observable. If it returns `true`,\n * the value is emitted on the first Observable in the returned array, if\n * `false` the value is emitted on the second Observable in the array. The\n * `index` parameter is the number `i` for the i-th source emission that has\n * happened since the subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {[Observable, Observable]} An array with two Observables: one\n * with values that passed the predicate, and another with values that did not\n * pass the predicate.\n */\nexport function partition(\n source: ObservableInput,\n predicate: (value: T, index: number) => boolean,\n thisArg?: any\n): [Observable, Observable] {\n return [\n filter(predicate, thisArg)(new Observable(subscribeTo(source))),\n filter(not(predicate, thisArg) as any)(new Observable(subscribeTo(source)))\n ] as [Observable, Observable];\n}\n","import { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { fromArray } from './fromArray';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { TeardownLogic, ObservableInput } from '../types';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\n\n// tslint:disable:max-line-length\nexport function race(arg: [ObservableInput]): Observable;\nexport function race(arg: [ObservableInput, ObservableInput]): Observable;\nexport function race(arg: [ObservableInput, ObservableInput, ObservableInput]): Observable;\nexport function race(arg: [ObservableInput, ObservableInput, ObservableInput, ObservableInput]): Observable;\nexport function race(arg: [ObservableInput, ObservableInput, ObservableInput, ObservableInput, ObservableInput]): Observable;\nexport function race(arg: ObservableInput[]): Observable;\nexport function race(arg: ObservableInput[]): Observable<{}>;\n\nexport function race(a: ObservableInput): Observable;\nexport function race(a: ObservableInput, b: ObservableInput): Observable;\nexport function race(a: ObservableInput, b: ObservableInput, c: ObservableInput): Observable;\nexport function race(a: ObservableInput, b: ObservableInput, c: ObservableInput, d: ObservableInput): Observable;\nexport function race(a: ObservableInput, b: ObservableInput, c: ObservableInput, d: ObservableInput, e: ObservableInput): Observable;\n// tslint:enable:max-line-length\n\nexport function race(observables: ObservableInput[]): Observable;\nexport function race(observables: ObservableInput[]): Observable<{}>;\nexport function race(...observables: ObservableInput[]): Observable;\nexport function race(...observables: ObservableInput[]): Observable<{}>;\n\n/**\n * Returns an Observable that mirrors the first source Observable to emit an item.\n *\n * ## Example\n * ### Subscribes to the observable that was the first to start emitting.\n *\n * ```ts\n * import { race, interval } from 'rxjs';\n * import { mapTo } from 'rxjs/operators';\n *\n * const obs1 = interval(1000).pipe(mapTo('fast one'));\n * const obs2 = interval(3000).pipe(mapTo('medium one'));\n * const obs3 = interval(5000).pipe(mapTo('slow one'));\n *\n * race(obs3, obs1, obs2)\n * .subscribe(\n * winner => console.log(winner)\n * );\n *\n * // result:\n * // a series of 'fast one'\n * ```\n *\n * @param {...Observables} ...observables sources used to race for which Observable emits first.\n * @return {Observable} an Observable that mirrors the output of the first Observable to emit an item.\n * @static true\n * @name race\n * @owner Observable\n */\nexport function race(...observables: ObservableInput[]): Observable {\n // if the only argument is an array, it was most likely called with\n // `race([obs1, obs2, ...])`\n if (observables.length === 1) {\n if (isArray(observables[0])) {\n observables = observables[0] as Observable[];\n } else {\n return observables[0] as Observable;\n }\n }\n\n return fromArray(observables, undefined).lift(new RaceOperator());\n}\n\nexport class RaceOperator implements Operator {\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new RaceSubscriber(subscriber));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class RaceSubscriber extends OuterSubscriber {\n private hasFirst: boolean = false;\n private observables: Observable[] = [];\n private subscriptions: Subscription[] = [];\n\n constructor(destination: Subscriber) {\n super(destination);\n }\n\n protected _next(observable: any): void {\n this.observables.push(observable);\n }\n\n protected _complete() {\n const observables = this.observables;\n const len = observables.length;\n\n if (len === 0) {\n this.destination.complete!();\n } else {\n for (let i = 0; i < len && !this.hasFirst; i++) {\n const observable = observables[i];\n const subscription = subscribeToResult(this, observable, undefined, i)!;\n\n if (this.subscriptions) {\n this.subscriptions.push(subscription);\n }\n this.add(subscription);\n }\n this.observables = null!;\n }\n }\n\n notifyNext(_outerValue: T, innerValue: T,\n outerIndex: number): void {\n if (!this.hasFirst) {\n this.hasFirst = true;\n\n for (let i = 0; i < this.subscriptions.length; i++) {\n if (i !== outerIndex) {\n let subscription = this.subscriptions[i];\n\n subscription.unsubscribe();\n this.remove(subscription);\n }\n }\n\n this.subscriptions = null!;\n }\n\n this.destination.next!(innerValue);\n }\n}\n","import { SchedulerAction, SchedulerLike } from '../types';\nimport { Observable } from '../Observable';\n\n/**\n * Creates an Observable that emits a sequence of numbers within a specified\n * range.\n *\n * Emits a sequence of numbers in a range.\n *\n * ![](range.png)\n *\n * `range` operator emits a range of sequential integers, in order, where you\n * select the `start` of the range and its `length`. By default, uses no\n * {@link SchedulerLike} and just delivers the notifications synchronously, but may use\n * an optional {@link SchedulerLike} to regulate those deliveries.\n *\n * ## Example\n * Emits the numbers 1 to 10\n * ```ts\n * import { range } from 'rxjs';\n *\n * const numbers = range(1, 10);\n * numbers.subscribe(x => console.log(x));\n * ```\n * @see {@link timer}\n * @see {@link index/interval}\n *\n * @param {number} [start=0] The value of the first integer in the sequence.\n * @param {number} count The number of sequential integers to generate.\n * @param {SchedulerLike} [scheduler] A {@link SchedulerLike} to use for scheduling\n * the emissions of the notifications.\n * @return {Observable} An Observable of numbers that emits a finite range of\n * sequential integers.\n * @static true\n * @name range\n * @owner Observable\n */\nexport function range(start: number = 0,\n count?: number,\n scheduler?: SchedulerLike): Observable {\n return new Observable(subscriber => {\n if (count === undefined) {\n count = start;\n start = 0;\n }\n\n let index = 0;\n let current = start;\n\n if (scheduler) {\n return scheduler.schedule(dispatch, 0, {\n index, count, start, subscriber\n });\n } else {\n do {\n if (index++ >= count) {\n subscriber.complete();\n break;\n }\n subscriber.next(current++);\n if (subscriber.closed) {\n break;\n }\n } while (true);\n }\n\n return undefined;\n });\n}\n\n/** @internal */\nexport function dispatch(this: SchedulerAction, state: any) {\n const { start, index, count, subscriber } = state;\n\n if (index >= count) {\n subscriber.complete();\n return;\n }\n\n subscriber.next(start);\n\n if (subscriber.closed) {\n return;\n }\n\n state.index = index + 1;\n state.start = start + 1;\n\n this.schedule(state);\n}\n","import { Observable } from '../Observable';\nimport { SchedulerAction, SchedulerLike } from '../types';\nimport { async } from '../scheduler/async';\nimport { isNumeric } from '../util/isNumeric';\nimport { isScheduler } from '../util/isScheduler';\nimport { Subscriber } from '../Subscriber';\n\n/**\n * Creates an Observable that starts emitting after an `dueTime` and\n * emits ever increasing numbers after each `period` of time thereafter.\n *\n * Its like {@link index/interval}, but you can specify when\n * should the emissions start.\n *\n * ![](timer.png)\n *\n * `timer` returns an Observable that emits an infinite sequence of ascending\n * integers, with a constant interval of time, `period` of your choosing\n * between those emissions. The first emission happens after the specified\n * `dueTime`. The initial delay may be a `Date`. By default, this\n * operator uses the {@link asyncScheduler} {@link SchedulerLike} to provide a notion of time, but you\n * may pass any {@link SchedulerLike} to it. If `period` is not specified, the output\n * Observable emits only one value, `0`. Otherwise, it emits an infinite\n * sequence.\n *\n * ## Examples\n * ### Emits ascending numbers, one every second (1000ms), starting after 3 seconds\n * ```ts\n * import { timer } from 'rxjs';\n *\n * const numbers = timer(3000, 1000);\n * numbers.subscribe(x => console.log(x));\n * ```\n *\n * ### Emits one number after five seconds\n * ```ts\n * import { timer } from 'rxjs';\n *\n * const numbers = timer(5000);\n * numbers.subscribe(x => console.log(x));\n * ```\n * @see {@link index/interval}\n * @see {@link delay}\n *\n * @param {number|Date} [dueTime] The initial delay time specified as a Date object or as an integer denoting\n * milliseconds to wait before emitting the first value of 0`.\n * @param {number|SchedulerLike} [periodOrScheduler] The period of time between emissions of the\n * subsequent numbers.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for scheduling\n * the emission of values, and providing a notion of \"time\".\n * @return {Observable} An Observable that emits a `0` after the\n * `dueTime` and ever increasing numbers after each `period` of time\n * thereafter.\n * @static true\n * @name timer\n * @owner Observable\n */\nexport function timer(dueTime: number | Date = 0,\n periodOrScheduler?: number | SchedulerLike,\n scheduler?: SchedulerLike): Observable {\n let period = -1;\n if (isNumeric(periodOrScheduler)) {\n period = Number(periodOrScheduler) < 1 && 1 || Number(periodOrScheduler);\n } else if (isScheduler(periodOrScheduler)) {\n scheduler = periodOrScheduler as any;\n }\n\n if (!isScheduler(scheduler)) {\n scheduler = async;\n }\n\n return new Observable(subscriber => {\n const due = isNumeric(dueTime)\n ? (dueTime as number)\n : (+dueTime - scheduler.now());\n\n return scheduler.schedule(dispatch, due, {\n index: 0, period, subscriber\n });\n });\n}\n\ninterface TimerState {\n index: number;\n period: number;\n subscriber: Subscriber;\n}\n\nfunction dispatch(this: SchedulerAction, state: TimerState) {\n const { index, period, subscriber } = state;\n subscriber.next(index);\n\n if (subscriber.closed) {\n return;\n } else if (period === -1) {\n return subscriber.complete();\n }\n\n state.index = index + 1;\n this.schedule(state, period);\n}\n","import { Observable } from '../Observable';\nimport { Unsubscribable, ObservableInput } from '../types';\nimport { from } from './from'; // from from from! LAWL\nimport { EMPTY } from './empty';\n\n/**\n * Creates an Observable that uses a resource which will be disposed at the same time as the Observable.\n *\n * Use it when you catch yourself cleaning up after an Observable.\n *\n * `using` is a factory operator, which accepts two functions. First function returns a disposable resource.\n * It can be an arbitrary object that implements `unsubscribe` method. Second function will be injected with\n * that object and should return an Observable. That Observable can use resource object during its execution.\n * Both functions passed to `using` will be called every time someone subscribes - neither an Observable nor\n * resource object will be shared in any way between subscriptions.\n *\n * When Observable returned by `using` is subscribed, Observable returned from the second function will be subscribed\n * as well. All its notifications (nexted values, completion and error events) will be emitted unchanged by the output\n * Observable. If however someone unsubscribes from the Observable or source Observable completes or errors by itself,\n * the `unsubscribe` method on resource object will be called. This can be used to do any necessary clean up, which\n * otherwise would have to be handled by hand. Note that complete or error notifications are not emitted when someone\n * cancels subscription to an Observable via `unsubscribe`, so `using` can be used as a hook, allowing you to make\n * sure that all resources which need to exist during an Observable execution will be disposed at appropriate time.\n *\n * @see {@link defer}\n *\n * @param {function(): ISubscription} resourceFactory A function which creates any resource object\n * that implements `unsubscribe` method.\n * @param {function(resource: ISubscription): Observable} observableFactory A function which\n * creates an Observable, that can use injected resource object.\n * @return {Observable} An Observable that behaves the same as Observable returned by `observableFactory`, but\n * which - when completed, errored or unsubscribed - will also call `unsubscribe` on created resource object.\n */\nexport function using(resourceFactory: () => Unsubscribable | void,\n observableFactory: (resource: Unsubscribable | void) => ObservableInput | void): Observable {\n return new Observable(subscriber => {\n let resource: Unsubscribable | void;\n\n try {\n resource = resourceFactory();\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n\n let result: ObservableInput | void;\n try {\n result = observableFactory(resource);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n\n const source = result ? from(result) : EMPTY;\n const subscription = source.subscribe(subscriber);\n return () => {\n subscription.unsubscribe();\n if (resource) {\n resource.unsubscribe();\n }\n };\n });\n}\n","import { Observable } from '../Observable';\nimport { fromArray } from './fromArray';\nimport { isArray } from '../util/isArray';\nimport { Operator } from '../Operator';\nimport { ObservableInput, PartialObserver, ObservedValueOf } from '../types';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { iterator as Symbol_iterator } from '../../internal/symbol/iterator';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\n\n/* tslint:disable:max-line-length */\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip, R>(v1: O1, resultSelector: (v1: ObservedValueOf) => R): Observable;\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip, O2 extends ObservableInput, R>(v1: O1, v2: O2, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf) => R): Observable;\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf) => R): Observable;\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, v4: O4, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf) => R): Observable;\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf) => R): Observable;\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, v6: O6, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf, v6: ObservedValueOf) => R): Observable;\n\nexport function zip, O2 extends ObservableInput>(v1: O1, v2: O2): Observable<[ObservedValueOf, ObservedValueOf]>;\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput>(v1: O1, v2: O2, v3: O3): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, v6: O6): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n\nexport function zip>(array: O[]): Observable[]>;\nexport function zip(array: ObservableInput[]): Observable;\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip, R>(array: O[], resultSelector: (...values: ObservedValueOf[]) => R): Observable;\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip(array: ObservableInput[], resultSelector: (...values: any[]) => R): Observable;\n\nexport function zip>(...observables: O[]): Observable[]>;\nexport function zip, R>(...observables: Array[]) => R)>): Observable;\nexport function zip(...observables: Array | ((...values: Array) => R)>): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * Combines multiple Observables to create an Observable whose values are calculated from the values, in order, of each\n * of its input Observables.\n *\n * If the last parameter is a function, this function is used to compute the created value from the input values.\n * Otherwise, an array of the input values is returned.\n *\n * ## Example\n * Combine age and name from different sources\n * ```ts\n * import { zip, of } from 'rxjs';\n * import { map } from 'rxjs/operators';\n *\n * let age$ = of(27, 25, 29);\n * let name$ = of('Foo', 'Bar', 'Beer');\n * let isDev$ = of(true, true, false);\n *\n * zip(age$, name$, isDev$).pipe(\n * map(([age, name, isDev]) => ({ age, name, isDev })),\n * )\n * .subscribe(x => console.log(x));\n *\n * // outputs\n * // { age: 27, name: 'Foo', isDev: true }\n * // { age: 25, name: 'Bar', isDev: true }\n * // { age: 29, name: 'Beer', isDev: false }\n * ```\n * @param observables\n * @return {Observable}\n * @static true\n * @name zip\n * @owner Observable\n */\nexport function zip, R>(\n ...observables: Array[]) => R)>\n): Observable[]|R> {\n const resultSelector = <((...ys: Array) => R)> observables[observables.length - 1];\n if (typeof resultSelector === 'function') {\n observables.pop();\n }\n return fromArray(observables, undefined).lift(new ZipOperator(resultSelector));\n}\n\nexport class ZipOperator implements Operator {\n\n resultSelector?: (...values: Array) => R;\n\n constructor(resultSelector?: (...values: Array) => R) {\n this.resultSelector = resultSelector;\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new ZipSubscriber(subscriber, this.resultSelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class ZipSubscriber extends Subscriber {\n private iterators: LookAheadIterator[] = [];\n private active = 0;\n\n constructor(destination: Subscriber,\n private resultSelector?: (...values: Array) => R,\n values: any = Object.create(null)) {\n super(destination);\n this.resultSelector = (typeof resultSelector === 'function') ? resultSelector : undefined;\n }\n\n protected _next(value: any) {\n const iterators = this.iterators;\n if (isArray(value)) {\n iterators.push(new StaticArrayIterator(value));\n } else if (typeof value[Symbol_iterator] === 'function') {\n iterators.push(new StaticIterator(value[Symbol_iterator]()));\n } else {\n iterators.push(new ZipBufferIterator(this.destination, this, value));\n }\n }\n\n protected _complete() {\n const iterators = this.iterators;\n const len = iterators.length;\n\n this.unsubscribe();\n\n if (len === 0) {\n this.destination.complete!();\n return;\n }\n\n this.active = len;\n for (let i = 0; i < len; i++) {\n let iterator: ZipBufferIterator = iterators[i];\n if (iterator.stillUnsubscribed) {\n const destination = this.destination as Subscription;\n destination.add(iterator.subscribe());\n } else {\n this.active--; // not an observable\n }\n }\n }\n\n notifyInactive() {\n this.active--;\n if (this.active === 0) {\n this.destination.complete!();\n }\n }\n\n checkIterators() {\n const iterators = this.iterators;\n const len = iterators.length;\n const destination = this.destination;\n\n // abort if not all of them have values\n for (let i = 0; i < len; i++) {\n let iterator = iterators[i];\n if (typeof iterator.hasValue === 'function' && !iterator.hasValue()) {\n return;\n }\n }\n\n let shouldComplete = false;\n const args: any[] = [];\n for (let i = 0; i < len; i++) {\n let iterator = iterators[i];\n let result = iterator.next();\n\n // check to see if it's completed now that you've gotten\n // the next value.\n if (iterator.hasCompleted()) {\n shouldComplete = true;\n }\n\n if (result.done) {\n destination.complete!();\n return;\n }\n\n args.push(result.value);\n }\n\n if (this.resultSelector) {\n this._tryresultSelector(args);\n } else {\n destination.next!(args);\n }\n\n if (shouldComplete) {\n destination.complete!();\n }\n }\n\n protected _tryresultSelector(args: any[]) {\n let result: any;\n try {\n result = this.resultSelector!.apply(this, args);\n } catch (err) {\n this.destination.error!(err);\n return;\n }\n this.destination.next!(result);\n }\n}\n\ninterface LookAheadIterator extends Iterator {\n hasValue(): boolean;\n hasCompleted(): boolean;\n}\n\nclass StaticIterator implements LookAheadIterator {\n private nextResult: IteratorResult;\n\n constructor(private iterator: Iterator) {\n this.nextResult = iterator.next();\n }\n\n hasValue() {\n return true;\n }\n\n next(): IteratorResult {\n const result = this.nextResult;\n this.nextResult = this.iterator.next();\n return result;\n }\n\n hasCompleted(): boolean {\n const nextResult = this.nextResult;\n return Boolean(nextResult && nextResult.done);\n }\n}\n\nclass StaticArrayIterator implements LookAheadIterator {\n private index = 0;\n private length = 0;\n\n constructor(private array: T[]) {\n this.length = array.length;\n }\n\n [Symbol_iterator]() {\n return this;\n }\n\n next(value?: any): IteratorResult {\n const i = this.index++;\n const array = this.array;\n return i < this.length ? { value: array[i], done: false } : { value: null, done: true };\n }\n\n hasValue() {\n return this.array.length > this.index;\n }\n\n hasCompleted() {\n return this.array.length === this.index;\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass ZipBufferIterator extends SimpleOuterSubscriber implements LookAheadIterator {\n stillUnsubscribed = true;\n buffer: T[] = [];\n isComplete = false;\n\n constructor(destination: PartialObserver,\n private parent: ZipSubscriber,\n private observable: Observable) {\n super(destination);\n }\n\n [Symbol_iterator]() {\n return this;\n }\n\n // NOTE: there is actually a name collision here with Subscriber.next and Iterator.next\n // this is legit because `next()` will never be called by a subscription in this case.\n next(): IteratorResult {\n const buffer = this.buffer;\n if (buffer.length === 0 && this.isComplete) {\n return { value: null, done: true };\n } else {\n return { value: buffer.shift()!, done: false };\n }\n }\n\n hasValue() {\n return this.buffer.length > 0;\n }\n\n hasCompleted() {\n return this.buffer.length === 0 && this.isComplete;\n }\n\n notifyComplete() {\n if (this.buffer.length > 0) {\n this.isComplete = true;\n this.parent.notifyInactive();\n } else {\n this.destination.complete!();\n }\n }\n\n notifyNext(innerValue: any): void {\n this.buffer.push(innerValue);\n this.parent.checkIterators();\n }\n\n subscribe() {\n return innerSubscribe(this.observable, new SimpleInnerSubscriber(this));\n }\n}\n","import { Subject } from './Subject';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { SubscriptionLike } from './types';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\n\n/**\n * A variant of Subject that requires an initial value and emits its current\n * value whenever it is subscribed to.\n *\n * @class BehaviorSubject\n */\nexport class BehaviorSubject extends Subject {\n\n constructor(private _value: T) {\n super();\n }\n\n get value(): T {\n return this.getValue();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber): Subscription {\n const subscription = super._subscribe(subscriber);\n if (subscription && !(subscription).closed) {\n subscriber.next(this._value);\n }\n return subscription;\n }\n\n getValue(): T {\n if (this.hasError) {\n throw this.thrownError;\n } else if (this.closed) {\n throw new ObjectUnsubscribedError();\n } else {\n return this._value;\n }\n }\n\n next(value: T): void {\n super.next(this._value = value);\n }\n}\n","import { Operator } from './Operator';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { TeardownLogic, OperatorFunction, PartialObserver, Subscribable } from './types';\nimport { canReportError } from './util/canReportError';\nimport { toSubscriber } from './util/toSubscriber';\nimport { iif } from './observable/iif';\nimport { throwError } from './observable/throwError';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\n\n/**\n * A representation of any set of values over any amount of time. This is the most basic building block\n * of RxJS.\n *\n * @class Observable\n */\nexport class Observable implements Subscribable {\n\n /** Internal implementation detail, do not use directly. */\n public _isScalar: boolean = false;\n\n /** @deprecated This is an internal implementation detail, do not use. */\n source: Observable;\n\n /** @deprecated This is an internal implementation detail, do not use. */\n operator: Operator;\n\n /**\n * @constructor\n * @param {Function} subscribe the function that is called when the Observable is\n * initially subscribed to. This function is given a Subscriber, to which new values\n * can be `next`ed, or an `error` method can be called to raise an error, or\n * `complete` can be called to notify of a successful completion.\n */\n constructor(subscribe?: (this: Observable, subscriber: Subscriber) => TeardownLogic) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n\n // HACK: Since TypeScript inherits static properties too, we have to\n // fight against TypeScript here so Subject can have a different static create signature\n /**\n * Creates a new cold Observable by calling the Observable constructor\n * @static true\n * @owner Observable\n * @method create\n * @param {Function} subscribe? the subscriber function to be passed to the Observable constructor\n * @return {Observable} a new cold observable\n * @nocollapse\n * @deprecated use new Observable() instead\n */\n static create: Function = (subscribe?: (subscriber: Subscriber) => TeardownLogic) => {\n return new Observable(subscribe);\n }\n\n /**\n * Creates a new Observable, with this Observable as the source, and the passed\n * operator defined as the new observable's operator.\n * @method lift\n * @param {Operator} operator the operator defining the operation to take on the observable\n * @return {Observable} a new observable with the Operator applied\n */\n lift(operator: Operator): Observable {\n const observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n }\n\n subscribe(observer?: PartialObserver): Subscription;\n /** @deprecated Use an observer instead of a complete callback */\n subscribe(next: null | undefined, error: null | undefined, complete: () => void): Subscription;\n /** @deprecated Use an observer instead of an error callback */\n subscribe(next: null | undefined, error: (error: any) => void, complete?: () => void): Subscription;\n /** @deprecated Use an observer instead of a complete callback */\n subscribe(next: (value: T) => void, error: null | undefined, complete: () => void): Subscription;\n subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription;\n /**\n * Invokes an execution of an Observable and registers Observer handlers for notifications it will emit.\n *\n * Use it when you have all these Observables, but still nothing is happening.\n *\n * `subscribe` is not a regular operator, but a method that calls Observable's internal `subscribe` function. It\n * might be for example a function that you passed to Observable's constructor, but most of the time it is\n * a library implementation, which defines what will be emitted by an Observable, and when it be will emitted. This means\n * that calling `subscribe` is actually the moment when Observable starts its work, not when it is created, as it is often\n * the thought.\n *\n * Apart from starting the execution of an Observable, this method allows you to listen for values\n * that an Observable emits, as well as for when it completes or errors. You can achieve this in two\n * of the following ways.\n *\n * The first way is creating an object that implements {@link Observer} interface. It should have methods\n * defined by that interface, but note that it should be just a regular JavaScript object, which you can create\n * yourself in any way you want (ES6 class, classic function constructor, object literal etc.). In particular do\n * not attempt to use any RxJS implementation details to create Observers - you don't need them. Remember also\n * that your object does not have to implement all methods. If you find yourself creating a method that doesn't\n * do anything, you can simply omit it. Note however, if the `error` method is not provided, all errors will\n * be left uncaught.\n *\n * The second way is to give up on Observer object altogether and simply provide callback functions in place of its methods.\n * This means you can provide three functions as arguments to `subscribe`, where the first function is equivalent\n * of a `next` method, the second of an `error` method and the third of a `complete` method. Just as in case of Observer,\n * if you do not need to listen for something, you can omit a function, preferably by passing `undefined` or `null`,\n * since `subscribe` recognizes these functions by where they were placed in function call. When it comes\n * to `error` function, just as before, if not provided, errors emitted by an Observable will be thrown.\n *\n * Whichever style of calling `subscribe` you use, in both cases it returns a Subscription object.\n * This object allows you to call `unsubscribe` on it, which in turn will stop the work that an Observable does and will clean\n * up all resources that an Observable used. Note that cancelling a subscription will not call `complete` callback\n * provided to `subscribe` function, which is reserved for a regular completion signal that comes from an Observable.\n *\n * Remember that callbacks provided to `subscribe` are not guaranteed to be called asynchronously.\n * It is an Observable itself that decides when these functions will be called. For example {@link of}\n * by default emits all its values synchronously. Always check documentation for how given Observable\n * will behave when subscribed and if its default behavior can be modified with a `scheduler`.\n *\n * ## Example\n * ### Subscribe with an Observer\n * ```ts\n * import { of } from 'rxjs';\n *\n * const sumObserver = {\n * sum: 0,\n * next(value) {\n * console.log('Adding: ' + value);\n * this.sum = this.sum + value;\n * },\n * error() {\n * // We actually could just remove this method,\n * // since we do not really care about errors right now.\n * },\n * complete() {\n * console.log('Sum equals: ' + this.sum);\n * }\n * };\n *\n * of(1, 2, 3) // Synchronously emits 1, 2, 3 and then completes.\n * .subscribe(sumObserver);\n *\n * // Logs:\n * // \"Adding: 1\"\n * // \"Adding: 2\"\n * // \"Adding: 3\"\n * // \"Sum equals: 6\"\n * ```\n *\n * ### Subscribe with functions\n * ```ts\n * import { of } from 'rxjs'\n *\n * let sum = 0;\n *\n * of(1, 2, 3).subscribe(\n * value => {\n * console.log('Adding: ' + value);\n * sum = sum + value;\n * },\n * undefined,\n * () => console.log('Sum equals: ' + sum)\n * );\n *\n * // Logs:\n * // \"Adding: 1\"\n * // \"Adding: 2\"\n * // \"Adding: 3\"\n * // \"Sum equals: 6\"\n * ```\n *\n * ### Cancel a subscription\n * ```ts\n * import { interval } from 'rxjs';\n *\n * const subscription = interval(1000).subscribe(\n * num => console.log(num),\n * undefined,\n * () => {\n * // Will not be called, even when cancelling subscription.\n * console.log('completed!');\n * }\n * );\n *\n * setTimeout(() => {\n * subscription.unsubscribe();\n * console.log('unsubscribed!');\n * }, 2500);\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // \"unsubscribed!\" after 2.5s\n * ```\n *\n * @param {Observer|Function} observerOrNext (optional) Either an observer with methods to be called,\n * or the first of three possible handlers, which is the handler for each value emitted from the subscribed\n * Observable.\n * @param {Function} error (optional) A handler for a terminal event resulting from an error. If no error handler is provided,\n * the error will be thrown as unhandled.\n * @param {Function} complete (optional) A handler for a terminal event resulting from successful completion.\n * @return {ISubscription} a subscription reference to the registered handlers\n * @method subscribe\n */\n subscribe(observerOrNext?: PartialObserver | ((value: T) => void),\n error?: (error: any) => void,\n complete?: () => void): Subscription {\n\n const { operator } = this;\n const sink = toSubscriber(observerOrNext, error, complete);\n\n if (operator) {\n sink.add(operator.call(sink, this.source));\n } else {\n sink.add(\n this.source || (config.useDeprecatedSynchronousErrorHandling && !sink.syncErrorThrowable) ?\n this._subscribe(sink) :\n this._trySubscribe(sink)\n );\n }\n\n if (config.useDeprecatedSynchronousErrorHandling) {\n if (sink.syncErrorThrowable) {\n sink.syncErrorThrowable = false;\n if (sink.syncErrorThrown) {\n throw sink.syncErrorValue;\n }\n }\n }\n\n return sink;\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _trySubscribe(sink: Subscriber): TeardownLogic {\n try {\n return this._subscribe(sink);\n } catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n sink.syncErrorThrown = true;\n sink.syncErrorValue = err;\n }\n if (canReportError(sink)) {\n sink.error(err);\n } else {\n console.warn(err);\n }\n }\n }\n\n /**\n * @method forEach\n * @param {Function} next a handler for each value emitted by the observable\n * @param {PromiseConstructor} [promiseCtor] a constructor function used to instantiate the Promise\n * @return {Promise} a promise that either resolves on observable completion or\n * rejects with the handled error\n */\n forEach(next: (value: T) => void, promiseCtor?: PromiseConstructorLike): Promise {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor((resolve, reject) => {\n // Must be declared in a separate statement to avoid a ReferenceError when\n // accessing subscription below in the closure due to Temporal Dead Zone.\n let subscription: Subscription;\n subscription = this.subscribe((value) => {\n try {\n next(value);\n } catch (err) {\n reject(err);\n if (subscription) {\n subscription.unsubscribe();\n }\n }\n }, reject, resolve);\n }) as Promise;\n }\n\n /** @internal This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber): TeardownLogic {\n const { source } = this;\n return source && source.subscribe(subscriber);\n }\n\n // `if` and `throw` are special snow flakes, the compiler sees them as reserved words. Deprecated in\n // favor of iif and throwError functions.\n /**\n * @nocollapse\n * @deprecated In favor of iif creation function: import { iif } from 'rxjs';\n */\n static if: typeof iif;\n /**\n * @nocollapse\n * @deprecated In favor of throwError creation function: import { throwError } from 'rxjs';\n */\n static throw: typeof throwError;\n\n /**\n * An interop point defined by the es7-observable spec https://github.com/zenparsing/es-observable\n * @method Symbol.observable\n * @return {Observable} this instance of the observable\n */\n [Symbol_observable]() {\n return this;\n }\n\n /* tslint:disable:max-line-length */\n pipe(): Observable;\n pipe(op1: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction, op7: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction, op7: OperatorFunction, op8: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction, op7: OperatorFunction, op8: OperatorFunction, op9: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction, op7: OperatorFunction, op8: OperatorFunction, op9: OperatorFunction, ...operations: OperatorFunction[]): Observable<{}>;\n /* tslint:enable:max-line-length */\n\n /**\n * Used to stitch together functional operators into a chain.\n * @method pipe\n * @return {Observable} the Observable result of all of the operators having\n * been called in the order they were passed in.\n *\n * ### Example\n * ```ts\n * import { interval } from 'rxjs';\n * import { map, filter, scan } from 'rxjs/operators';\n *\n * interval(1000)\n * .pipe(\n * filter(x => x % 2 === 0),\n * map(x => x + x),\n * scan((acc, x) => acc + x)\n * )\n * .subscribe(x => console.log(x))\n * ```\n */\n pipe(...operations: OperatorFunction[]): Observable {\n if (operations.length === 0) {\n return this as any;\n }\n\n return pipeFromArray(operations)(this);\n }\n\n /* tslint:disable:max-line-length */\n toPromise(this: Observable): Promise;\n toPromise(this: Observable, PromiseCtor: typeof Promise): Promise;\n toPromise(this: Observable, PromiseCtor: PromiseConstructorLike): Promise;\n /* tslint:enable:max-line-length */\n\n toPromise(promiseCtor?: PromiseConstructorLike): Promise {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor((resolve, reject) => {\n let value: any;\n this.subscribe((x: T) => value = x, (err: any) => reject(err), () => resolve(value));\n }) as Promise;\n }\n}\n\n/**\n * Decides between a passed promise constructor from consuming code,\n * A default configured promise constructor, and the native promise\n * constructor and returns it. If nothing can be found, it will throw\n * an error.\n * @param promiseCtor The optional promise constructor to passed by consuming code\n */\nfunction getPromiseCtor(promiseCtor: PromiseConstructorLike | undefined) {\n if (!promiseCtor) {\n promiseCtor = config.Promise || Promise;\n }\n\n if (!promiseCtor) {\n throw new Error('no Promise impl found');\n }\n\n return promiseCtor;\n}\n","import { Subscriber } from '../Subscriber';\nimport { rxSubscriber as rxSubscriberSymbol } from '../symbol/rxSubscriber';\nimport { empty as emptyObserver } from '../Observer';\nimport { PartialObserver } from '../types';\n\nexport function toSubscriber(\n nextOrObserver?: PartialObserver | ((value: T) => void),\n error?: (error: any) => void,\n complete?: () => void): Subscriber {\n\n if (nextOrObserver) {\n if (nextOrObserver instanceof Subscriber) {\n return (> nextOrObserver);\n }\n\n if (nextOrObserver[rxSubscriberSymbol]) {\n return nextOrObserver[rxSubscriberSymbol]();\n }\n }\n\n if (!nextOrObserver && !error && !complete) {\n return new Subscriber(emptyObserver);\n }\n\n return new Subscriber(nextOrObserver, error, complete);\n}\n","import { Observer } from './types';\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\n\nexport const empty: Observer = {\n closed: true,\n next(value: any): void { /* noop */},\n error(err: any): void {\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n } else {\n hostReportError(err);\n }\n },\n complete(): void { /*noop*/ }\n};\n","import { Operator } from './Operator';\nimport { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { Observer, SubscriptionLike, TeardownLogic } from './types';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\n\n/**\n * @class SubjectSubscriber\n */\nexport class SubjectSubscriber extends Subscriber {\n constructor(protected destination: Subject) {\n super(destination);\n }\n}\n\n/**\n * A Subject is a special type of Observable that allows values to be\n * multicasted to many Observers. Subjects are like EventEmitters.\n *\n * Every Subject is an Observable and an Observer. You can subscribe to a\n * Subject, and you can call next to feed values as well as error and complete.\n *\n * @class Subject\n */\nexport class Subject extends Observable implements SubscriptionLike {\n\n [rxSubscriberSymbol]() {\n return new SubjectSubscriber(this);\n }\n\n observers: Observer[] = [];\n\n closed = false;\n\n isStopped = false;\n\n hasError = false;\n\n thrownError: any = null;\n\n constructor() {\n super();\n }\n\n /**@nocollapse\n * @deprecated use new Subject() instead\n */\n static create: Function = (destination: Observer, source: Observable): AnonymousSubject => {\n return new AnonymousSubject(destination, source);\n }\n\n lift(operator: Operator): Observable {\n const subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n }\n\n next(value?: T) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n if (!this.isStopped) {\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].next(value);\n }\n }\n }\n\n error(err: any) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.hasError = true;\n this.thrownError = err;\n this.isStopped = true;\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].error(err);\n }\n this.observers.length = 0;\n }\n\n complete() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.isStopped = true;\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].complete();\n }\n this.observers.length = 0;\n }\n\n unsubscribe() {\n this.isStopped = true;\n this.closed = true;\n this.observers = null;\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _trySubscribe(subscriber: Subscriber): TeardownLogic {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n } else {\n return super._trySubscribe(subscriber);\n }\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber): Subscription {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n } else if (this.hasError) {\n subscriber.error(this.thrownError);\n return Subscription.EMPTY;\n } else if (this.isStopped) {\n subscriber.complete();\n return Subscription.EMPTY;\n } else {\n this.observers.push(subscriber);\n return new SubjectSubscription(this, subscriber);\n }\n }\n\n /**\n * Creates a new Observable with this Subject as the source. You can do this\n * to create customize Observer-side logic of the Subject and conceal it from\n * code that uses the Observable.\n * @return {Observable} Observable that the Subject casts to\n */\n asObservable(): Observable {\n const observable = new Observable();\n (observable).source = this;\n return observable;\n }\n}\n\n/**\n * @class AnonymousSubject\n */\nexport class AnonymousSubject extends Subject {\n constructor(protected destination?: Observer, source?: Observable) {\n super();\n this.source = source;\n }\n\n next(value: T) {\n const { destination } = this;\n if (destination && destination.next) {\n destination.next(value);\n }\n }\n\n error(err: any) {\n const { destination } = this;\n if (destination && destination.error) {\n this.destination.error(err);\n }\n }\n\n complete() {\n const { destination } = this;\n if (destination && destination.complete) {\n this.destination.complete();\n }\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber): Subscription {\n const { source } = this;\n if (source) {\n return this.source.subscribe(subscriber);\n } else {\n return Subscription.EMPTY;\n }\n }\n}\n","import { Subject } from './Subject';\nimport { Observer } from './types';\nimport { Subscription } from './Subscription';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class SubjectSubscription extends Subscription {\n closed: boolean = false;\n\n constructor(public subject: Subject, public subscriber: Observer) {\n super();\n }\n\n unsubscribe() {\n if (this.closed) {\n return;\n }\n\n this.closed = true;\n\n const subject = this.subject;\n const observers = subject.observers;\n\n this.subject = null;\n\n if (!observers || observers.length === 0 || subject.isStopped || subject.closed) {\n return;\n }\n\n const subscriberIndex = observers.indexOf(this.subscriber);\n\n if (subscriberIndex !== -1) {\n observers.splice(subscriberIndex, 1);\n }\n }\n}\n","import { isFunction } from './util/isFunction';\nimport { empty as emptyObserver } from './Observer';\nimport { Observer, PartialObserver, TeardownLogic } from './types';\nimport { Subscription } from './Subscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\n\n/**\n * Implements the {@link Observer} interface and extends the\n * {@link Subscription} class. While the {@link Observer} is the public API for\n * consuming the values of an {@link Observable}, all Observers get converted to\n * a Subscriber, in order to provide Subscription-like capabilities such as\n * `unsubscribe`. Subscriber is a common type in RxJS, and crucial for\n * implementing operators, but it is rarely used as a public API.\n *\n * @class Subscriber\n */\nexport class Subscriber extends Subscription implements Observer {\n\n [rxSubscriberSymbol]() { return this; }\n\n /**\n * A static factory for a Subscriber, given a (potentially partial) definition\n * of an Observer.\n * @param {function(x: ?T): void} [next] The `next` callback of an Observer.\n * @param {function(e: ?any): void} [error] The `error` callback of an\n * Observer.\n * @param {function(): void} [complete] The `complete` callback of an\n * Observer.\n * @return {Subscriber} A Subscriber wrapping the (partially defined)\n * Observer represented by the given arguments.\n * @nocollapse\n */\n static create(next?: (x?: T) => void,\n error?: (e?: any) => void,\n complete?: () => void): Subscriber {\n const subscriber = new Subscriber(next, error, complete);\n subscriber.syncErrorThrowable = false;\n return subscriber;\n }\n\n /** @internal */ syncErrorValue: any = null;\n /** @internal */ syncErrorThrown: boolean = false;\n /** @internal */ syncErrorThrowable: boolean = false;\n\n protected isStopped: boolean = false;\n protected destination: PartialObserver | Subscriber; // this `any` is the escape hatch to erase extra type param (e.g. R)\n\n /**\n * @param {Observer|function(value: T): void} [destinationOrNext] A partially\n * defined Observer or a `next` callback function.\n * @param {function(e: ?any): void} [error] The `error` callback of an\n * Observer.\n * @param {function(): void} [complete] The `complete` callback of an\n * Observer.\n */\n constructor(destinationOrNext?: PartialObserver | ((value: T) => void),\n error?: (e?: any) => void,\n complete?: () => void) {\n super();\n\n switch (arguments.length) {\n case 0:\n this.destination = emptyObserver;\n break;\n case 1:\n if (!destinationOrNext) {\n this.destination = emptyObserver;\n break;\n }\n if (typeof destinationOrNext === 'object') {\n if (destinationOrNext instanceof Subscriber) {\n this.syncErrorThrowable = destinationOrNext.syncErrorThrowable;\n this.destination = destinationOrNext;\n destinationOrNext.add(this);\n } else {\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, > destinationOrNext);\n }\n break;\n }\n default:\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, <((value: T) => void)> destinationOrNext, error, complete);\n break;\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `next` from\n * the Observable, with a value. The Observable may call this method 0 or more\n * times.\n * @param {T} [value] The `next` value.\n * @return {void}\n */\n next(value?: T): void {\n if (!this.isStopped) {\n this._next(value);\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `error` from\n * the Observable, with an attached `Error`. Notifies the Observer that\n * the Observable has experienced an error condition.\n * @param {any} [err] The `error` exception.\n * @return {void}\n */\n error(err?: any): void {\n if (!this.isStopped) {\n this.isStopped = true;\n this._error(err);\n }\n }\n\n /**\n * The {@link Observer} callback to receive a valueless notification of type\n * `complete` from the Observable. Notifies the Observer that the Observable\n * has finished sending push-based notifications.\n * @return {void}\n */\n complete(): void {\n if (!this.isStopped) {\n this.isStopped = true;\n this._complete();\n }\n }\n\n unsubscribe(): void {\n if (this.closed) {\n return;\n }\n this.isStopped = true;\n super.unsubscribe();\n }\n\n protected _next(value: T): void {\n this.destination.next(value);\n }\n\n protected _error(err: any): void {\n this.destination.error(err);\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.destination.complete();\n this.unsubscribe();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribeAndRecycle(): Subscriber {\n const { _parentOrParents } = this;\n this._parentOrParents = null;\n this.unsubscribe();\n this.closed = false;\n this.isStopped = false;\n this._parentOrParents = _parentOrParents;\n return this;\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class SafeSubscriber extends Subscriber {\n\n private _context: any;\n\n constructor(private _parentSubscriber: Subscriber,\n observerOrNext?: PartialObserver | ((value: T) => void),\n error?: (e?: any) => void,\n complete?: () => void) {\n super();\n\n let next: ((value: T) => void);\n let context: any = this;\n\n if (isFunction(observerOrNext)) {\n next = (<((value: T) => void)> observerOrNext);\n } else if (observerOrNext) {\n next = (> observerOrNext).next;\n error = (> observerOrNext).error;\n complete = (> observerOrNext).complete;\n if (observerOrNext !== emptyObserver) {\n context = Object.create(observerOrNext);\n if (isFunction(context.unsubscribe)) {\n this.add(<() => void> context.unsubscribe.bind(context));\n }\n context.unsubscribe = this.unsubscribe.bind(this);\n }\n }\n\n this._context = context;\n this._next = next;\n this._error = error;\n this._complete = complete;\n }\n\n next(value?: T): void {\n if (!this.isStopped && this._next) {\n const { _parentSubscriber } = this;\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._next, value);\n } else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {\n this.unsubscribe();\n }\n }\n }\n\n error(err?: any): void {\n if (!this.isStopped) {\n const { _parentSubscriber } = this;\n const { useDeprecatedSynchronousErrorHandling } = config;\n if (this._error) {\n if (!useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._error, err);\n this.unsubscribe();\n } else {\n this.__tryOrSetError(_parentSubscriber, this._error, err);\n this.unsubscribe();\n }\n } else if (!_parentSubscriber.syncErrorThrowable) {\n this.unsubscribe();\n if (useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n hostReportError(err);\n } else {\n if (useDeprecatedSynchronousErrorHandling) {\n _parentSubscriber.syncErrorValue = err;\n _parentSubscriber.syncErrorThrown = true;\n } else {\n hostReportError(err);\n }\n this.unsubscribe();\n }\n }\n }\n\n complete(): void {\n if (!this.isStopped) {\n const { _parentSubscriber } = this;\n if (this._complete) {\n const wrappedComplete = () => this._complete.call(this._context);\n\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(wrappedComplete);\n this.unsubscribe();\n } else {\n this.__tryOrSetError(_parentSubscriber, wrappedComplete);\n this.unsubscribe();\n }\n } else {\n this.unsubscribe();\n }\n }\n }\n\n private __tryOrUnsub(fn: Function, value?: any): void {\n try {\n fn.call(this._context, value);\n } catch (err) {\n this.unsubscribe();\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n } else {\n hostReportError(err);\n }\n }\n }\n\n private __tryOrSetError(parent: Subscriber, fn: Function, value?: any): boolean {\n if (!config.useDeprecatedSynchronousErrorHandling) {\n throw new Error('bad call');\n }\n try {\n fn.call(this._context, value);\n } catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n parent.syncErrorValue = err;\n parent.syncErrorThrown = true;\n return true;\n } else {\n hostReportError(err);\n return true;\n }\n }\n return false;\n }\n\n /** @internal This is an internal implementation detail, do not use. */\n _unsubscribe(): void {\n const { _parentSubscriber } = this;\n this._context = null;\n this._parentSubscriber = null;\n _parentSubscriber.unsubscribe();\n }\n}\n","import { isArray } from './util/isArray';\nimport { isObject } from './util/isObject';\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { SubscriptionLike, TeardownLogic } from './types';\n\n/**\n * Represents a disposable resource, such as the execution of an Observable. A\n * Subscription has one important method, `unsubscribe`, that takes no argument\n * and just disposes the resource held by the subscription.\n *\n * Additionally, subscriptions may be grouped together through the `add()`\n * method, which will attach a child Subscription to the current Subscription.\n * When a Subscription is unsubscribed, all its children (and its grandchildren)\n * will be unsubscribed as well.\n *\n * @class Subscription\n */\nexport class Subscription implements SubscriptionLike {\n /** @nocollapse */\n public static EMPTY: Subscription = (function(empty: any) {\n empty.closed = true;\n return empty;\n }(new Subscription()));\n\n /**\n * A flag to indicate whether this Subscription has already been unsubscribed.\n * @type {boolean}\n */\n public closed: boolean = false;\n\n /** @internal */\n protected _parentOrParents: Subscription | Subscription[] = null;\n /** @internal */\n private _subscriptions: SubscriptionLike[] = null;\n\n /**\n * @param {function(): void} [unsubscribe] A function describing how to\n * perform the disposal of resources when the `unsubscribe` method is called.\n */\n constructor(unsubscribe?: () => void) {\n if (unsubscribe) {\n (this as any)._ctorUnsubscribe = true;\n (this as any)._unsubscribe = unsubscribe;\n }\n }\n\n /**\n * Disposes the resources held by the subscription. May, for instance, cancel\n * an ongoing Observable execution or cancel any other type of work that\n * started when the Subscription was created.\n * @return {void}\n */\n unsubscribe(): void {\n let errors: any[];\n\n if (this.closed) {\n return;\n }\n\n let { _parentOrParents, _ctorUnsubscribe, _unsubscribe, _subscriptions } = (this as any);\n\n this.closed = true;\n this._parentOrParents = null;\n // null out _subscriptions first so any child subscriptions that attempt\n // to remove themselves from this subscription will noop\n this._subscriptions = null;\n\n if (_parentOrParents instanceof Subscription) {\n _parentOrParents.remove(this);\n } else if (_parentOrParents !== null) {\n for (let index = 0; index < _parentOrParents.length; ++index) {\n const parent = _parentOrParents[index];\n parent.remove(this);\n }\n }\n\n if (isFunction(_unsubscribe)) {\n // It's only possible to null _unsubscribe - to release the reference to\n // any teardown function passed in the constructor - if the property was\n // actually assigned in the constructor, as there are some classes that\n // are derived from Subscriber (which derives from Subscription) that\n // implement an _unsubscribe method as a mechanism for obtaining\n // unsubscription notifications and some of those subscribers are\n // recycled. Also, in some of those subscribers, _unsubscribe switches\n // from a prototype method to an instance property - see notifyNext in\n // RetryWhenSubscriber.\n if (_ctorUnsubscribe) {\n (this as any)._unsubscribe = undefined;\n }\n try {\n _unsubscribe.call(this);\n } catch (e) {\n errors = e instanceof UnsubscriptionError ? flattenUnsubscriptionErrors(e.errors) : [e];\n }\n }\n\n if (isArray(_subscriptions)) {\n let index = -1;\n let len = _subscriptions.length;\n\n while (++index < len) {\n const sub = _subscriptions[index];\n if (isObject(sub)) {\n try {\n sub.unsubscribe();\n } catch (e) {\n errors = errors || [];\n if (e instanceof UnsubscriptionError) {\n errors = errors.concat(flattenUnsubscriptionErrors(e.errors));\n } else {\n errors.push(e);\n }\n }\n }\n }\n }\n\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n\n /**\n * Adds a tear down to be called during the unsubscribe() of this\n * Subscription. Can also be used to add a child subscription.\n *\n * If the tear down being added is a subscription that is already\n * unsubscribed, is the same reference `add` is being called on, or is\n * `Subscription.EMPTY`, it will not be added.\n *\n * If this subscription is already in an `closed` state, the passed\n * tear down logic will be executed immediately.\n *\n * When a parent subscription is unsubscribed, any child subscriptions that were added to it are also unsubscribed.\n *\n * @param {TeardownLogic} teardown The additional logic to execute on\n * teardown.\n * @return {Subscription} Returns the Subscription used or created to be\n * added to the inner subscriptions list. This Subscription can be used with\n * `remove()` to remove the passed teardown logic from the inner subscriptions\n * list.\n */\n add(teardown: TeardownLogic): Subscription {\n let subscription = (teardown);\n\n if (!teardown) {\n return Subscription.EMPTY;\n }\n\n switch (typeof teardown) {\n case 'function':\n subscription = new Subscription(<(() => void)>teardown);\n case 'object':\n if (subscription === this || subscription.closed || typeof subscription.unsubscribe !== 'function') {\n // This also covers the case where `subscription` is `Subscription.EMPTY`, which is always in `closed` state.\n return subscription;\n } else if (this.closed) {\n subscription.unsubscribe();\n return subscription;\n } else if (!(subscription instanceof Subscription)) {\n const tmp = subscription;\n subscription = new Subscription();\n subscription._subscriptions = [tmp];\n }\n break;\n default: {\n throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n }\n }\n\n // Add `this` as parent of `subscription` if that's not already the case.\n let { _parentOrParents } = subscription;\n if (_parentOrParents === null) {\n // If we don't have a parent, then set `subscription._parents` to\n // the `this`, which is the common case that we optimize for.\n subscription._parentOrParents = this;\n } else if (_parentOrParents instanceof Subscription) {\n if (_parentOrParents === this) {\n // The `subscription` already has `this` as a parent.\n return subscription;\n }\n // If there's already one parent, but not multiple, allocate an\n // Array to store the rest of the parent Subscriptions.\n subscription._parentOrParents = [_parentOrParents, this];\n } else if (_parentOrParents.indexOf(this) === -1) {\n // Only add `this` to the _parentOrParents list if it's not already there.\n _parentOrParents.push(this);\n } else {\n // The `subscription` already has `this` as a parent.\n return subscription;\n }\n\n // Optimize for the common case when adding the first subscription.\n const subscriptions = this._subscriptions;\n if (subscriptions === null) {\n this._subscriptions = [subscription];\n } else {\n subscriptions.push(subscription);\n }\n\n return subscription;\n }\n\n /**\n * Removes a Subscription from the internal list of subscriptions that will\n * unsubscribe during the unsubscribe process of this Subscription.\n * @param {Subscription} subscription The subscription to remove.\n * @return {void}\n */\n remove(subscription: Subscription): void {\n const subscriptions = this._subscriptions;\n if (subscriptions) {\n const subscriptionIndex = subscriptions.indexOf(subscription);\n if (subscriptionIndex !== -1) {\n subscriptions.splice(subscriptionIndex, 1);\n }\n }\n }\n}\n\nfunction flattenUnsubscriptionErrors(errors: any[]) {\n return errors.reduce((errs, err) => errs.concat((err instanceof UnsubscriptionError) ? err.errors : err), []);\n}\n","let _enable_super_gross_mode_that_will_cause_bad_things = false;\n\n/**\n * The global configuration object for RxJS, used to configure things\n * like what Promise contructor should used to create Promises\n */\nexport const config = {\n /**\n * The promise constructor used by default for methods such as\n * {@link toPromise} and {@link forEach}\n */\n Promise: undefined as PromiseConstructorLike,\n\n /**\n * If true, turns on synchronous error rethrowing, which is a deprecated behavior\n * in v6 and higher. This behavior enables bad patterns like wrapping a subscribe\n * call in a try/catch block. It also enables producer interference, a nasty bug\n * where a multicast can be broken for all observers by a downstream consumer with\n * an unhandled error. DO NOT USE THIS FLAG UNLESS IT'S NEEDED TO BY TIME\n * FOR MIGRATION REASONS.\n */\n set useDeprecatedSynchronousErrorHandling(value: boolean) {\n if (value) {\n const error = new Error();\n console.warn('DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \\n' + error.stack);\n } else if (_enable_super_gross_mode_that_will_cause_bad_things) {\n console.log('RxJS: Back to a better error behavior. Thank you. <3');\n }\n _enable_super_gross_mode_that_will_cause_bad_things = value;\n },\n\n get useDeprecatedSynchronousErrorHandling() {\n return _enable_super_gross_mode_that_will_cause_bad_things;\n },\n};\n","/** @deprecated do not use, this is no longer checked by RxJS internals */\nexport const rxSubscriber = (() =>\n typeof Symbol === 'function'\n ? Symbol('rxSubscriber')\n : '@@rxSubscriber_' + Math.random())();\n\n/**\n * @deprecated use rxSubscriber instead\n */\nexport const $$rxSubscriber = rxSubscriber;\n","export interface ObjectUnsubscribedError extends Error {\n}\n\nexport interface ObjectUnsubscribedErrorCtor {\n new(): ObjectUnsubscribedError;\n}\n\nconst ObjectUnsubscribedErrorImpl = (() => {\n function ObjectUnsubscribedErrorImpl(this: any) {\n Error.call(this);\n this.message = 'object unsubscribed';\n this.name = 'ObjectUnsubscribedError';\n return this;\n }\n\n ObjectUnsubscribedErrorImpl.prototype = Object.create(Error.prototype);\n\n return ObjectUnsubscribedErrorImpl;\n})();\n\n/**\n * An error thrown when an action is invalid because the object has been\n * unsubscribed.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n *\n * @class ObjectUnsubscribedError\n */\nexport const ObjectUnsubscribedError: ObjectUnsubscribedErrorCtor = ObjectUnsubscribedErrorImpl as any;","export interface UnsubscriptionError extends Error {\n readonly errors: any[];\n}\n\nexport interface UnsubscriptionErrorCtor {\n new(errors: any[]): UnsubscriptionError;\n}\n\nconst UnsubscriptionErrorImpl = (() => {\n function UnsubscriptionErrorImpl(this: any, errors: any[]) {\n Error.call(this);\n this.message = errors ?\n `${errors.length} errors occurred during unsubscription:\n${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\\n ')}` : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n return this;\n }\n\n UnsubscriptionErrorImpl.prototype = Object.create(Error.prototype);\n\n return UnsubscriptionErrorImpl;\n})();\n\n/**\n * An error thrown when one or more errors have occurred during the\n * `unsubscribe` of a {@link Subscription}.\n */\nexport const UnsubscriptionError: UnsubscriptionErrorCtor = UnsubscriptionErrorImpl as any;","import { Subscriber } from '../Subscriber';\nimport { Subject } from '../Subject';\n\n/**\n * Determines whether the ErrorObserver is closed or stopped or has a\n * destination that is closed or stopped - in which case errors will\n * need to be reported via a different mechanism.\n * @param observer the observer\n */\nexport function canReportError(observer: Subscriber | Subject): boolean {\n while (observer) {\n const { closed, destination, isStopped } = observer as any;\n if (closed || isStopped) {\n return false;\n } else if (destination && destination instanceof Subscriber) {\n observer = destination;\n } else {\n observer = null;\n }\n }\n return true;\n}\n","/**\n * Throws an error on another job so that it's picked up by the runtime's\n * uncaught error handling mechanism.\n * @param err the error to throw\n */\nexport function hostReportError(err: any) {\n setTimeout(() => { throw err; }, 0);\n}","export function identity(x: T): T {\n return x;\n}\n","export function isFunction(x: any): x is Function {\n return typeof x === 'function';\n}\n","export function isObject(x: any): x is Object {\n return x !== null && typeof x === 'object';\n}\n","import { noop } from './noop';\nimport { identity } from './identity';\nimport { UnaryFunction } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function pipe(): UnaryFunction;\nexport function pipe(fn1: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction, fn5: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction, fn5: UnaryFunction, fn6: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction, fn5: UnaryFunction, fn6: UnaryFunction, fn7: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction, fn5: UnaryFunction, fn6: UnaryFunction, fn7: UnaryFunction, fn8: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction, fn5: UnaryFunction, fn6: UnaryFunction, fn7: UnaryFunction, fn8: UnaryFunction, fn9: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction, fn5: UnaryFunction, fn6: UnaryFunction, fn7: UnaryFunction, fn8: UnaryFunction, fn9: UnaryFunction, ...fns: UnaryFunction[]): UnaryFunction;\n/* tslint:enable:max-line-length */\n\nexport function pipe(...fns: Array>): UnaryFunction {\n return pipeFromArray(fns);\n}\n\n/** @internal */\nexport function pipeFromArray(fns: Array>): UnaryFunction {\n if (fns.length === 0) {\n return identity as UnaryFunction;\n }\n\n if (fns.length === 1) {\n return fns[0];\n }\n\n return function piped(input: T): R {\n return fns.reduce((prev: any, fn: UnaryFunction) => fn(prev), input as any);\n };\n}\n","/** @license React v0.19.1\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var f,g,h,k,l;\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var p=null,q=null,t=function(){if(null!==p)try{var a=exports.unstable_now();p(!0,a);p=null}catch(b){throw setTimeout(t,0),b;}},u=Date.now();exports.unstable_now=function(){return Date.now()-u};f=function(a){null!==p?setTimeout(f,0,a):(p=a,setTimeout(t,0))};g=function(a,b){q=setTimeout(a,b)};h=function(){clearTimeout(q)};k=function(){return!1};l=exports.unstable_forceFrameRate=function(){}}else{var w=window.performance,x=window.Date,\ny=window.setTimeout,z=window.clearTimeout;if(\"undefined\"!==typeof console){var A=window.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\");\"function\"!==typeof A&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\")}if(\"object\"===\ntypeof w&&\"function\"===typeof w.now)exports.unstable_now=function(){return w.now()};else{var B=x.now();exports.unstable_now=function(){return x.now()-B}}var C=!1,D=null,E=-1,F=5,G=0;k=function(){return exports.unstable_now()>=G};l=function(){};exports.unstable_forceFrameRate=function(a){0>a||125>>1,e=a[d];if(void 0!==e&&0K(n,c))void 0!==r&&0>K(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>K(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function K(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var N=[],O=[],P=1,Q=null,R=3,S=!1,T=!1,U=!1;\nfunction V(a){for(var b=L(O);null!==b;){if(null===b.callback)M(O);else if(b.startTime<=a)M(O),b.sortIndex=b.expirationTime,J(N,b);else break;b=L(O)}}function W(a){U=!1;V(a);if(!T)if(null!==L(N))T=!0,f(X);else{var b=L(O);null!==b&&g(W,b.startTime-a)}}\nfunction X(a,b){T=!1;U&&(U=!1,h());S=!0;var c=R;try{V(b);for(Q=L(N);null!==Q&&(!(Q.expirationTime>b)||a&&!k());){var d=Q.callback;if(null!==d){Q.callback=null;R=Q.priorityLevel;var e=d(Q.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?Q.callback=e:Q===L(N)&&M(N);V(b)}else M(N);Q=L(N)}if(null!==Q)var m=!0;else{var n=L(O);null!==n&&g(W,n.startTime-b);m=!1}return m}finally{Q=null,R=c,S=!1}}\nfunction Y(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var Z=l;exports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){T||S||(T=!0,f(X))};\nexports.unstable_getCurrentPriorityLevel=function(){return R};exports.unstable_getFirstCallbackNode=function(){return L(N)};exports.unstable_next=function(a){switch(R){case 1:case 2:case 3:var b=3;break;default:b=R}var c=R;R=b;try{return a()}finally{R=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=Z;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=R;R=a;try{return b()}finally{R=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();if(\"object\"===typeof c&&null!==c){var e=c.delay;e=\"number\"===typeof e&&0d?(a.sortIndex=e,J(O,a),null===L(N)&&a===L(O)&&(U?h():U=!0,g(W,e-d))):(a.sortIndex=c,J(N,a),T||S||(T=!0,f(X)));return a};\nexports.unstable_shouldYield=function(){var a=exports.unstable_now();V(a);var b=L(N);return b!==Q&&null!==Q&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return e;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var t,\n e = {},\n r = Object.prototype,\n n = r.hasOwnProperty,\n o = Object.defineProperty || function (t, e, r) {\n t[e] = r.value;\n },\n i = \"function\" == typeof Symbol ? Symbol : {},\n a = i.iterator || \"@@iterator\",\n c = i.asyncIterator || \"@@asyncIterator\",\n u = i.toStringTag || \"@@toStringTag\";\n function define(t, e, r) {\n return Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), t[e];\n }\n try {\n define({}, \"\");\n } catch (t) {\n define = function define(t, e, r) {\n return t[e] = r;\n };\n }\n function wrap(t, e, r, n) {\n var i = e && e.prototype instanceof Generator ? e : Generator,\n a = Object.create(i.prototype),\n c = new Context(n || []);\n return o(a, \"_invoke\", {\n value: makeInvokeMethod(t, r, c)\n }), a;\n }\n function tryCatch(t, e, r) {\n try {\n return {\n type: \"normal\",\n arg: t.call(e, r)\n };\n } catch (t) {\n return {\n type: \"throw\",\n arg: t\n };\n }\n }\n e.wrap = wrap;\n var h = \"suspendedStart\",\n l = \"suspendedYield\",\n f = \"executing\",\n s = \"completed\",\n y = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var p = {};\n define(p, a, function () {\n return this;\n });\n var d = Object.getPrototypeOf,\n v = d && d(d(values([])));\n v && v !== r && n.call(v, a) && (p = v);\n var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n function defineIteratorMethods(t) {\n [\"next\", \"throw\", \"return\"].forEach(function (e) {\n define(t, e, function (t) {\n return this._invoke(e, t);\n });\n });\n }\n function AsyncIterator(t, e) {\n function invoke(r, o, i, a) {\n var c = tryCatch(t[r], t, o);\n if (\"throw\" !== c.type) {\n var u = c.arg,\n h = u.value;\n return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n invoke(\"next\", t, i, a);\n }, function (t) {\n invoke(\"throw\", t, i, a);\n }) : e.resolve(h).then(function (t) {\n u.value = t, i(u);\n }, function (t) {\n return invoke(\"throw\", t, i, a);\n });\n }\n a(c.arg);\n }\n var r;\n o(this, \"_invoke\", {\n value: function value(t, n) {\n function callInvokeWithMethodAndArg() {\n return new e(function (e, r) {\n invoke(t, n, e, r);\n });\n }\n return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(e, r, n) {\n var o = h;\n return function (i, a) {\n if (o === f) throw new Error(\"Generator is already running\");\n if (o === s) {\n if (\"throw\" === i) throw a;\n return {\n value: t,\n done: !0\n };\n }\n for (n.method = i, n.arg = a;;) {\n var c = n.delegate;\n if (c) {\n var u = maybeInvokeDelegate(c, n);\n if (u) {\n if (u === y) continue;\n return u;\n }\n }\n if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n if (o === h) throw o = s, n.arg;\n n.dispatchException(n.arg);\n } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n o = f;\n var p = tryCatch(e, r, n);\n if (\"normal\" === p.type) {\n if (o = n.done ? s : l, p.arg === y) continue;\n return {\n value: p.arg,\n done: n.done\n };\n }\n \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n }\n };\n }\n function maybeInvokeDelegate(e, r) {\n var n = r.method,\n o = e.iterator[n];\n if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n var i = tryCatch(o, e.iterator, r.arg);\n if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n var a = i.arg;\n return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n }\n function pushTryEntry(t) {\n var e = {\n tryLoc: t[0]\n };\n 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n }\n function resetTryEntry(t) {\n var e = t.completion || {};\n e.type = \"normal\", delete e.arg, t.completion = e;\n }\n function Context(t) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], t.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(e) {\n if (e || \"\" === e) {\n var r = e[a];\n if (r) return r.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) {\n var o = -1,\n i = function next() {\n for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n return next.value = t, next.done = !0, next;\n };\n return i.next = i;\n }\n }\n throw new TypeError(_typeof(e) + \" is not iterable\");\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), o(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n var e = \"function\" == typeof t && t.constructor;\n return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n }, e.mark = function (t) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n }, e.awrap = function (t) {\n return {\n __await: t\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n return this;\n }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n void 0 === i && (i = Promise);\n var a = new AsyncIterator(wrap(t, r, n, o), i);\n return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n return t.done ? t.value : a.next();\n });\n }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n return this;\n }), define(g, \"toString\", function () {\n return \"[object Generator]\";\n }), e.keys = function (t) {\n var e = Object(t),\n r = [];\n for (var n in e) r.push(n);\n return r.reverse(), function next() {\n for (; r.length;) {\n var t = r.pop();\n if (t in e) return next.value = t, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, e.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(e) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n },\n stop: function stop() {\n this.done = !0;\n var t = this.tryEntries[0].completion;\n if (\"throw\" === t.type) throw t.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(e) {\n if (this.done) throw e;\n var r = this;\n function handle(n, o) {\n return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n }\n for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n var i = this.tryEntries[o],\n a = i.completion;\n if (\"root\" === i.tryLoc) return handle(\"end\");\n if (i.tryLoc <= this.prev) {\n var c = n.call(i, \"catchLoc\"),\n u = n.call(i, \"finallyLoc\");\n if (c && u) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n } else if (c) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n } else {\n if (!u) throw new Error(\"try statement without catch or finally\");\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(t, e) {\n for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n var o = this.tryEntries[r];\n if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n var i = o;\n break;\n }\n }\n i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n var a = i ? i.completion : {};\n return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n },\n complete: function complete(t, e) {\n if (\"throw\" === t.type) throw t.arg;\n return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n },\n finish: function finish(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n }\n },\n \"catch\": function _catch(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.tryLoc === t) {\n var n = r.completion;\n if (\"throw\" === n.type) {\n var o = n.arg;\n resetTryEntry(r);\n }\n return o;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(e, r, n) {\n return this.delegate = {\n iterator: values(e),\n resultName: r,\n nextLoc: n\n }, \"next\" === this.method && (this.arg = t), y;\n }\n }, e;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","function valueOf(obj) {\n return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n // Test for strict equality first.\n if (a === b) return true;\n\n // Otherwise, if either of them == null they are not equal.\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return (\n Array.isArray(b) &&\n a.length === b.length &&\n a.every(function(item, index) {\n return valueEqual(item, b[index]);\n })\n );\n }\n\n if (typeof a === 'object' || typeof b === 'object') {\n var aValue = valueOf(a);\n var bValue = valueOf(b);\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n return Object.keys(Object.assign({}, a, b)).every(function(key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n var provided = typeof message === 'function' ? message() : message;\n var value = provided ? \"\".concat(prefix, \": \").concat(provided) : prefix;\n throw new Error(value);\n}\n\nexport { invariant as default };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","import React, { Component } from 'react';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : {};\n\nfunction getUniqueId() {\n var key = '__global_unique_id__';\n return commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1;\n}\n\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + getUniqueId() + '__';\n\n var Provider = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Provider, _Component);\n\n function Provider() {\n var _this;\n\n _this = _Component.apply(this, arguments) || this;\n _this.emitter = createEventEmitter(_this.props.value);\n return _this;\n }\n\n var _proto = Provider.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0;\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n\n if (process.env.NODE_ENV !== 'production') {\n warning((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: ' + changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n _proto.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = PropTypes.object.isRequired, _Provider$childContex);\n\n var Consumer = /*#__PURE__*/function (_Component2) {\n _inheritsLoose(Consumer, _Component2);\n\n function Consumer() {\n var _this2;\n\n _this2 = _Component2.apply(this, arguments) || this;\n _this2.state = {\n value: _this2.getValue()\n };\n\n _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({\n value: _this2.getValue()\n });\n }\n };\n\n return _this2;\n }\n\n var _proto2 = Consumer.prototype;\n\n _proto2.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n\n var observedBits = this.props.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n _proto2.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n _proto2.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = PropTypes.object, _Consumer$contextType);\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nvar index = React.createContext || createReactContext;\n\nexport default index;\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"mini-create-react-context\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n static computeRootMatch(pathname) {\n return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n location: props.history.location\n };\n\n // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the is mounted.\n this._isMounted = false;\n this._pendingLocation = null;\n\n if (!props.staticContext) {\n this.unlisten = props.history.listen(location => {\n if (this._isMounted) {\n this.setState({ location });\n } else {\n this._pendingLocation = location;\n }\n });\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n\n if (this._pendingLocation) {\n this.setState({ location: this._pendingLocation });\n }\n }\n\n componentWillUnmount() {\n if (this.unlisten) this.unlisten();\n }\n\n render() {\n return (\n \n );\n }\n}\n\nif (__DEV__) {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function(prevProps) {\n warning(\n prevProps.history === this.props.history,\n \"You cannot change \"\n );\n };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router\";\n\n/**\n * The public API for a that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n );\n };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n }\n\n componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n }\n\n render() {\n return null;\n }\n}\n\nexport default Lifecycle;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle\";\nimport RouterContext from \"./RouterContext\";\n\n/**\n * The public API for prompting the user before navigating away from a screen.\n */\nfunction Prompt({ message, when = true }) {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n if (!when || context.staticContext) return null;\n\n const method = context.history.block;\n\n return (\n {\n self.release = method(message);\n }}\n onUpdate={(self, prevProps) => {\n if (prevProps.message !== message) {\n self.release();\n self.release = method(message);\n }\n }}\n onUnmount={self => {\n self.release();\n }}\n message={message}\n />\n );\n }}\n \n );\n}\n\nif (__DEV__) {\n const messageType = PropTypes.oneOfType([PropTypes.func, PropTypes.string]);\n\n Prompt.propTypes = {\n when: PropTypes.bool,\n message: messageType.isRequired\n };\n}\n\nexport default Prompt;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path) {\n if (cache[path]) return cache[path];\n\n const generator = pathToRegexp.compile(path);\n\n if (cacheCount < cacheLimit) {\n cache[path] = generator;\n cacheCount++;\n }\n\n return generator;\n}\n\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\nfunction generatePath(path = \"/\", params = {}) {\n return path === \"/\" ? path : compilePath(path)(params, { pretty: true });\n}\n\nexport default generatePath;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle\";\nimport RouterContext from \"./RouterContext\";\nimport generatePath from \"./generatePath\";\n\n/**\n * The public API for navigating programmatically with a component.\n */\nfunction Redirect({ computedMatch, to, push = false }) {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history, staticContext } = context;\n\n const method = push ? history.push : history.replace;\n const location = createLocation(\n computedMatch\n ? typeof to === \"string\"\n ? generatePath(to, computedMatch.params)\n : {\n ...to,\n pathname: generatePath(to.pathname, computedMatch.params)\n }\n : to\n );\n\n // When rendering in a static context,\n // set the new location immediately.\n if (staticContext) {\n method(location);\n return null;\n }\n\n return (\n {\n method(location);\n }}\n onUpdate={(self, prevProps) => {\n const prevLocation = createLocation(prevProps.to);\n if (\n !locationsAreEqual(prevLocation, {\n ...location,\n key: prevLocation.key\n })\n ) {\n method(location);\n }\n }}\n to={to}\n />\n );\n }}\n \n );\n}\n\nif (__DEV__) {\n Redirect.propTypes = {\n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n };\n}\n\nexport default Redirect;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n if (pathCache[path]) return pathCache[path];\n\n const keys = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache[path] = result;\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = { path: options };\n }\n\n const { path, exact = false, strict = false, sensitive = false } = options;\n\n const paths = [].concat(path);\n\n return paths.reduce((matched, path) => {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive\n });\n const match = regexp.exec(pathname);\n\n if (!match) return null;\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext\";\nimport matchPath from \"./matchPath\";\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n const value = children(props);\n\n warning(\n value !== undefined,\n \"You returned `undefined` from the `children` function of \" +\n `, but you ` +\n \"should have returned a React element or `null`\"\n );\n\n return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n const match = this.props.computedMatch\n ? this.props.computedMatch // already computed the match for us\n : this.props.path\n ? matchPath(location.pathname, this.props)\n : context.match;\n\n const props = { ...context, location, match };\n\n let { children, component, render } = this.props;\n\n // Preact uses an empty array as children by\n // default, so use null if that's the case.\n if (Array.isArray(children) && children.length === 0) {\n children = null;\n }\n\n return (\n \n {props.match\n ? children\n ? typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : children\n : component\n ? React.createElement(component, props)\n : render\n ? render(props)\n : null\n : typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : null}\n \n );\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: (props, propName) => {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\n `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n );\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function() {\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.component\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.render\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(this.props.component && this.props.render),\n \"You should not use and in the same route; will be ignored\"\n );\n };\n\n Route.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router\";\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n\n return {\n ...location,\n pathname: addLeadingSlash(basename) + location.pathname\n };\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n\n const base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return {\n ...location,\n pathname: location.pathname.substr(base.length)\n };\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return () => {\n invariant(false, \"You cannot %s with \", methodName);\n };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n navigateTo(location, action) {\n const { basename = \"\", context = {} } = this.props;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }\n\n handlePush = location => this.navigateTo(location, \"PUSH\");\n handleReplace = location => this.navigateTo(location, \"REPLACE\");\n handleListen = () => noop;\n handleBlock = () => noop;\n\n render() {\n const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n const history = {\n createHref: path => addLeadingSlash(basename + createURL(path)),\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return ;\n }\n}\n\nif (__DEV__) {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n );\n };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext\";\nimport matchPath from \"./matchPath\";\n\n/**\n * The public API for rendering the first that matches.\n */\nclass Switch extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n\n let element, match;\n\n // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two s that render the same\n // component at different URLs.\n React.Children.forEach(this.props.children, child => {\n if (match == null && React.isValidElement(child)) {\n element = child;\n\n const path = child.props.path || child.props.from;\n\n match = path\n ? matchPath(location.pathname, { ...child.props, path })\n : context.match;\n }\n });\n\n return match\n ? React.cloneElement(element, { location, computedMatch: match })\n : null;\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport RouterContext from \"./RouterContext\";\nimport hoistStatics from \"hoist-non-react-statics\";\nimport invariant from \"tiny-invariant\";\n\n/**\n * A public higher-order component to access the imperative API\n */\nfunction withRouter(Component) {\n const displayName = `withRouter(${Component.displayName || Component.name})`;\n const C = props => {\n const { wrappedComponentRef, ...remainingProps } = props;\n\n return (\n \n {context => {\n invariant(\n context,\n `You should not use <${displayName} /> outside a `\n );\n return (\n \n );\n }}\n \n );\n };\n\n C.displayName = displayName;\n C.WrappedComponent = Component;\n\n if (__DEV__) {\n C.propTypes = {\n wrappedComponentRef: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.object\n ])\n };\n }\n\n return hoistStatics(C, Component);\n}\n\nexport default withRouter;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport Context from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useHistory()\"\n );\n }\n\n return useContext(Context).history;\n}\n\nexport function useLocation() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useLocation()\"\n );\n }\n\n return useContext(Context).location;\n}\n\nexport function useParams() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useParams()\"\n );\n }\n\n const match = useContext(Context).match;\n return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useRouteMatch()\"\n );\n }\n\n return path\n ? matchPath(useLocation().pathname, path)\n : useContext(Context).match;\n}\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n );\n };\n}\n\nexport default BrowserRouter;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n );\n };\n}\n\nexport default HashRouter;\n","import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n return typeof to === \"string\"\n ? createLocation(to, null, null, currentLocation)\n : to;\n};\n","import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport { resolveToLocation, normalizeToLocation } from \"./utils/locationUtils\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n (\n {\n innerRef, // TODO: deprecate\n navigate,\n onClick,\n ...rest\n },\n forwardedRef\n ) => {\n const { target } = rest;\n\n let props = {\n ...rest,\n onClick: event => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n\n return ;\n }\n);\n\nif (__DEV__) {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware .\n */\nconst Link = forwardRef(\n (\n {\n component = LinkAnchor,\n replace,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history } = context;\n\n const location = normalizeToLocation(\n resolveToLocation(to, context.location),\n context.location\n );\n\n const href = location ? history.createHref(location) : \"\";\n const props = {\n ...rest,\n href,\n navigate() {\n const location = resolveToLocation(to, context.location);\n const method = replace ? history.replace : history.push;\n\n method(location);\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(component, props);\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n const toType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n PropTypes.func\n ]);\n const refType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any })\n ]);\n\n Link.displayName = \"Link\";\n\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link\";\nimport { resolveToLocation, normalizeToLocation } from \"./utils/locationUtils\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n (\n {\n \"aria-current\": ariaCurrent = \"page\",\n activeClassName = \"active\",\n activeStyle,\n className: classNameProp,\n exact,\n isActive: isActiveProp,\n location: locationProp,\n strict,\n style: styleProp,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const currentLocation = locationProp || context.location;\n const toLocation = normalizeToLocation(\n resolveToLocation(to, currentLocation),\n currentLocation\n );\n const { pathname: path } = toLocation;\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath =\n path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n const match = escapedPath\n ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact,\n strict\n })\n : null;\n const isActive = !!(isActiveProp\n ? isActiveProp(match, currentLocation)\n : match);\n\n const className = isActive\n ? joinClassnames(classNameProp, activeClassName)\n : classNameProp;\n const style = isActive ? { ...styleProp, ...activeStyle } : styleProp;\n\n const props = {\n \"aria-current\": (isActive && ariaCurrent) || null,\n className,\n style,\n to: toLocation,\n ...rest\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return ;\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n\n const ariaCurrentType = PropTypes.oneOf([\n \"page\",\n \"step\",\n \"location\",\n \"date\",\n \"time\",\n \"true\"\n ]);\n\n NavLink.propTypes = {\n ...Link.propTypes,\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.string,\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n strict: PropTypes.bool,\n style: PropTypes.object\n };\n}\n\nexport default NavLink;\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","/*!\n * Copyright (c) 2021-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { APIError } from '../../errors/types';\nimport {\n OktaAuthOAuthInterface,\n MinimalOktaOAuthInterface,\n Tokens,\n TransactionManagerConstructor,\n TransactionManagerInterface\n} from '../../oidc/types';\nimport { FlowIdentifier } from './FlowIdentifier';\nimport {\n IdxActions,\n IdxAuthenticator,\n IdxContext,\n IdxForm,\n IdxMessage,\n IdxOption,\n IdxRemediation,\n IdxResponse,\n RawIdxResponse,\n IdxActionParams,\n IdpConfig,\n IdxToPersist,\n ChallengeData,\n ActivationData,\n} from './idx-js';\nimport {\n AccountUnlockOptions,\n AuthenticationOptions,\n CancelOptions,\n InteractOptions,\n IntrospectOptions,\n OktaAuthIdxOptions,\n PasswordRecoveryOptions,\n ProceedOptions,\n RegistrationOptions,\n StartOptions,\n IdxTransactionMetaOptions\n} from './options';\nimport { IdxTransactionMeta } from './meta';\nimport { IdxStorageManagerInterface, SavedIdxResponse } from './storage';\nimport type {\n WebauthnEnrollValues,\n WebauthnVerificationValues\n} from '../authenticator';\nimport { OktaAuthConstructor } from '../../base/types';\n\nexport enum IdxStatus {\n SUCCESS = 'SUCCESS',\n PENDING = 'PENDING',\n FAILURE = 'FAILURE',\n TERMINAL = 'TERMINAL',\n CANCELED = 'CANCELED',\n}\n\nexport enum AuthenticatorKey {\n OKTA_PASSWORD = 'okta_password',\n OKTA_EMAIL = 'okta_email',\n PHONE_NUMBER = 'phone_number',\n GOOGLE_AUTHENTICATOR = 'google_otp',\n SECURITY_QUESTION = 'security_question',\n OKTA_VERIFY = 'okta_verify',\n WEBAUTHN = 'webauthn',\n}\n\nexport type Input = {\n name: string;\n key?: string;\n type?: string;\n label?: string;\n value?: string | {form: IdxForm} | Input[];\n minLength?: number;\n maxLength?: number;\n secret?: boolean;\n required?: boolean;\n options?: IdxOption[];\n mutable?: boolean;\n visible?: boolean;\n customLabel?: boolean\n}\n\n\nexport interface IdxPollOptions {\n required?: boolean;\n refresh?: number;\n}\n\nexport type NextStep = {\n name: string;\n authenticator?: IdxAuthenticator;\n canSkip?: boolean;\n canResend?: boolean;\n inputs?: Input[];\n poll?: IdxPollOptions;\n authenticatorEnrollments?: IdxAuthenticator[];\n // eslint-disable-next-line no-use-before-define\n action?: (params?: IdxActionParams) => Promise;\n idp?: IdpConfig;\n href?: string;\n relatesTo?: {\n type?: string;\n value: IdxAuthenticator;\n };\n refresh?: number;\n}\n\nexport enum IdxFeature {\n PASSWORD_RECOVERY = 'recover-password',\n REGISTRATION = 'enroll-profile',\n SOCIAL_IDP = 'redirect-idp',\n ACCOUNT_UNLOCK = 'unlock-account',\n}\n\n\nexport interface IdxTransaction {\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 requestDidSucceed?: boolean;\n stepUp?: boolean;\n \n // from idx-js, used by signin widget\n proceed: (remediationName: string, params: unknown) => Promise;\n neededToProceed: IdxRemediation[];\n rawIdxState: RawIdxResponse;\n interactionCode?: string;\n actions: IdxActions;\n context: IdxContext;\n}\n\n\nexport type Authenticator = {\n id?: string;\n key?: string;\n methodType?: string;\n phoneNumber?: string;\n channel?: string;\n};\n\nexport function isAuthenticator(obj: any): obj is Authenticator {\n return obj && (obj.key || obj.id);\n}\n\nexport interface RemediationResponse {\n idxResponse: IdxResponse;\n nextStep?: NextStep;\n messages?: IdxMessage[];\n terminal?: boolean;\n canceled?: boolean;\n}\n\nexport interface InteractResponse {\n state?: string;\n interactionHandle: string;\n meta: IdxTransactionMeta;\n}\n\nexport interface EmailVerifyCallbackResponse {\n state: string;\n otp: string;\n}\n\nexport interface MinimalIdxAPI {\n // lowest level api\n makeIdxResponse: (rawIdxResponse: RawIdxResponse, toPersist: IdxToPersist, requestDidSucceed: boolean) => IdxResponse;\n\n // flow control\n start: (options?: StartOptions) => Promise;\n canProceed(options?: ProceedOptions): boolean;\n proceed: (options?: ProceedOptions) => Promise;\n\n // call `start` instead of `startTransaction`. `startTransaction` will be removed in next major version (7.0)\n startTransaction: (options?: StartOptions) => Promise;\n\n // transaction meta\n getSavedTransactionMeta: (options?: IdxTransactionMetaOptions) => IdxTransactionMeta | undefined;\n createTransactionMeta: (options?: IdxTransactionMetaOptions) => Promise;\n getTransactionMeta: (options?: IdxTransactionMetaOptions) => Promise;\n saveTransactionMeta: (meta: unknown) => void;\n clearTransactionMeta: () => void;\n isTransactionMetaValid: (meta: unknown) => boolean;\n}\n\nexport interface IdxAPI {\n // lowest level api\n interact: (options?: InteractOptions) => Promise;\n introspect: (options?: IntrospectOptions) => Promise;\n makeIdxResponse: (rawIdxResponse: RawIdxResponse, toPersist: IdxToPersist, requestDidSucceed: boolean) => IdxResponse;\n\n // flow entrypoints\n authenticate: (options?: AuthenticationOptions) => Promise;\n register: (options?: RegistrationOptions) => Promise;\n recoverPassword: (options?: PasswordRecoveryOptions) => Promise;\n unlockAccount: (options?: AccountUnlockOptions) => Promise;\n poll: (options?: IdxPollOptions) => Promise;\n\n // flow control\n start: (options?: StartOptions) => Promise;\n canProceed(options?: ProceedOptions): boolean;\n proceed: (options?: ProceedOptions) => Promise;\n cancel: (options?: CancelOptions) => Promise;\n getFlow(): FlowIdentifier | undefined;\n setFlow(flow: FlowIdentifier): void;\n\n // call `start` instead of `startTransaction`. `startTransaction` will be removed in next major version (7.0)\n startTransaction: (options?: StartOptions) => Promise;\n\n // redirect callbacks\n isInteractionRequired: (hashOrSearch?: string) => boolean;\n isInteractionRequiredError: (error: Error) => boolean; \n handleInteractionCodeRedirect: (url: string) => Promise;\n isEmailVerifyCallback: (search: string) => boolean;\n parseEmailVerifyCallback: (search: string) => EmailVerifyCallbackResponse;\n handleEmailVerifyCallback: (search: string) => Promise;\n isEmailVerifyCallbackError: (error: Error) => boolean;\n\n // transaction meta\n getSavedTransactionMeta: (options?: IdxTransactionMetaOptions) => IdxTransactionMeta | undefined;\n createTransactionMeta: (options?: IdxTransactionMetaOptions) => Promise;\n getTransactionMeta: (options?: IdxTransactionMetaOptions) => Promise;\n saveTransactionMeta: (meta: unknown) => void;\n clearTransactionMeta: () => void;\n isTransactionMetaValid: (meta: unknown) => boolean;\n}\n\nexport interface IdxTransactionManagerInterface extends TransactionManagerInterface {\n saveIdxResponse(data: SavedIdxResponse): void;\n loadIdxResponse(options?: IntrospectOptions): SavedIdxResponse | null;\n clearIdxResponse(): void;\n}\n\nexport type IdxTransactionManagerConstructor = TransactionManagerConstructor;\n\nexport interface WebauthnAPI {\n getAssertion(credential: PublicKeyCredential): WebauthnVerificationValues;\n getAttestation(credential: PublicKeyCredential): WebauthnEnrollValues;\n buildCredentialRequestOptions(\n challengeData: ChallengeData, authenticatorEnrollments: IdxAuthenticator[]\n ): CredentialRequestOptions;\n buildCredentialCreationOptions(\n activationData: ActivationData, authenticatorEnrollments: IdxAuthenticator[]\n ): CredentialCreationOptions;\n}\n\nexport interface OktaAuthIdxInterface\n<\n M extends IdxTransactionMeta = IdxTransactionMeta,\n S extends IdxStorageManagerInterface = IdxStorageManagerInterface,\n O extends OktaAuthIdxOptions = OktaAuthIdxOptions,\n TM extends IdxTransactionManagerInterface = IdxTransactionManagerInterface\n>\n extends OktaAuthOAuthInterface\n{\n idx: IdxAPI;\n}\n\nexport interface MinimalOktaAuthIdxInterface\n<\n M extends IdxTransactionMeta = IdxTransactionMeta,\n S extends IdxStorageManagerInterface = IdxStorageManagerInterface,\n O extends OktaAuthIdxOptions = OktaAuthIdxOptions,\n TM extends IdxTransactionManagerInterface = IdxTransactionManagerInterface\n>\n extends MinimalOktaOAuthInterface\n{\n idx: MinimalIdxAPI;\n}\n\nexport interface OktaAuthIdxConstructor\n<\n I extends MinimalOktaAuthIdxInterface = OktaAuthIdxInterface\n>\n extends OktaAuthConstructor\n{\n new(...args: any[]): I;\n webauthn: WebauthnAPI;\n}\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/* global window */\n\nexport function getNativeConsole() {\n if (typeof window !== 'undefined') {\n return window.console;\n } else if (typeof console !== 'undefined') {\n return console;\n } else {\n return undefined;\n }\n}\n\nexport function getConsole() {\n var nativeConsole = getNativeConsole();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (nativeConsole && nativeConsole.log) {\n return nativeConsole;\n }\n return {\n log: function() {},\n warn: function() {},\n group: function() {},\n groupEnd: function() {}\n };\n}\n\nexport function warn(text) {\n /* eslint-disable no-console */\n getConsole().warn('[okta-auth-sdk] WARN: ' + text);\n /* eslint-enable */\n}\n\nexport function deprecate(text) {\n /* eslint-disable no-console */\n getConsole().warn('[okta-auth-sdk] DEPRECATION: ' + text);\n /* eslint-enable */\n}\n\nexport function deprecateWrap(text, fn) {\n return function() {\n deprecate(text);\n return fn.apply(null, arguments);\n };\n}\n\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\nexport function bind(fn, ctx) {\n var additionalArgs = Array.prototype.slice.call(arguments, 2);\n return function() {\n var args = Array.prototype.slice.call(arguments);\n args = additionalArgs.concat(args);\n return fn.apply(ctx, args);\n };\n}\n\n// TODO: replace all references with `Object.assign` then remove this function\nexport function extend() {\n // First object will be modified!\n var obj1 = arguments[0];\n // Properties from other objects will be copied over\n var objArray = [].slice.call(arguments, 1);\n objArray.forEach(function(obj) {\n for (var prop in obj) {\n // copy over all properties with defined values\n if (Object.prototype.hasOwnProperty.call(obj, prop) && obj[prop] !== undefined) {\n obj1[prop] = obj[prop];\n }\n }\n });\n return obj1; // return the modified object\n}\n\nexport function removeNils(obj) {\n var cleaned = {};\n for (var prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n var value = obj[prop];\n if (value !== null && value !== undefined) {\n cleaned[prop] = value;\n }\n }\n }\n return cleaned;\n}\n\nexport function clone(obj) {\n if (obj) {\n var str = JSON.stringify(obj);\n if (str) {\n return JSON.parse(str);\n }\n }\n return obj;\n}\n\n// Analogous to _.omit\nexport function omit(obj, ...props: any[]) {\n // var props = Array.prototype.slice.call(arguments, 1);\n var newobj = {};\n for (var p in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, p) && props.indexOf(p) == -1) {\n newobj[p] = obj[p];\n }\n }\n return clone(newobj);\n}\n\nexport function find(collection, searchParams) {\n var c = collection.length;\n while (c--) {\n var item = collection[c];\n var found = true;\n for (var prop in searchParams) {\n if (!Object.prototype.hasOwnProperty.call(searchParams, prop)) {\n continue;\n }\n if (item[prop] !== searchParams[prop]) {\n found = false;\n break;\n }\n }\n if (found) {\n return item;\n }\n }\n}\n\nexport function getLink(obj, linkName, altName?) {\n if (!obj || !obj._links) {\n return;\n }\n\n var link = clone(obj._links[linkName]);\n\n // If a link has a name and we have an altName, return if they match\n if (link && link.name && altName) {\n if (link.name === altName) {\n return link;\n }\n } else {\n return link;\n }\n}\n\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\nexport function isoToUTCString(str) {\n var parts = str.match(/\\d+/g),\n isoTime = Date.UTC(parts[0], parts[1] - 1, parts[2], parts[3], parts[4], parts[5]),\n isoDate = new Date(isoTime);\n\n return isoDate.toUTCString();\n}\n\nexport function genRandomString(length) {\n var randomCharset = 'abcdefghijklnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';\n var random = '';\n for (var c = 0, cl = randomCharset.length; c < length; ++c) {\n random += randomCharset[Math.floor(Math.random() * cl)];\n }\n return random;\n}\n\nexport function delay(ms) {\n return new Promise(function(resolve) {\n setTimeout(resolve, ms);\n });\n}\n\nexport function split2(str, delim) {\n const parts = str.split(delim);\n return [\n parts[0], \n parts.splice(1, parts.length).join(delim),\n ];\n}\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\nexport function isAbsoluteUrl(url) {\n return /^[a-z][a-z0-9+.-]*:/i.test(url);\n}\n\nexport function toAbsoluteUrl(url = '', baseUrl) {\n if (isAbsoluteUrl(url)) {\n return url;\n }\n baseUrl = removeTrailingSlash(baseUrl);\n return url[0] === '/' ? `${baseUrl}${url}` : `${baseUrl}/${url}`;\n}\n\nexport function toRelativeUrl(url = '', baseUrl) {\n if (isAbsoluteUrl(url)) {\n url = url.substring(baseUrl.length);\n }\n\n return url[0] === '/' ? url : `/${url}`;\n}\n\nexport function toQueryString(obj) {\n var str = [];\n if (obj !== null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) &&\n obj[key] !== undefined &&\n obj[key] !== null) {\n str.push(key + '=' + encodeURIComponent(obj[key]) as never);\n }\n }\n }\n if (str.length) {\n return '?' + str.join('&');\n } else {\n return '';\n }\n}\n\nexport function removeTrailingSlash(path) {\n if (!path) {\n return;\n }\n // Remove any whitespace before or after string\n var trimmed = path.replace(/^\\s+|\\s+$/gm,'');\n // Remove trailing slash(es)\n trimmed = trimmed.replace(/\\/+$/, '');\n\n return trimmed;\n}\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\nexport default class CustomError extends Error {\n constructor(message: string) {\n // https://stackoverflow.com/questions/41102060/typescript-extending-error-class\n super(message); // 'Error' breaks prototype chain here\n Object.setPrototypeOf(this, new.target.prototype); // restore prototype chain\n }\n}\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\nimport CustomError from './CustomError';\nimport { APIError, FieldError } from './types';\n\nexport default class AuthSdkError extends CustomError implements APIError {\n errorSummary: string;\n errorCode: string;\n errorLink: string;\n errorId: string;\n errorCauses: Array;\n xhr?: XMLHttpRequest;\n\n constructor(msg: string, xhr?: XMLHttpRequest) {\n super(msg);\n this.name = 'AuthSdkError';\n this.errorCode = 'INTERNAL';\n this.errorSummary = msg;\n this.errorLink = 'INTERNAL';\n this.errorId = 'INTERNAL';\n this.errorCauses = [];\n if (xhr) {\n this.xhr = xhr;\n }\n }\n}\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/* eslint-disable complexity, max-statements */\nimport { genRandomString, removeTrailingSlash } from '../../util';\nimport AuthSdkError from '../../errors/AuthSdkError';\nimport { OktaAuthOAuthInterface, CustomUrls } from '../types';\n\nexport function generateState() {\n return genRandomString(64);\n}\n\nexport function generateNonce() {\n return genRandomString(64);\n}\n\nfunction getIssuer(sdk: OktaAuthOAuthInterface, options: CustomUrls = {}) {\n const issuer = removeTrailingSlash(options.issuer) || sdk.options.issuer;\n return issuer;\n}\n\nexport function getOAuthBaseUrl(sdk: OktaAuthOAuthInterface, options: CustomUrls = {}) {\n const issuer = getIssuer(sdk, options);\n const baseUrl = issuer.indexOf('/oauth2') > 0 ? issuer : issuer + '/oauth2';\n return baseUrl;\n}\n\nexport function getOAuthDomain(sdk: OktaAuthOAuthInterface, options: CustomUrls = {}) {\n const issuer = getIssuer(sdk, options);\n const domain = issuer.split('/oauth2')[0];\n return domain;\n}\n\nexport function getOAuthUrls(sdk: OktaAuthOAuthInterface, options?: CustomUrls): CustomUrls {\n if (arguments.length > 2) {\n throw new AuthSdkError('As of version 3.0, \"getOAuthUrls\" takes only a single set of options');\n }\n options = options || {};\n\n // Get user-supplied arguments\n var authorizeUrl = removeTrailingSlash(options.authorizeUrl) || sdk.options.authorizeUrl;\n var issuer = getIssuer(sdk, options);\n var userinfoUrl = removeTrailingSlash(options.userinfoUrl) || sdk.options.userinfoUrl;\n var tokenUrl = removeTrailingSlash(options.tokenUrl) || sdk.options.tokenUrl;\n var logoutUrl = removeTrailingSlash(options.logoutUrl) || sdk.options.logoutUrl;\n var revokeUrl = removeTrailingSlash(options.revokeUrl) || sdk.options.revokeUrl;\n\n var baseUrl = getOAuthBaseUrl(sdk, options);\n\n authorizeUrl = authorizeUrl || baseUrl + '/v1/authorize';\n userinfoUrl = userinfoUrl || baseUrl + '/v1/userinfo';\n tokenUrl = tokenUrl || baseUrl + '/v1/token';\n revokeUrl = revokeUrl || baseUrl + '/v1/revoke';\n logoutUrl = logoutUrl || baseUrl + '/v1/logout';\n\n return {\n issuer: issuer,\n authorizeUrl: authorizeUrl,\n userinfoUrl: userinfoUrl,\n tokenUrl: tokenUrl,\n revokeUrl: revokeUrl,\n logoutUrl: logoutUrl\n };\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { OAuthTransactionMeta, OktaAuthOAuthInterface, PKCETransactionMeta, TokenParams } from '../types';\nimport { getOAuthUrls } from './oauth';\n\nexport function createOAuthMeta(\n sdk: OktaAuthOAuthInterface, \n tokenParams: TokenParams\n): OAuthTransactionMeta | PKCETransactionMeta {\n const issuer = sdk.options.issuer!;\n const urls = getOAuthUrls(sdk, tokenParams);\n const oauthMeta: OAuthTransactionMeta = {\n issuer,\n urls,\n clientId: tokenParams.clientId!,\n redirectUri: tokenParams.redirectUri!,\n responseType: tokenParams.responseType!,\n responseMode: tokenParams.responseMode!,\n scopes: tokenParams.scopes!,\n state: tokenParams.state!,\n nonce: tokenParams.nonce!,\n ignoreSignature: tokenParams.ignoreSignature!,\n acrValues: tokenParams.acrValues,\n };\n\n if (tokenParams.pkce === false) {\n // Implicit flow or authorization_code without PKCE\n return oauthMeta;\n }\n\n const pkceMeta: PKCETransactionMeta = {\n ...oauthMeta,\n codeVerifier: tokenParams.codeVerifier!,\n codeChallengeMethod: tokenParams.codeChallengeMethod!,\n codeChallenge: tokenParams.codeChallenge!,\n };\n\n return pkceMeta;\n}\n","/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (name, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n name = encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n name + '=' + converter.write(value, name) + stringifiedAttributes)\n }\n\n function get (name) {\n if (typeof document === 'undefined' || (arguments.length && !name)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var found = decodeURIComponent(parts[0]);\n jar[found] = converter.read(value, found);\n\n if (name === found) {\n break\n }\n } catch (e) {}\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set,\n get,\n remove: function (name, attributes) {\n set(\n name,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\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\nimport { UserClaims } from './UserClaims';\n\nexport interface AbstractToken {\n expiresAt: number;\n authorizeUrl: string;\n scopes: string[];\n pendingRemove?: boolean;\n}\n\nexport interface AccessToken extends AbstractToken {\n accessToken: string;\n claims: UserClaims;\n tokenType: string;\n userinfoUrl: string;\n}\n\nexport interface RefreshToken extends AbstractToken {\n refreshToken: string;\n tokenUrl: string;\n issuer: string;\n}\n\nexport interface IDToken extends AbstractToken {\n idToken: string;\n claims: UserClaims;\n issuer: string;\n clientId: string;\n}\n\nexport type Token = AccessToken | IDToken | RefreshToken;\nexport type RevocableToken = AccessToken | RefreshToken;\n\nexport type TokenType = 'accessToken' | 'idToken' | 'refreshToken';\nexport enum TokenKind {\n ACCESS = 'accessToken',\n ID = 'idToken',\n REFRESH = 'refreshToken',\n}\n\nexport function isToken(obj: any): obj is Token {\n if (obj &&\n (obj.accessToken || obj.idToken || obj.refreshToken) &&\n Array.isArray(obj.scopes)) {\n return true;\n }\n return false;\n}\n\nexport function isAccessToken(obj: any): obj is AccessToken {\n return obj && obj.accessToken;\n}\n\nexport function isIDToken(obj: any): obj is IDToken {\n return obj && obj.idToken;\n}\n\nexport function isRefreshToken(obj: any): obj is RefreshToken {\n return obj && obj.refreshToken;\n}\n\nexport interface Tokens {\n accessToken?: AccessToken;\n idToken?: IDToken;\n refreshToken?: RefreshToken;\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2021, 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 { OktaAuthIdxInterface, IdxTransactionMeta, IdxTransactionMetaOptions } from './types';\nimport { removeNils, warn } from '../util';\nimport { createOAuthMeta, PKCETransactionMeta } from '../oidc';\n\n// Calculate new values\nexport async function createTransactionMeta(\n authClient: OktaAuthIdxInterface,\n options: IdxTransactionMetaOptions = {}\n): Promise {\n const tokenParams = await authClient.token.prepareTokenParams(options);\n const pkceMeta = createOAuthMeta(authClient, tokenParams) as PKCETransactionMeta;\n let {\n flow = 'default',\n withCredentials = true,\n activationToken = undefined,\n recoveryToken = undefined,\n maxAge = undefined,\n acrValues = undefined,\n } = { ...authClient.options, ...options }; // local options override SDK options\n\n const meta: IdxTransactionMeta = {\n ...pkceMeta,\n flow,\n withCredentials,\n activationToken,\n recoveryToken,\n maxAge,\n acrValues\n };\n return meta;\n}\n\nexport function hasSavedInteractionHandle(\n authClient: OktaAuthIdxInterface,\n options?: IdxTransactionMetaOptions\n): boolean {\n const savedMeta = getSavedTransactionMeta(authClient, options);\n if (savedMeta?.interactionHandle) {\n return true;\n }\n return false;\n}\n\n// Returns the saved transaction meta, if it exists and is valid\nexport function getSavedTransactionMeta(\n authClient: OktaAuthIdxInterface,\n options?: IdxTransactionMetaOptions\n): IdxTransactionMeta | undefined {\n options = removeNils(options);\n options = { ...authClient.options, ...options }; // local options override SDK options\n let savedMeta;\n try {\n savedMeta = authClient.transactionManager.load(options) as IdxTransactionMeta;\n } catch (e) {\n // ignore errors here\n }\n\n if (!savedMeta) {\n return;\n }\n\n if (isTransactionMetaValid(savedMeta, options)) {\n return savedMeta;\n }\n\n // existing meta is not valid for this configuration\n // this is common when changing configuration in local development environment\n // in a production environment, this may indicate that two apps are sharing a storage key\n warn('Saved transaction meta does not match the current configuration. ' + \n 'This may indicate that two apps are sharing a storage key.');\n\n}\n\nexport async function getTransactionMeta(\n authClient: OktaAuthIdxInterface,\n options?: IdxTransactionMetaOptions\n): Promise {\n options = removeNils(options);\n options = { ...authClient.options, ...options }; // local options override SDK options\n // Load existing transaction meta from storage\n const validExistingMeta = getSavedTransactionMeta(authClient, options);\n if (validExistingMeta) {\n return validExistingMeta;\n }\n // No existing? Create new transaction meta.\n return createTransactionMeta(authClient, options);\n}\n\nexport function saveTransactionMeta (authClient: OktaAuthIdxInterface, meta): void {\n authClient.transactionManager.save(meta, { muteWarning: true });\n}\n\nexport function clearTransactionMeta (authClient: OktaAuthIdxInterface): void {\n authClient.transactionManager.clear();\n}\n\nexport function isTransactionMetaValid (meta, options: IdxTransactionMetaOptions = {}): boolean {\n // Validate against certain options. If these exist in options, they must match in meta\n const keys = [\n 'issuer',\n 'clientId',\n 'redirectUri',\n 'state',\n 'codeChallenge',\n 'codeChallengeMethod',\n 'activationToken',\n 'recoveryToken'\n ];\n if (isTransactionMetaValidForOptions(meta, options, keys) === false) {\n return false;\n }\n\n // Validate configured flow\n const { flow } = options;\n if (isTransactionMetaValidForFlow(meta, flow) === false) {\n return false;\n }\n\n return true;\n}\n\nexport function isTransactionMetaValidForFlow(meta, flow) {\n // Specific flows should not share transaction data\n const shouldValidateFlow = flow && flow !== 'default' && flow !== 'proceed';\n if (shouldValidateFlow) {\n if (flow !== meta.flow) {\n // The flow has changed; abandon the old transaction\n return false;\n }\n }\n return true;\n}\n\nexport function isTransactionMetaValidForOptions(meta, options, keys) {\n // returns false if values in meta do not match options\n // if the option does not have a value for a specific key, it is ignored\n const mismatch = keys.some(key => {\n const value = options[key];\n if (value && value !== meta[key]) {\n return true;\n }\n });\n return !mismatch;\n}\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\nexport function isString(obj: any): obj is string {\n return Object.prototype.toString.call(obj) === '[object String]';\n}\n\nexport function isObject(obj: any): obj is object {\n return Object.prototype.toString.call(obj) === '[object Object]';\n}\n\nexport function isNumber(obj: any): obj is number {\n return Object.prototype.toString.call(obj) === '[object Number]';\n}\n\nexport function isFunction(fn: any): fn is (...any: any[]) => any {\n return !!fn && {}.toString.call(fn) === '[object Function]';\n}\n\nexport function isPromise(obj) {\n return obj && obj.finally && (typeof obj.finally === 'function');\n}\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\nexport const STATE_TOKEN_KEY_NAME = 'oktaStateToken';\nexport const DEFAULT_POLLING_DELAY = 500;\nexport const DEFAULT_MAX_CLOCK_SKEW = 300;\nexport const DEFAULT_CACHE_DURATION = 86400;\nexport const TOKEN_STORAGE_NAME = 'okta-token-storage';\nexport const CACHE_STORAGE_NAME = 'okta-cache-storage';\nexport const PKCE_STORAGE_NAME = 'okta-pkce-storage';\nexport const TRANSACTION_STORAGE_NAME = 'okta-transaction-storage';\nexport const SHARED_TRANSACTION_STORAGE_NAME = 'okta-shared-transaction-storage';\nexport const ORIGINAL_URI_STORAGE_NAME = 'okta-original-uri-storage';\nexport const IDX_RESPONSE_STORAGE_NAME = 'okta-idx-response-storage';\nexport const ACCESS_TOKEN_STORAGE_KEY = 'accessToken';\nexport const ID_TOKEN_STORAGE_KEY = 'idToken';\nexport const REFRESH_TOKEN_STORAGE_KEY = 'refreshToken';\nexport const REFERRER_PATH_STORAGE_KEY = 'referrerPath';\n\n// Code verifier: Random URL-safe string with a minimum length of 43 characters.\n// Code challenge: Base64 URL-encoded SHA-256 hash of the code verifier.\nexport const MIN_VERIFIER_LENGTH = 43;\nexport const MAX_VERIFIER_LENGTH = 128;\nexport const DEFAULT_CODE_CHALLENGE_METHOD = 'S256';\n\nexport const IDX_API_VERSION = '1.0.0';","/*!\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 CustomError from './CustomError';\nimport { HttpResponse } from '../http/types';\nimport { APIError, FieldError } from './types';\n\nexport default class AuthApiError extends CustomError implements APIError {\n errorSummary: string;\n errorCode?: string;\n errorLink?: string;\n errorId?: string;\n errorCauses?: Array;\n xhr?: HttpResponse;\n meta?: Record;\n\n constructor(err: APIError, xhr?: HttpResponse, meta?: Record) {\n const message = err.errorSummary;\n super(message);\n\n this.name = 'AuthApiError';\n this.errorSummary = err.errorSummary;\n this.errorCode = err.errorCode;\n this.errorLink = err.errorLink;\n this.errorId = err.errorId;\n this.errorCauses = err.errorCauses;\n\n if (xhr) {\n this.xhr = xhr;\n }\n\n if (meta) {\n this.meta = meta;\n }\n }\n}\n","/* eslint-disable camelcase */\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\nimport CustomError from './CustomError';\n\nexport default class OAuthError extends CustomError {\n errorCode: string;\n errorSummary: string;\n\n // for widget / idx-js backward compatibility\n error: string;\n error_description: string;\n\n constructor(errorCode: string, summary: string) {\n super(summary);\n\n this.name = 'OAuthError';\n this.errorCode = errorCode;\n this.errorSummary = summary;\n\n // for widget / idx-js backward compatibility\n this.error = errorCode;\n this.error_description = summary;\n }\n}\n\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\n/* eslint-disable complexity */\nimport { isString, clone, isAbsoluteUrl, removeNils } from '../util';\nimport { STATE_TOKEN_KEY_NAME, DEFAULT_CACHE_DURATION } from '../constants';\nimport {\n OktaAuthHttpInterface,\n RequestOptions,\n FetchOptions,\n RequestData,\n HttpResponse\n} from './types';\nimport { AuthApiError, OAuthError, AuthSdkError, APIError } from '../errors';\n\ntype InsufficientAuthenticationError = {\n error: string;\n // eslint-disable-next-line camelcase\n error_description: string;\n // eslint-disable-next-line camelcase\n max_age: string;\n // eslint-disable-next-line camelcase\n acr_values: string;\n};\n\nconst parseInsufficientAuthenticationError = (\n header: string\n): InsufficientAuthenticationError => {\n if (!header) {\n throw new AuthSdkError('Missing header string');\n }\n\n return header\n .split(',')\n .map(part => part.trim())\n .map(part => part.split('='))\n .reduce((acc, curr) => {\n // unwrap quotes from value\n acc[curr[0]] = curr[1].replace(/^\"(.*)\"$/, '$1');\n return acc;\n }, {}) as InsufficientAuthenticationError;\n};\n\nconst formatError = (sdk: OktaAuthHttpInterface, error: HttpResponse | Error): AuthApiError | OAuthError => {\n if (error instanceof Error) {\n // fetch() can throw exceptions\n // see https://developer.mozilla.org/en-US/docs/Web/API/fetch#exceptions\n return new AuthApiError({\n errorSummary: error.message,\n });\n }\n\n let resp: HttpResponse = error;\n let err: AuthApiError | OAuthError;\n let serverErr: Record = {};\n if (resp.responseText && isString(resp.responseText)) {\n try {\n serverErr = JSON.parse(resp.responseText);\n } catch (e) {\n serverErr = {\n errorSummary: 'Unknown error'\n };\n }\n }\n\n if (resp.status >= 500) {\n serverErr.errorSummary = 'Unknown error';\n }\n\n if (sdk.options.transformErrorXHR) {\n resp = sdk.options.transformErrorXHR(clone(resp));\n }\n\n if (serverErr.error && serverErr.error_description) {\n err = new OAuthError(serverErr.error, serverErr.error_description);\n } else {\n err = new AuthApiError(serverErr as APIError, resp);\n }\n\n if (resp?.status === 403 && !!resp?.headers?.['www-authenticate']) {\n const { \n error, \n // eslint-disable-next-line camelcase\n error_description,\n // eslint-disable-next-line camelcase\n max_age,\n // eslint-disable-next-line camelcase\n acr_values \n } = parseInsufficientAuthenticationError(resp?.headers?.['www-authenticate']);\n if (error === 'insufficient_authentication_context') {\n err = new AuthApiError(\n { \n errorSummary: error,\n // eslint-disable-next-line camelcase\n errorCauses: [{ errorSummary: error_description }]\n }, \n resp, \n {\n // eslint-disable-next-line camelcase\n max_age: +max_age,\n // eslint-disable-next-line camelcase\n ...(acr_values && { acr_values })\n }\n );\n }\n }\n\n return err;\n};\n\nexport function httpRequest(sdk: OktaAuthHttpInterface, options: RequestOptions): Promise {\n options = options || {};\n\n if (sdk.options.httpRequestInterceptors) {\n for (const interceptor of sdk.options.httpRequestInterceptors) {\n interceptor(options);\n }\n }\n\n var url = options.url,\n method = options.method,\n args = options.args,\n saveAuthnState = options.saveAuthnState,\n accessToken = options.accessToken,\n withCredentials = options.withCredentials === true, // default value is false\n storageUtil = sdk.options.storageUtil,\n storage = storageUtil!.storage,\n httpCache = sdk.storageManager.getHttpCache(sdk.options.cookies);\n\n if (options.cacheResponse) {\n var cacheContents = httpCache.getStorage();\n var cachedResponse = cacheContents[url as string];\n if (cachedResponse && Date.now()/1000 < cachedResponse.expiresAt) {\n return Promise.resolve(cachedResponse.response);\n }\n }\n\n var oktaUserAgentHeader = sdk._oktaUserAgent.getHttpHeader();\n var headers: HeadersInit = {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n ...oktaUserAgentHeader\n };\n Object.assign(headers, sdk.options.headers, options.headers);\n headers = removeNils(headers) as HeadersInit;\n\n if (accessToken && isString(accessToken)) {\n headers['Authorization'] = 'Bearer ' + accessToken;\n }\n\n var ajaxOptions: FetchOptions = {\n headers,\n data: args || undefined,\n withCredentials\n };\n\n var err, res;\n return sdk.options.httpRequestClient!(method!, url!, ajaxOptions)\n .then(function(resp) {\n res = resp.responseText;\n if (res && isString(res)) {\n res = JSON.parse(res);\n if (res && typeof res === 'object' && !res.headers) {\n if (Array.isArray(res)) {\n res.forEach(item => {\n item.headers = resp.headers;\n });\n } else {\n res.headers = resp.headers;\n }\n }\n }\n\n if (saveAuthnState) {\n if (!res.stateToken) {\n storage.delete(STATE_TOKEN_KEY_NAME);\n }\n }\n\n if (res && res.stateToken && res.expiresAt) {\n storage.set(STATE_TOKEN_KEY_NAME, res.stateToken, res.expiresAt, sdk.options.cookies!);\n }\n\n if (res && options.cacheResponse) {\n httpCache.updateStorage(url!, {\n expiresAt: Math.floor(Date.now()/1000) + DEFAULT_CACHE_DURATION,\n response: res\n });\n }\n \n return res;\n })\n .catch(function(resp) {\n err = formatError(sdk, resp);\n\n if (err.errorCode === 'E0000011') {\n storage.delete(STATE_TOKEN_KEY_NAME);\n }\n\n throw err;\n });\n}\n\nexport function get(sdk: OktaAuthHttpInterface, url: string, options?: RequestOptions) {\n url = isAbsoluteUrl(url) ? url : sdk.getIssuerOrigin() + url;\n var getOptions = {\n url: url,\n method: 'GET'\n };\n Object.assign(getOptions, options);\n return httpRequest(sdk, getOptions);\n}\n\nexport function post(sdk: OktaAuthHttpInterface, url: string, args?: RequestData, options?: RequestOptions) {\n url = isAbsoluteUrl(url) ? url : sdk.getIssuerOrigin() + url;\n var postOptions = {\n url: url,\n method: 'POST',\n args: args,\n saveAuthnState: true\n };\n Object.assign(postOptions, options);\n return httpRequest(sdk, postOptions);\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2021, 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/* eslint complexity:[0,8] */\nimport { OktaAuthIdxInterface, IdxTransactionMeta, InteractOptions, InteractResponse } from './types';\nimport { getSavedTransactionMeta, saveTransactionMeta, createTransactionMeta } from './transactionMeta';\nimport { getOAuthBaseUrl } from '../oidc';\nimport { removeNils } from '../util';\nimport { httpRequest } from '../http';\n\n\n/* eslint-disable camelcase */\nexport interface InteractParams {\n client_id: string;\n scope: string;\n redirect_uri: string;\n code_challenge: string;\n code_challenge_method: string;\n state: string;\n activation_token?: string;\n recovery_token?: string;\n client_secret?: string;\n max_age?: string | number;\n acr_values?: string;\n nonce?: string;\n}\n/* eslint-enable camelcase */\n\nfunction getResponse(meta: IdxTransactionMeta): InteractResponse {\n return {\n meta,\n interactionHandle: meta.interactionHandle!,\n state: meta.state\n };\n}\n\n// Begin or resume a transaction. Returns an interaction handle\nexport async function interact (\n authClient: OktaAuthIdxInterface, \n options: InteractOptions = {}\n): Promise {\n options = removeNils(options);\n\n let meta = getSavedTransactionMeta(authClient, options);\n // If meta exists, it has been validated against all options\n\n if (meta?.interactionHandle) {\n return getResponse(meta); // Saved transaction, return meta\n }\n\n // Create new meta, respecting previous meta if it has been set and is not overridden\n meta = await createTransactionMeta(authClient, { ...meta, ...options });\n const baseUrl = getOAuthBaseUrl(authClient);\n let {\n clientId,\n redirectUri,\n state,\n scopes,\n withCredentials,\n codeChallenge,\n codeChallengeMethod,\n activationToken,\n recoveryToken,\n maxAge,\n acrValues,\n nonce\n } = meta as IdxTransactionMeta;\n const clientSecret = options.clientSecret || authClient.options.clientSecret;\n withCredentials = withCredentials ?? true;\n\n /* eslint-disable camelcase */\n const url = `${baseUrl}/v1/interact`;\n const params = {\n client_id: clientId,\n scope: scopes!.join(' '),\n redirect_uri: redirectUri,\n code_challenge: codeChallenge,\n code_challenge_method: codeChallengeMethod,\n state,\n ...(activationToken && { activation_token: activationToken }),\n ...(recoveryToken && { recovery_token: recoveryToken }),\n // X-Device-Token header need to pair with `client_secret`\n // eslint-disable-next-line max-len\n // https://oktawiki.atlassian.net/wiki/spaces/eng/pages/2445902453/Support+Device+Binding+in+interact#Scenario-1%3A-Non-User-Agent-with-Confidential-Client-(top-priority)\n ...(clientSecret && { client_secret: clientSecret }),\n ...(maxAge && { max_age: maxAge }),\n ...(acrValues && { acr_values: acrValues }),\n ...(nonce && { nonce }),\n } as InteractParams;\n /* eslint-enable camelcase */\n\n const headers = {\n 'Content-Type': 'application/x-www-form-urlencoded',\n };\n\n const resp = await httpRequest(authClient, {\n method: 'POST',\n url,\n headers,\n withCredentials,\n args: params\n });\n const interactionHandle = resp.interaction_handle;\n\n const newMeta = {\n ...meta,\n interactionHandle,\n \n // Options which can be passed into interact() should be saved in the meta\n withCredentials,\n state,\n scopes,\n recoveryToken,\n activationToken\n };\n // Save transaction meta so it can be resumed\n saveTransactionMeta(authClient, newMeta);\n\n return getResponse(newMeta);\n}\n","/*!\n * Copyright (c) 2021-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nconst isFieldMutable = function isFieldMutable(field) {\n // mutable defaults to true, annoyingly\n return ( field.mutable !== false );\n};\n\nconst divideSingleActionParamsByMutability = function divideSingleActionParamsByMutability( action ) {\n const defaultParamsForAction = {}; // mutable and present\n const neededParamsForAction = []; // mutable values\n const immutableParamsForAction = {}; // immutable\n // TODO: remove assumption that form names are unique, neededParams being an array is a temp fix\n // not all actions have value (e.g. redirect)\n // making sure they are not empty and instead hold the remediation object\n if (!action.value) {\n neededParamsForAction.push(action);\n return { defaultParamsForAction, neededParamsForAction, immutableParamsForAction };\n }\n\n for ( let field of action.value ) {\n\n if ( isFieldMutable( field ) ) {\n\n neededParamsForAction.push(field);\n\n if ( field.value ?? false ) {\n defaultParamsForAction[field.name] = field.value;\n }\n\n } else {\n immutableParamsForAction[field.name] = field.value ?? '';\n }\n }\n return { defaultParamsForAction, neededParamsForAction, immutableParamsForAction };\n};\n\nexport const divideActionParamsByMutability = function divideActionParamsByMutability( actionList ) {\n // TODO: when removing form name is unique assumption, this may all be redundant\n actionList = Array.isArray(actionList) ? actionList : [ actionList ];\n const neededParams = [];\n const defaultParams = {};\n const immutableParams = {};\n\n for ( let action of actionList ) {\n const { \n defaultParamsForAction, \n neededParamsForAction, \n immutableParamsForAction \n } = divideSingleActionParamsByMutability(action);\n neededParams.push(neededParamsForAction);\n defaultParams[action.name] = defaultParamsForAction;\n immutableParams[action.name] = immutableParamsForAction;\n }\n\n return { defaultParams, neededParams, immutableParams };\n};\n\n","/*!\n * Copyright (c) 2021-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint-disable max-len, complexity */\nimport { httpRequest } from '../../../http';\nimport { OktaAuthIdxInterface } from '../../types'; // auth-js/types\nimport { IdxActionFunction, IdxActionParams, IdxResponse, IdxToPersist } from '../../types/idx-js';\nimport { divideActionParamsByMutability } from './actionParser';\nimport AuthApiError from '../../../errors/AuthApiError';\n\nconst generateDirectFetch = function generateDirectFetch(authClient: OktaAuthIdxInterface, { \n actionDefinition, \n defaultParamsForAction = {}, \n immutableParamsForAction = {}, \n toPersist = {} as IdxToPersist\n}): IdxActionFunction {\n const target = actionDefinition.href;\n return async function(params: IdxActionParams = {}): Promise {\n const headers = {\n 'Content-Type': 'application/json',\n 'Accept': actionDefinition.accepts || 'application/ion+json',\n };\n const body = JSON.stringify({\n ...defaultParamsForAction,\n ...params,\n ...immutableParamsForAction\n });\n\n try {\n const response = await httpRequest(authClient, {\n url: target,\n method: actionDefinition.method,\n headers,\n args: body,\n withCredentials: toPersist?.withCredentials ?? true\n });\n\n return authClient.idx.makeIdxResponse({ ...response }, toPersist, true);\n }\n catch (err) {\n if (!(err instanceof AuthApiError) || !err?.xhr) {\n throw err;\n }\n\n const response = err.xhr;\n const payload = response.responseJSON || JSON.parse(response.responseText);\n const wwwAuthHeader = response.headers['WWW-Authenticate'] || response.headers['www-authenticate'];\n\n const idxResponse = authClient.idx.makeIdxResponse({ ...payload }, toPersist, false);\n if (response.status === 401 && wwwAuthHeader === 'Oktadevicejwt realm=\"Okta Device\"') {\n // Okta server responds 401 status code with WWW-Authenticate header and new remediation\n // so that the iOS/MacOS credential SSO extension (Okta Verify) can intercept\n // the response reaches here when Okta Verify is not installed\n // set `stepUp` to true if flow should be continued without showing any errors\n idxResponse.stepUp = true;\n }\n\n return idxResponse;\n }\n };\n};\n\n// TODO: Resolve in M2: Either build the final polling solution or remove this code\n// const generatePollingFetch = function generatePollingFetch( { actionDefinition, defaultParamsForAction = {}, immutableParamsForAction = {} } ) {\n// // TODO: Discussions ongoing about when/how to terminate polling: OKTA-246581\n// const target = actionDefinition.href;\n// return async function(params) {\n// return fetch(target, {\n// method: actionDefinition.method,\n// headers: {\n// 'content-type': actionDefinition.accepts,\n// },\n// body: JSON.stringify({ ...defaultParamsForAction, ...params, ...immutableParamsForAction })\n// })\n// .then( response => response.ok ? response.json() : response.json().then( err => Promise.reject(err)) )\n// .then( idxResponse => makeIdxState(authClient, idxResponse) );\n// };\n// };\n\nconst generateIdxAction = function generateIdxAction( authClient: OktaAuthIdxInterface, actionDefinition, toPersist ): IdxActionFunction {\n // TODO: leaving this here to see where the polling is EXPECTED to drop into the code, but removing any accidental trigger of incomplete code\n // const generator = actionDefinition.refresh ? generatePollingFetch : generateDirectFetch;\n const generator = generateDirectFetch;\n const { defaultParams, neededParams, immutableParams } = divideActionParamsByMutability( actionDefinition );\n\n const action = generator(authClient, {\n actionDefinition,\n defaultParamsForAction: defaultParams[actionDefinition.name],\n immutableParamsForAction: immutableParams[actionDefinition.name],\n toPersist\n });\n action.neededParams = neededParams;\n return action;\n};\n\nexport default generateIdxAction;\n","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function () {};\n\n return {\n s: F,\n n: function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function (e) {\n throw e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function () {\n it = it.call(o);\n },\n n: function () {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function (e) {\n didErr = true;\n err = e;\n },\n f: function () {\n try {\n if (!normalCompletion && it.return != null) it.return();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\n\nvar hasOwnProp = Object.prototype.hasOwnProperty;\n/**\n* @typedef {null|boolean|number|string|PlainObject|GenericArray} JSONObject\n*/\n\n/**\n * Copies array and then pushes item into it.\n * @param {GenericArray} arr Array to copy and into which to push\n * @param {any} item Array item to add (to end)\n * @returns {GenericArray} Copy of the original array\n */\n\nfunction push(arr, item) {\n arr = arr.slice();\n arr.push(item);\n return arr;\n}\n/**\n * Copies array and then unshifts item into it.\n * @param {any} item Array item to add (to beginning)\n * @param {GenericArray} arr Array to copy and into which to unshift\n * @returns {GenericArray} Copy of the original array\n */\n\n\nfunction unshift(item, arr) {\n arr = arr.slice();\n arr.unshift(item);\n return arr;\n}\n/**\n * Caught when JSONPath is used without `new` but rethrown if with `new`\n * @extends Error\n */\n\n\nvar NewError = /*#__PURE__*/function (_Error) {\n _inherits(NewError, _Error);\n\n var _super = _createSuper(NewError);\n\n /**\n * @param {any} value The evaluated scalar value\n */\n function NewError(value) {\n var _this;\n\n _classCallCheck(this, NewError);\n\n _this = _super.call(this, 'JSONPath should not be called with \"new\" (it prevents return ' + 'of (unwrapped) scalar values)');\n _this.avoidNew = true;\n _this.value = value;\n _this.name = 'NewError';\n return _this;\n }\n\n return NewError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n/**\n* @typedef {PlainObject} ReturnObject\n* @property {string} path\n* @property {JSONObject} value\n* @property {PlainObject|GenericArray} parent\n* @property {string} parentProperty\n*/\n\n/**\n* @callback JSONPathCallback\n* @param {string|PlainObject} preferredOutput\n* @param {\"value\"|\"property\"} type\n* @param {ReturnObject} fullRetObj\n* @returns {void}\n*/\n\n/**\n* @callback OtherTypeCallback\n* @param {JSONObject} val\n* @param {string} path\n* @param {PlainObject|GenericArray} parent\n* @param {string} parentPropName\n* @returns {boolean}\n*/\n\n/* eslint-disable max-len -- Can make multiline type after https://github.com/syavorsky/comment-parser/issues/109 */\n\n/**\n * @typedef {PlainObject} JSONPathOptions\n * @property {JSON} json\n * @property {string|string[]} path\n * @property {\"value\"|\"path\"|\"pointer\"|\"parent\"|\"parentProperty\"|\"all\"} [resultType=\"value\"]\n * @property {boolean} [flatten=false]\n * @property {boolean} [wrap=true]\n * @property {PlainObject} [sandbox={}]\n * @property {boolean} [preventEval=false]\n * @property {PlainObject|GenericArray|null} [parent=null]\n * @property {string|null} [parentProperty=null]\n * @property {JSONPathCallback} [callback]\n * @property {OtherTypeCallback} [otherTypeCallback] Defaults to\n * function which throws on encountering `@other`\n * @property {boolean} [autostart=true]\n */\n\n/* eslint-enable max-len -- Can make multiline type after https://github.com/syavorsky/comment-parser/issues/109 */\n\n/**\n * @param {string|JSONPathOptions} opts If a string, will be treated as `expr`\n * @param {string} [expr] JSON path to evaluate\n * @param {JSON} [obj] JSON object to evaluate against\n * @param {JSONPathCallback} [callback] Passed 3 arguments: 1) desired payload\n * per `resultType`, 2) `\"value\"|\"property\"`, 3) Full returned object with\n * all payloads\n * @param {OtherTypeCallback} [otherTypeCallback] If `@other()` is at the end\n * of one's query, this will be invoked with the value of the item, its\n * path, its parent, and its parent's property name, and it should return\n * a boolean indicating whether the supplied value belongs to the \"other\"\n * type or not (or it may handle transformations and return `false`).\n * @returns {JSONPath}\n * @class\n */\n\n\nfunction JSONPath(opts, expr, obj, callback, otherTypeCallback) {\n // eslint-disable-next-line no-restricted-syntax\n if (!(this instanceof JSONPath)) {\n try {\n return new JSONPath(opts, expr, obj, callback, otherTypeCallback);\n } catch (e) {\n if (!e.avoidNew) {\n throw e;\n }\n\n return e.value;\n }\n }\n\n if (typeof opts === 'string') {\n otherTypeCallback = callback;\n callback = obj;\n obj = expr;\n expr = opts;\n opts = null;\n }\n\n var optObj = opts && _typeof(opts) === 'object';\n opts = opts || {};\n this.json = opts.json || obj;\n this.path = opts.path || expr;\n this.resultType = opts.resultType || 'value';\n this.flatten = opts.flatten || false;\n this.wrap = hasOwnProp.call(opts, 'wrap') ? opts.wrap : true;\n this.sandbox = opts.sandbox || {};\n this.preventEval = opts.preventEval || false;\n this.parent = opts.parent || null;\n this.parentProperty = opts.parentProperty || null;\n this.callback = opts.callback || callback || null;\n\n this.otherTypeCallback = opts.otherTypeCallback || otherTypeCallback || function () {\n throw new TypeError('You must supply an otherTypeCallback callback option ' + 'with the @other() operator.');\n };\n\n if (opts.autostart !== false) {\n var args = {\n path: optObj ? opts.path : expr\n };\n\n if (!optObj) {\n args.json = obj;\n } else if ('json' in opts) {\n args.json = opts.json;\n }\n\n var ret = this.evaluate(args);\n\n if (!ret || _typeof(ret) !== 'object') {\n throw new NewError(ret);\n }\n\n return ret;\n }\n} // PUBLIC METHODS\n\n\nJSONPath.prototype.evaluate = function (expr, json, callback, otherTypeCallback) {\n var _this2 = this;\n\n var currParent = this.parent,\n currParentProperty = this.parentProperty;\n var flatten = this.flatten,\n wrap = this.wrap;\n this.currResultType = this.resultType;\n this.currPreventEval = this.preventEval;\n this.currSandbox = this.sandbox;\n callback = callback || this.callback;\n this.currOtherTypeCallback = otherTypeCallback || this.otherTypeCallback;\n json = json || this.json;\n expr = expr || this.path;\n\n if (expr && _typeof(expr) === 'object' && !Array.isArray(expr)) {\n if (!expr.path && expr.path !== '') {\n throw new TypeError('You must supply a \"path\" property when providing an object ' + 'argument to JSONPath.evaluate().');\n }\n\n if (!hasOwnProp.call(expr, 'json')) {\n throw new TypeError('You must supply a \"json\" property when providing an object ' + 'argument to JSONPath.evaluate().');\n }\n\n var _expr = expr;\n json = _expr.json;\n flatten = hasOwnProp.call(expr, 'flatten') ? expr.flatten : flatten;\n this.currResultType = hasOwnProp.call(expr, 'resultType') ? expr.resultType : this.currResultType;\n this.currSandbox = hasOwnProp.call(expr, 'sandbox') ? expr.sandbox : this.currSandbox;\n wrap = hasOwnProp.call(expr, 'wrap') ? expr.wrap : wrap;\n this.currPreventEval = hasOwnProp.call(expr, 'preventEval') ? expr.preventEval : this.currPreventEval;\n callback = hasOwnProp.call(expr, 'callback') ? expr.callback : callback;\n this.currOtherTypeCallback = hasOwnProp.call(expr, 'otherTypeCallback') ? expr.otherTypeCallback : this.currOtherTypeCallback;\n currParent = hasOwnProp.call(expr, 'parent') ? expr.parent : currParent;\n currParentProperty = hasOwnProp.call(expr, 'parentProperty') ? expr.parentProperty : currParentProperty;\n expr = expr.path;\n }\n\n currParent = currParent || null;\n currParentProperty = currParentProperty || null;\n\n if (Array.isArray(expr)) {\n expr = JSONPath.toPathString(expr);\n }\n\n if (!expr && expr !== '' || !json) {\n return undefined;\n }\n\n var exprList = JSONPath.toPathArray(expr);\n\n if (exprList[0] === '$' && exprList.length > 1) {\n exprList.shift();\n }\n\n this._hasParentSelector = null;\n\n var result = this._trace(exprList, json, ['$'], currParent, currParentProperty, callback).filter(function (ea) {\n return ea && !ea.isParentSelector;\n });\n\n if (!result.length) {\n return wrap ? [] : undefined;\n }\n\n if (!wrap && result.length === 1 && !result[0].hasArrExpr) {\n return this._getPreferredOutput(result[0]);\n }\n\n return result.reduce(function (rslt, ea) {\n var valOrPath = _this2._getPreferredOutput(ea);\n\n if (flatten && Array.isArray(valOrPath)) {\n rslt = rslt.concat(valOrPath);\n } else {\n rslt.push(valOrPath);\n }\n\n return rslt;\n }, []);\n}; // PRIVATE METHODS\n\n\nJSONPath.prototype._getPreferredOutput = function (ea) {\n var resultType = this.currResultType;\n\n switch (resultType) {\n case 'all':\n {\n var path = Array.isArray(ea.path) ? ea.path : JSONPath.toPathArray(ea.path);\n ea.pointer = JSONPath.toPointer(path);\n ea.path = typeof ea.path === 'string' ? ea.path : JSONPath.toPathString(ea.path);\n return ea;\n }\n\n case 'value':\n case 'parent':\n case 'parentProperty':\n return ea[resultType];\n\n case 'path':\n return JSONPath.toPathString(ea[resultType]);\n\n case 'pointer':\n return JSONPath.toPointer(ea.path);\n\n default:\n throw new TypeError('Unknown result type');\n }\n};\n\nJSONPath.prototype._handleCallback = function (fullRetObj, callback, type) {\n if (callback) {\n var preferredOutput = this._getPreferredOutput(fullRetObj);\n\n fullRetObj.path = typeof fullRetObj.path === 'string' ? fullRetObj.path : JSONPath.toPathString(fullRetObj.path); // eslint-disable-next-line node/callback-return\n\n callback(preferredOutput, type, fullRetObj);\n }\n};\n/**\n *\n * @param {string} expr\n * @param {JSONObject} val\n * @param {string} path\n * @param {PlainObject|GenericArray} parent\n * @param {string} parentPropName\n * @param {JSONPathCallback} callback\n * @param {boolean} hasArrExpr\n * @param {boolean} literalPriority\n * @returns {ReturnObject|ReturnObject[]}\n */\n\n\nJSONPath.prototype._trace = function (expr, val, path, parent, parentPropName, callback, hasArrExpr, literalPriority) {\n var _this3 = this;\n\n // No expr to follow? return path and value as the result of\n // this trace branch\n var retObj;\n\n if (!expr.length) {\n retObj = {\n path: path,\n value: val,\n parent: parent,\n parentProperty: parentPropName,\n hasArrExpr: hasArrExpr\n };\n\n this._handleCallback(retObj, callback, 'value');\n\n return retObj;\n }\n\n var loc = expr[0],\n x = expr.slice(1); // We need to gather the return value of recursive trace calls in order to\n // do the parent sel computation.\n\n var ret = [];\n /**\n *\n * @param {ReturnObject|ReturnObject[]} elems\n * @returns {void}\n */\n\n function addRet(elems) {\n if (Array.isArray(elems)) {\n // This was causing excessive stack size in Node (with or\n // without Babel) against our performance test:\n // `ret.push(...elems);`\n elems.forEach(function (t) {\n ret.push(t);\n });\n } else {\n ret.push(elems);\n }\n }\n\n if ((typeof loc !== 'string' || literalPriority) && val && hasOwnProp.call(val, loc)) {\n // simple case--directly follow property\n addRet(this._trace(x, val[loc], push(path, loc), val, loc, callback, hasArrExpr)); // eslint-disable-next-line unicorn/prefer-switch -- Part of larger `if`\n } else if (loc === '*') {\n // all child properties\n this._walk(loc, x, val, path, parent, parentPropName, callback, function (m, l, _x, v, p, par, pr, cb) {\n addRet(_this3._trace(unshift(m, _x), v, p, par, pr, cb, true, true));\n });\n } else if (loc === '..') {\n // all descendent parent properties\n // Check remaining expression with val's immediate children\n addRet(this._trace(x, val, path, parent, parentPropName, callback, hasArrExpr));\n\n this._walk(loc, x, val, path, parent, parentPropName, callback, function (m, l, _x, v, p, par, pr, cb) {\n // We don't join m and x here because we only want parents,\n // not scalar values\n if (_typeof(v[m]) === 'object') {\n // Keep going with recursive descent on val's\n // object children\n addRet(_this3._trace(unshift(l, _x), v[m], push(p, m), v, m, cb, true));\n }\n }); // The parent sel computation is handled in the frame above using the\n // ancestor object of val\n\n } else if (loc === '^') {\n // This is not a final endpoint, so we do not invoke the callback here\n this._hasParentSelector = true;\n return {\n path: path.slice(0, -1),\n expr: x,\n isParentSelector: true\n };\n } else if (loc === '~') {\n // property name\n retObj = {\n path: push(path, loc),\n value: parentPropName,\n parent: parent,\n parentProperty: null\n };\n\n this._handleCallback(retObj, callback, 'property');\n\n return retObj;\n } else if (loc === '$') {\n // root only\n addRet(this._trace(x, val, path, null, null, callback, hasArrExpr));\n } else if (/^(\\x2D?[0-9]*):(\\x2D?[0-9]*):?([0-9]*)$/.test(loc)) {\n // [start:end:step] Python slice syntax\n addRet(this._slice(loc, x, val, path, parent, parentPropName, callback));\n } else if (loc.indexOf('?(') === 0) {\n // [?(expr)] (filtering)\n if (this.currPreventEval) {\n throw new Error('Eval [?(expr)] prevented in JSONPath expression.');\n }\n\n this._walk(loc, x, val, path, parent, parentPropName, callback, function (m, l, _x, v, p, par, pr, cb) {\n if (_this3._eval(l.replace(/^\\?\\(((?:[\\0-\\t\\x0B\\f\\x0E-\\u2027\\u202A-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*?)\\)$/, '$1'), v[m], m, p, par, pr)) {\n addRet(_this3._trace(unshift(m, _x), v, p, par, pr, cb, true));\n }\n });\n } else if (loc[0] === '(') {\n // [(expr)] (dynamic property/index)\n if (this.currPreventEval) {\n throw new Error('Eval [(expr)] prevented in JSONPath expression.');\n } // As this will resolve to a property name (but we don't know it\n // yet), property and parent information is relative to the\n // parent of the property to which this expression will resolve\n\n\n addRet(this._trace(unshift(this._eval(loc, val, path[path.length - 1], path.slice(0, -1), parent, parentPropName), x), val, path, parent, parentPropName, callback, hasArrExpr));\n } else if (loc[0] === '@') {\n // value type: @boolean(), etc.\n var addType = false;\n var valueType = loc.slice(1, -2);\n\n switch (valueType) {\n case 'scalar':\n if (!val || !['object', 'function'].includes(_typeof(val))) {\n addType = true;\n }\n\n break;\n\n case 'boolean':\n case 'string':\n case 'undefined':\n case 'function':\n // eslint-disable-next-line valid-typeof\n if (_typeof(val) === valueType) {\n addType = true;\n }\n\n break;\n\n case 'integer':\n if (Number.isFinite(val) && !(val % 1)) {\n addType = true;\n }\n\n break;\n\n case 'number':\n if (Number.isFinite(val)) {\n addType = true;\n }\n\n break;\n\n case 'nonFinite':\n if (typeof val === 'number' && !Number.isFinite(val)) {\n addType = true;\n }\n\n break;\n\n case 'object':\n // eslint-disable-next-line valid-typeof\n if (val && _typeof(val) === valueType) {\n addType = true;\n }\n\n break;\n\n case 'array':\n if (Array.isArray(val)) {\n addType = true;\n }\n\n break;\n\n case 'other':\n addType = this.currOtherTypeCallback(val, path, parent, parentPropName);\n break;\n\n case 'null':\n if (val === null) {\n addType = true;\n }\n\n break;\n\n /* c8 ignore next 2 */\n\n default:\n throw new TypeError('Unknown value type ' + valueType);\n }\n\n if (addType) {\n retObj = {\n path: path,\n value: val,\n parent: parent,\n parentProperty: parentPropName\n };\n\n this._handleCallback(retObj, callback, 'value');\n\n return retObj;\n } // `-escaped property\n\n } else if (loc[0] === '`' && val && hasOwnProp.call(val, loc.slice(1))) {\n var locProp = loc.slice(1);\n addRet(this._trace(x, val[locProp], push(path, locProp), val, locProp, callback, hasArrExpr, true));\n } else if (loc.includes(',')) {\n // [name1,name2,...]\n var parts = loc.split(',');\n\n var _iterator = _createForOfIteratorHelper(parts),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var part = _step.value;\n addRet(this._trace(unshift(part, x), val, path, parent, parentPropName, callback, true));\n } // simple case--directly follow property\n\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n } else if (!literalPriority && val && hasOwnProp.call(val, loc)) {\n addRet(this._trace(x, val[loc], push(path, loc), val, loc, callback, hasArrExpr, true));\n } // We check the resulting values for parent selections. For parent\n // selections we discard the value object and continue the trace with the\n // current val object\n\n\n if (this._hasParentSelector) {\n for (var t = 0; t < ret.length; t++) {\n var rett = ret[t];\n\n if (rett && rett.isParentSelector) {\n var tmp = this._trace(rett.expr, val, rett.path, parent, parentPropName, callback, hasArrExpr);\n\n if (Array.isArray(tmp)) {\n ret[t] = tmp[0];\n var tl = tmp.length;\n\n for (var tt = 1; tt < tl; tt++) {\n t++;\n ret.splice(t, 0, tmp[tt]);\n }\n } else {\n ret[t] = tmp;\n }\n }\n }\n }\n\n return ret;\n};\n\nJSONPath.prototype._walk = function (loc, expr, val, path, parent, parentPropName, callback, f) {\n if (Array.isArray(val)) {\n var n = val.length;\n\n for (var i = 0; i < n; i++) {\n f(i, loc, expr, val, path, parent, parentPropName, callback);\n }\n } else if (val && _typeof(val) === 'object') {\n Object.keys(val).forEach(function (m) {\n f(m, loc, expr, val, path, parent, parentPropName, callback);\n });\n }\n};\n\nJSONPath.prototype._slice = function (loc, expr, val, path, parent, parentPropName, callback) {\n if (!Array.isArray(val)) {\n return undefined;\n }\n\n var len = val.length,\n parts = loc.split(':'),\n step = parts[2] && Number.parseInt(parts[2]) || 1;\n var start = parts[0] && Number.parseInt(parts[0]) || 0,\n end = parts[1] && Number.parseInt(parts[1]) || len;\n start = start < 0 ? Math.max(0, start + len) : Math.min(len, start);\n end = end < 0 ? Math.max(0, end + len) : Math.min(len, end);\n var ret = [];\n\n for (var i = start; i < end; i += step) {\n var tmp = this._trace(unshift(i, expr), val, path, parent, parentPropName, callback, true); // Should only be possible to be an array here since first part of\n // ``unshift(i, expr)` passed in above would not be empty, nor `~`,\n // nor begin with `@` (as could return objects)\n // This was causing excessive stack size in Node (with or\n // without Babel) against our performance test: `ret.push(...tmp);`\n\n\n tmp.forEach(function (t) {\n ret.push(t);\n });\n }\n\n return ret;\n};\n\nJSONPath.prototype._eval = function (code, _v, _vname, path, parent, parentPropName) {\n if (code.includes('@parentProperty')) {\n this.currSandbox._$_parentProperty = parentPropName;\n code = code.replace(/@parentProperty/g, '_$_parentProperty');\n }\n\n if (code.includes('@parent')) {\n this.currSandbox._$_parent = parent;\n code = code.replace(/@parent/g, '_$_parent');\n }\n\n if (code.includes('@property')) {\n this.currSandbox._$_property = _vname;\n code = code.replace(/@property/g, '_$_property');\n }\n\n if (code.includes('@path')) {\n this.currSandbox._$_path = JSONPath.toPathString(path.concat([_vname]));\n code = code.replace(/@path/g, '_$_path');\n }\n\n if (code.includes('@root')) {\n this.currSandbox._$_root = this.json;\n code = code.replace(/@root/g, '_$_root');\n }\n\n if (/@([\\t-\\r \\)\\.\\[\\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF])/.test(code)) {\n this.currSandbox._$_v = _v;\n code = code.replace(/@([\\t-\\r \\)\\.\\[\\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF])/g, '_$_v$1');\n }\n\n try {\n return this.vm.runInNewContext(code, this.currSandbox);\n } catch (e) {\n // eslint-disable-next-line no-console\n console.log(e);\n throw new Error('jsonPath: ' + e.message + ': ' + code);\n }\n}; // PUBLIC CLASS PROPERTIES AND METHODS\n// Could store the cache object itself\n\n\nJSONPath.cache = {};\n/**\n * @param {string[]} pathArr Array to convert\n * @returns {string} The path string\n */\n\nJSONPath.toPathString = function (pathArr) {\n var x = pathArr,\n n = x.length;\n var p = '$';\n\n for (var i = 1; i < n; i++) {\n if (!/^(~|\\^|@(?:[\\0-\\t\\x0B\\f\\x0E-\\u2027\\u202A-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*?\\(\\))$/.test(x[i])) {\n p += /^[\\*0-9]+$/.test(x[i]) ? '[' + x[i] + ']' : \"['\" + x[i] + \"']\";\n }\n }\n\n return p;\n};\n/**\n * @param {string} pointer JSON Path\n * @returns {string} JSON Pointer\n */\n\n\nJSONPath.toPointer = function (pointer) {\n var x = pointer,\n n = x.length;\n var p = '';\n\n for (var i = 1; i < n; i++) {\n if (!/^(~|\\^|@(?:[\\0-\\t\\x0B\\f\\x0E-\\u2027\\u202A-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*?\\(\\))$/.test(x[i])) {\n p += '/' + x[i].toString().replace(/~/g, '~0').replace(/\\//g, '~1');\n }\n }\n\n return p;\n};\n/**\n * @param {string} expr Expression to convert\n * @returns {string[]}\n */\n\n\nJSONPath.toPathArray = function (expr) {\n var cache = JSONPath.cache;\n\n if (cache[expr]) {\n return cache[expr].concat();\n }\n\n var subx = [];\n var normalized = expr // Properties\n .replace(/@(?:null|boolean|number|string|integer|undefined|nonFinite|scalar|array|object|function|other)\\(\\)/g, ';$&;') // Parenthetical evaluations (filtering and otherwise), directly\n // within brackets or single quotes\n .replace(/['\\[](\\??\\((?:[\\0-\\t\\x0B\\f\\x0E-\\u2027\\u202A-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*?\\))['\\]]/g, function ($0, $1) {\n return '[#' + (subx.push($1) - 1) + ']';\n }) // Escape periods and tildes within properties\n .replace(/\\[[\"']((?:(?!['\\]])[\\s\\S])*)[\"']\\]/g, function ($0, prop) {\n return \"['\" + prop.replace(/\\./g, '%@%').replace(/~/g, '%%@@%%') + \"']\";\n }) // Properties operator\n .replace(/~/g, ';~;') // Split by property boundaries\n .replace(/[\"']?\\.[\"']?(?!(?:(?!\\[)[\\s\\S])*\\])|\\[[\"']?/g, ';') // Reinsert periods within properties\n .replace(/%@%/g, '.') // Reinsert tildes within properties\n .replace(/%%@@%%/g, '~') // Parent\n .replace(/(?:;)?(\\^+)(?:;)?/g, function ($0, ups) {\n return ';' + ups.split('').join(';') + ';';\n }) // Descendents\n .replace(/;;;|;;/g, ';..;') // Remove trailing\n .replace(/;$|'?\\]|'$/g, '');\n var exprList = normalized.split(';').map(function (exp) {\n var match = exp.match(/#([0-9]+)/);\n return !match || !match[1] ? exp : subx[match[1]];\n });\n cache[expr] = exprList;\n return cache[expr].concat();\n};\n\n/**\n* @callback ConditionCallback\n* @param {any} item\n* @returns {boolean}\n*/\n\n/**\n * Copy items out of one array into another.\n * @param {GenericArray} source Array with items to copy\n * @param {GenericArray} target Array to which to copy\n * @param {ConditionCallback} conditionCb Callback passed the current item;\n * will move item if evaluates to `true`\n * @returns {void}\n */\n\nvar moveToAnotherArray = function moveToAnotherArray(source, target, conditionCb) {\n var il = source.length;\n\n for (var i = 0; i < il; i++) {\n var item = source[i];\n\n if (conditionCb(item)) {\n target.push(source.splice(i--, 1)[0]);\n }\n }\n};\n\nJSONPath.prototype.vm = {\n /**\n * @param {string} expr Expression to evaluate\n * @param {PlainObject} context Object whose items will be added\n * to evaluation\n * @returns {any} Result of evaluated code\n */\n runInNewContext: function runInNewContext(expr, context) {\n var keys = Object.keys(context);\n var funcs = [];\n moveToAnotherArray(keys, funcs, function (key) {\n return typeof context[key] === 'function';\n });\n var values = keys.map(function (vr, i) {\n return context[vr];\n });\n var funcString = funcs.reduce(function (s, func) {\n var fString = context[func].toString();\n\n if (!/function/.test(fString)) {\n fString = 'function ' + fString;\n }\n\n return 'var ' + func + '=' + fString + ';' + s;\n }, '');\n expr = funcString + expr; // Mitigate http://perfectionkills.com/global-eval-what-are-the-options/#new_function\n\n if (!/([\"'])use strict\\1/.test(expr) && !keys.includes('arguments')) {\n expr = 'var arguments = undefined;' + expr;\n } // Remove last semi so `return` will be inserted before\n // the previous one instead, allowing for the return\n // of a bare ending expression\n\n\n expr = expr.replace(/;[\\t-\\r \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF]*$/, ''); // Insert `return`\n\n var lastStatementEnd = expr.lastIndexOf(';');\n var code = lastStatementEnd > -1 ? expr.slice(0, lastStatementEnd + 1) + ' return ' + expr.slice(lastStatementEnd + 1) : ' return ' + expr; // eslint-disable-next-line no-new-func\n\n return _construct(Function, _toConsumableArray(keys).concat([code])).apply(void 0, _toConsumableArray(values));\n }\n};\n\nexport { JSONPath };\n","/*!\n * Copyright (c) 2021-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint-disable max-len */\n\nimport { OktaAuthIdxInterface, IdxResponse, IdxRemediation, IdxContext } from '../../types'; // auth-js/types\nimport { IdxActions } from '../../types/idx-js';\nimport { generateRemediationFunctions } from './remediationParser';\nimport generateIdxAction from './generateIdxAction';\nimport { jsonpath } from '../../../util/jsonpath';\nimport { AuthSdkError } from '../../../errors';\n\nconst SKIP_FIELDS = {\n 'remediation': true, // remediations are put into proceed/neededToProceed\n 'context': true, // the API response of 'context' isn't externally useful. We ignore it and put all non-action (contextual) info into idxState.context\n};\n\nexport const parseNonRemediations = function parseNonRemediations( authClient: OktaAuthIdxInterface, idxResponse: IdxResponse, toPersist = {} ) {\n const actions = {};\n const context = {} as IdxContext;\n\n Object.keys(idxResponse)\n .filter( field => !SKIP_FIELDS[field])\n .forEach( field => {\n const fieldIsObject = typeof idxResponse[field] === 'object' && !!idxResponse[field];\n\n if ( !fieldIsObject ) {\n // simple fields are contextual info\n context[field] = idxResponse[field];\n return;\n }\n\n if ( idxResponse[field].rel ) {\n // top level actions\n actions[idxResponse[field].name] = generateIdxAction(authClient, idxResponse[field], toPersist);\n return;\n }\n\n const { value: fieldValue, type, ...info} = idxResponse[field];\n context[field] = { type, ...info}; // add the non-action parts as context\n\n if ( type !== 'object' ) {\n // only object values hold actions\n context[field].value = fieldValue;\n return;\n }\n\n // We are an object field containing an object value\n context[field].value = {};\n Object.entries(fieldValue)\n .forEach( ([subField, value]) => {\n if (value.rel) { // is [field].value[subField] an action?\n // add any \"action\" value subfields to actions\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n actions[`${field}-${subField.name || subField}`] = generateIdxAction(authClient, value, toPersist);\n } else {\n // add non-action value subfields to context\n context[field].value[subField] = value;\n }\n });\n });\n\n return { context, actions };\n};\n\nconst expandRelatesTo = (idxResponse, value) => {\n Object.keys(value).forEach(k => {\n if (k === 'relatesTo') {\n const query = Array.isArray(value[k]) ? value[k][0] : value[k];\n if (typeof query === 'string') {\n const result = jsonpath({ path: query, json: idxResponse })[0];\n if (result) {\n value[k] = result;\n return;\n } else {\n throw new AuthSdkError(`Cannot resolve relatesTo: ${query}`);\n }\n }\n }\n if (Array.isArray(value[k])) {\n value[k].forEach(innerValue => expandRelatesTo(idxResponse, innerValue));\n }\n });\n};\n\nconst convertRemediationAction = (authClient: OktaAuthIdxInterface, remediation, toPersist) => {\n // Only remediation that has `rel` field (indicator for form submission) can have http action\n if (remediation.rel) {\n const remediationActions = generateRemediationFunctions( authClient, [remediation], toPersist );\n const actionFn = remediationActions[remediation.name];\n return {\n ...remediation,\n action: actionFn,\n };\n }\n\n return remediation;\n};\n\nexport const parseIdxResponse = function parseIdxResponse( authClient: OktaAuthIdxInterface, idxResponse, toPersist = {} ): {\n remediations: IdxRemediation[];\n context: IdxContext;\n actions: IdxActions;\n} {\n const remediationData = idxResponse.remediation?.value || [];\n\n remediationData.forEach(\n remediation => {\n // TODO: remove once IDX is fixed - OKTA-659181\n if (remediation.name === 'launch-authenticator' &&\n remediation?.relatesTo?.[0] === 'authenticatorChallenge' &&\n !idxResponse?.authenticatorChallenge\n ) {\n delete remediation.relatesTo;\n return;\n }\n\n return expandRelatesTo(idxResponse, remediation);\n }\n );\n\n const remediations = remediationData.map(remediation => convertRemediationAction( authClient, remediation, toPersist ));\n\n const { context, actions } = parseNonRemediations( authClient, idxResponse, toPersist );\n\n return {\n remediations,\n context,\n actions,\n };\n};\n","import { JSONPath, JSONPathOptions } from 'jsonpath-plus';\n\nexport function jsonpath(options: JSONPathOptions): any {\n // eslint-disable-next-line new-cap\n return JSONPath({\n // Disable javascript evaluation by default\n\tpreventEval: true, ...options, });\n}\n","/*!\n * Copyright (c) 2021-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { OktaAuthIdxInterface, IdxRemediation } from '../../types'; // auth-js/types\nimport generateIdxAction from './generateIdxAction';\n\nexport const generateRemediationFunctions = function generateRemediationFunctions(\n authClient: OktaAuthIdxInterface,\n remediationValue: IdxRemediation[],\n toPersist = {}\n) {\n return remediationValue.reduce((obj, remediation) => ({\n ...obj,\n [remediation.name]: generateIdxAction(authClient, remediation, toPersist)\n }), {});\n};\n","/*!\n * Copyright (c) 2021-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { makeIdxState } from './makeIdxState';\n\nexport default {\n makeIdxState,\n};\n","/*!\n * Copyright (c) 2021-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { IdxResponse, IdxToPersist, IdxActionParams } from '../../types/idx-js';\nimport { OktaAuthIdxInterface, RawIdxResponse } from '../../types'; // auth-js/types\nimport { parseIdxResponse } from './idxResponseParser';\n\nexport function makeIdxState( \n authClient: OktaAuthIdxInterface,\n idxResponse: RawIdxResponse,\n toPersist: IdxToPersist,\n requestDidSucceed: boolean\n): IdxResponse {\n const rawIdxResponse = idxResponse;\n const { remediations, context, actions } = parseIdxResponse( authClient, idxResponse, toPersist );\n const neededToProceed = [...remediations];\n\n const proceed: IdxResponse['proceed'] = async function( remediationChoice, paramsFromUser = {} ) {\n /*\n remediationChoice is the name attribute on each form\n name should remain unique for items inside the remediation that are considered forms(identify, select-factor)\n name can be duplicate for items like redirect where its not considered a form(redirect)\n when names are not unique its a redirect to a href, so widget wont POST to idx-js layer.\n */\n const remediationChoiceObject = remediations.find((remediation) => remediation.name === remediationChoice);\n if ( !remediationChoiceObject ) {\n return Promise.reject(`Unknown remediation choice: [${remediationChoice}]`);\n }\n\n const actionFn = remediationChoiceObject.action;\n if (typeof actionFn !== 'function') {\n return Promise.reject(`Current remediation cannot make form submit action: [${remediationChoice}]`);\n }\n\n return remediationChoiceObject.action!(paramsFromUser as IdxActionParams);\n };\n\n const findCode = item => item.name === 'interaction_code';\n const interactionCode = rawIdxResponse.successWithInteractionCode?.value?.find( findCode )?.value as string;\n\n return {\n proceed,\n neededToProceed,\n actions,\n context,\n rawIdxState: rawIdxResponse,\n interactionCode,\n toPersist,\n requestDidSucceed,\n };\n}\n","import { OktaAuthIdxInterface } from '../types'; // auth-js/types\nimport { IdxResponse, IdxToPersist, RawIdxResponse } from '../types/idx-js'; // idx/types\nimport { IDX_API_VERSION } from '../../constants';\nimport v1 from './v1/parsers';\n\n\nexport const parsersForVersion = function parsersForVersion( version ) {\n switch (version) {\n case '1.0.0':\n return v1;\n case undefined:\n case null:\n throw new Error('Api version is required');\n default:\n throw new Error(`Unknown api version: ${version}. Use an exact semver version.`);\n }\n};\n\nexport function validateVersionConfig(version) {\n if ( !version ) {\n throw new Error('version is required');\n }\n\n const cleanVersion = (version ?? '').replace(/[^0-9a-zA-Z._-]/, '');\n if ( cleanVersion !== version || !version ) {\n throw new Error('invalid version supplied - version is required and uses semver syntax');\n }\n\n parsersForVersion(version); // will throw for invalid version\n}\n\nexport function makeIdxState ( \n authClient: OktaAuthIdxInterface,\n rawIdxResponse: RawIdxResponse,\n toPersist: IdxToPersist,\n requestDidSucceed: boolean,\n): IdxResponse {\n const version = rawIdxResponse?.version ?? IDX_API_VERSION;\n validateVersionConfig(version);\n \n const { makeIdxState } = parsersForVersion(version);\n return makeIdxState(authClient, rawIdxResponse, toPersist, requestDidSucceed);\n}\n","/* eslint-disable no-use-before-define */\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\nimport { Input } from './api';\n\n\n// TODO: remove when idx-js provides type information\n\nexport interface ChallengeData {\n challenge: string; \n userVerification: string; \n extensions?: {\n appid: string;\n };\n}\nexport interface ActivationData {\n challenge: string;\n rp: {\n name: string;\n };\n user: {\n id: string;\n name: string;\n displayName: string;\n };\n pubKeyCredParams: {\n type: string;\n alg: number;\n }[];\n attestation?: string;\n authenticatorSelection?: {\n userVerification?: string;\n authenticatorAttachment?: string;\n requireResidentKey?: boolean;\n residentKey?: string;\n };\n excludeCredentials?: {\n id: string;\n type: string;\n }[];\n}\nexport interface IdxAuthenticatorMethod {\n type: string;\n}\nexport interface IdxAuthenticator {\n displayName: string;\n id: string;\n key: string;\n methods: IdxAuthenticatorMethod[];\n type: string;\n settings?: {\n complexity?: unknown;\n age?: unknown;\n };\n contextualData?: {\n enrolledQuestion?: {\n question: string;\n questionKey: string;\n };\n qrcode?: { \n href: string; \n method: string; \n type: string; \n };\n sharedSecret?: string;\n questions?: {\n questionKey: string;\n question: string;\n }[];\n questionKeys?: string[];\n selectedChannel?: string;\n activationData?: ActivationData;\n challengeData?: ChallengeData;\n };\n credentialId?: string;\n enrollmentId?: string;\n profile?: Record;\n resend?: Record;\n poll?: Record;\n recover?: Record;\n deviceKnown?: boolean;\n}\n\nexport interface IdxForm {\n value: IdxRemediationValue[];\n}\n\nexport interface IdxOption {\n value: string | {form: IdxForm} | Input[];\n label: string;\n relatesTo?: IdxAuthenticator;\n}\n\nexport interface IdpConfig {\n id: string;\n name: string;\n}\n\nexport interface IdxRemediationValueForm {\n form: IdxForm;\n}\n\nexport interface IdxRemediationValue {\n name: string;\n type?: string;\n required?: boolean;\n secret?: boolean;\n visible?: boolean;\n mutable?: boolean;\n value?: string | IdxRemediationValueForm;\n label?: string;\n form?: IdxForm;\n options?: IdxOption[];\n messages?: IdxMessages;\n minLength?: number;\n maxLength?: number;\n relatesTo?: {\n type?: string;\n value: IdxAuthenticator;\n };\n}\n\nexport interface IdxRemediation {\n name: string;\n label?: string;\n value?: IdxRemediationValue[];\n relatesTo?: {\n type?: string;\n value: IdxAuthenticator;\n };\n idp?: IdpConfig;\n href?: string;\n method?: string;\n type?: string;\n accepts?: string;\n produces?: string;\n refresh?: number;\n rel?: string[];\n action?: (payload?: IdxActionParams) => Promise;\n}\n\nexport interface IdxContext {\n version: string;\n stateHandle: string;\n expiresAt: string;\n intent: string;\n currentAuthenticator: {\n type: string;\n value: IdxAuthenticator;\n };\n currentAuthenticatorEnrollment: {\n type: string;\n value: IdxAuthenticator;\n };\n authenticators: {\n type: string;\n value: IdxAuthenticator[];\n };\n authenticatorEnrollments: {\n type: string;\n value: IdxAuthenticator[];\n };\n enrollmentAuthenticator: {\n type: string;\n value: IdxAuthenticator;\n };\n user?: {\n type: string;\n value: Record;\n };\n uiDisplay?: IdxContextUIDisplay\n app: {\n type: string;\n value: Record;\n };\n messages?: IdxMessages;\n success?: IdxRemediation;\n failure?: IdxRemediation;\n}\n\nexport interface IdxContextUIDisplay {\n type: string;\n value: {\n label?: string;\n buttonLabel?: string;\n }\n}\n\nexport interface IdxMessage {\n message: string;\n class: string;\n i18n: {\n key: string;\n params?: unknown[];\n };\n}\n\nexport interface IdxMessages {\n type: 'array';\n value: IdxMessage[];\n}\n\n// JSON response from the server\nexport interface RawIdxResponse {\n version: string;\n stateHandle: string;\n intent?: string;\n expiresAt?: string;\n remediation?: {\n type: 'array';\n value: IdxRemediation[];\n };\n messages?: IdxMessages;\n success?: boolean;\n successWithInteractionCode?: IdxRemediation;\n currentAuthenticator?: {\n type: string;\n value: IdxAuthenticator;\n };\n currentAuthenticatorEnrollment?: {\n type: string;\n value: IdxAuthenticator;\n };\n}\n\nexport function isRawIdxResponse(obj: any): obj is RawIdxResponse {\n return obj && obj.version;\n}\n\nexport interface IdxActionParams {\n [key: string]: string | boolean | number | object;\n}\n\nexport interface IdxActions {\n [key: string]: (params?: IdxActionParams) => Promise;\n}\n\nexport interface IdxToPersist {\n interactionHandle?: string;\n withCredentials?: boolean;\n}\n\nexport interface IdxActionFunction {\n (params: IdxActionParams): Promise;\n neededParams?: Array>;\n}\n\nexport interface IdxResponse {\n proceed: (remediationName: string, params: unknown) => Promise;\n neededToProceed: IdxRemediation[];\n rawIdxState: RawIdxResponse;\n interactionCode?: string;\n actions: IdxActions;\n toPersist: IdxToPersist;\n context?: IdxContext;\n requestDidSucceed?: boolean;\n stepUp?: boolean;\n}\n\nexport function isIdxResponse(obj: any): obj is IdxResponse {\n return obj && isRawIdxResponse(obj.rawIdxState);\n}\n","/* eslint-disable complexity */\n/*!\n * Copyright (c) 2021, 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 { makeIdxState, validateVersionConfig } from './idxState';\nimport { IntrospectOptions, OktaAuthIdxInterface } from './types';\nimport { IdxResponse, isRawIdxResponse } from './types/idx-js';\nimport { getOAuthDomain } from '../oidc';\nimport { IDX_API_VERSION } from '../constants';\nimport { httpRequest } from '../http';\nimport { isAuthApiError } from '../errors';\n\nexport async function introspect (\n authClient: OktaAuthIdxInterface, \n options: IntrospectOptions = {}\n): Promise {\n let rawIdxResponse;\n let requestDidSucceed;\n\n // try load from storage first\n const savedIdxResponse = authClient.transactionManager.loadIdxResponse(options);\n if (savedIdxResponse) {\n rawIdxResponse = savedIdxResponse.rawIdxResponse;\n requestDidSucceed = savedIdxResponse.requestDidSucceed;\n }\n\n // call idx.introspect if no existing idx response available in storage\n if (!rawIdxResponse) {\n const version = options.version || IDX_API_VERSION;\n const domain = getOAuthDomain(authClient);\n const { interactionHandle, stateHandle } = options;\n const withCredentials = options.withCredentials ?? true;\n try {\n requestDidSucceed = true;\n validateVersionConfig(version);\n const url = `${domain}/idp/idx/introspect`;\n const body = stateHandle ? { stateToken: stateHandle } : { interactionHandle };\n const headers = {\n 'Content-Type': `application/ion+json; okta-version=${version}`, // Server wants this version info\n Accept: `application/ion+json; okta-version=${version}`,\n };\n rawIdxResponse = await httpRequest(authClient, {\n method: 'POST',\n url,\n headers,\n withCredentials,\n args: body\n });\n } catch (err) {\n if (isAuthApiError(err) && err.xhr && isRawIdxResponse(err.xhr.responseJSON)) {\n rawIdxResponse = err.xhr.responseJSON;\n requestDidSucceed = false;\n } else {\n throw err;\n }\n }\n }\n\n const { withCredentials } = options;\n return makeIdxState(authClient, rawIdxResponse, { withCredentials }, requestDidSucceed);\n}\n","\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\nimport AuthApiError from './AuthApiError';\nimport AuthPollStopError from './AuthPollStopError';\nimport AuthSdkError from './AuthSdkError';\nimport OAuthError from './OAuthError';\n\nfunction isAuthApiError(obj: any): obj is AuthApiError {\n return (obj instanceof AuthApiError);\n}\n\nfunction isOAuthError(obj: any): obj is OAuthError {\n return (obj instanceof OAuthError);\n}\n\nexport {\n isAuthApiError,\n isOAuthError,\n AuthApiError,\n AuthPollStopError,\n AuthSdkError,\n OAuthError\n};\n\nexport * from './types';\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\nimport { IdxRemediation, IdxRemediationValue } from '../types/idx-js';\n\nexport function getAllValues(idxRemediation: IdxRemediation) {\n return idxRemediation.value?.map(r => r.name);\n}\n\nexport function getRequiredValues(idxRemediation: IdxRemediation) {\n return idxRemediation.value?.reduce((required, cur) => {\n if (cur.required) {\n required.push(cur.name as never);\n }\n return required;\n }, []);\n}\n\nexport function titleCase(str: string) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n}\n\nexport function getAuthenticatorFromRemediation(\n remediation: IdxRemediation\n): IdxRemediationValue {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return remediation.value!.find(({ name }) => name === 'authenticator') as IdxRemediationValue;\n}\n","import { Authenticator, isAuthenticator } from '../types';\n\nexport function formatAuthenticator(incoming: unknown): Authenticator {\n let authenticator: Authenticator;\n if (isAuthenticator(incoming)) {\n authenticator = incoming;\n } else if (typeof incoming === 'string') {\n authenticator = {\n key: incoming\n };\n } else {\n throw new Error('Invalid format for authenticator');\n }\n return authenticator;\n}\n\n// Returns true if the authenticators are equivalent\nexport function compareAuthenticators(auth1, auth2) {\n if (!auth1 || !auth2) {\n return false;\n }\n // by id\n if (auth1.id && auth2.id) {\n return (auth1.id === auth2.id);\n }\n // by key\n if (auth1.key && auth2.key) {\n return (auth1.key === auth2.key);\n }\n return false;\n}\n\n// Find matched authenticator in provided order\nexport function findMatchedOption(authenticators, options) {\n let option;\n for (let authenticator of authenticators) {\n option = options\n .find(({ relatesTo }) => relatesTo.key && relatesTo.key === authenticator.key);\n if (option) {\n break;\n }\n }\n return option;\n}","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\n/* eslint-disable complexity */\nimport { OktaAuthIdxInterface, NextStep, IdxMessage, Authenticator, Input, RemediateOptions } from '../../types';\nimport { IdxAuthenticator, IdxRemediation, IdxContext } from '../../types/idx-js';\nimport { getAllValues, getRequiredValues, titleCase, getAuthenticatorFromRemediation } from '../util';\nimport { formatAuthenticator, compareAuthenticators } from '../../authenticator/util';\n\n// A map from IDX data values (server spec) to RemediationValues (client spec)\nexport type IdxToRemediationValueMap = Record;\n\nexport interface RemediationValues {\n stateHandle?: string;\n authenticators?: (Authenticator | string)[];\n authenticator?: string | Authenticator;\n authenticatorsData?: Authenticator[];\n resend?: boolean;\n}\n\nexport interface RemediatorConstructor {\n remediationName: string;\n new(\n remediation: IdxRemediation, \n values?: T, \n options?: RemediateOptions\n ): any;\n}\n\n// Base class - DO NOT expose static remediationName\nexport class Remediator {\n static remediationName: string;\n\n remediation: IdxRemediation;\n values: T;\n options: RemediateOptions;\n map?: IdxToRemediationValueMap;\n\n constructor(\n remediation: IdxRemediation, \n values: T = {} as T, \n options: RemediateOptions = {}\n ) {\n // assign fields to the instance\n this.values = { ...values };\n this.options = { ...options };\n this.formatAuthenticators();\n this.remediation = remediation;\n }\n\n private formatAuthenticators() {\n this.values.authenticators = (this.values.authenticators || []) as Authenticator[];\n\n // ensure authenticators are in the correct format\n this.values.authenticators = this.values.authenticators.map(authenticator => {\n return formatAuthenticator(authenticator);\n });\n\n // add authenticator (if any) to \"authenticators\"\n if (this.values.authenticator) {\n const authenticator = formatAuthenticator(this.values.authenticator);\n const hasAuthenticatorInList = this.values.authenticators.some(existing => {\n return compareAuthenticators(authenticator, existing);\n });\n if (!hasAuthenticatorInList) {\n this.values.authenticators.push(authenticator);\n }\n }\n\n // save non-key meta to \"authenticatorsData\" field\n // authenticators will be removed after selection to avoid select-authenticator loop\n this.values.authenticatorsData = this.values.authenticators.reduce((acc, authenticator) => {\n if (typeof authenticator === 'object' && Object.keys(authenticator).length > 1) {\n // save authenticator meta into authenticator data\n acc.push(authenticator);\n }\n return acc;\n }, this.values.authenticatorsData || []);\n }\n\n getName(): string {\n return this.remediation.name;\n }\n\n // Override this method to provide custom check\n /* eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars */\n canRemediate(context?: IdxContext): boolean {\n const required = getRequiredValues(this.remediation);\n const needed = required!.find((key) => !this.hasData(key));\n if (needed) {\n return false; // missing data for a required field\n }\n return true; // all required fields have available data\n }\n\n // returns an object for the entire remediation form, or just a part\n getData(key?: string) {\n if (!key) {\n let allValues = getAllValues(this.remediation);\n let res = allValues!.reduce((data, key) => {\n data[key] = this.getData(key); // recursive\n return data;\n }, {});\n return res;\n }\n\n // Map value by \"map${Property}\" function in each subClass\n if (typeof this[`map${titleCase(key)}`] === 'function') {\n const val = this[`map${titleCase(key)}`](\n this.remediation.value!.find(({name}) => name === key)\n );\n if (val) {\n return val;\n }\n }\n\n // If a map is defined for this key, return the first aliased property that returns a truthy value\n if (this.map && this.map[key]) {\n const entry = this.map[key];\n for (let i = 0; i < entry.length; i++) {\n let val = this.values[entry[i]];\n if (val) {\n return val;\n }\n }\n }\n\n // fallback: return the value by key\n return this.values[key];\n }\n\n hasData(\n key: string // idx name\n ): boolean \n {\n // no attempt to format, we want simple true/false\n return !!this.getData(key);\n }\n\n getNextStep(_authClient: OktaAuthIdxInterface, _context?: IdxContext): NextStep {\n const name = this.getName();\n const inputs = this.getInputs();\n const authenticator = this.getAuthenticator();\n // TODO: remove type field in the next major version change\n // https://oktainc.atlassian.net/browse/OKTA-431749\n const type = authenticator?.type;\n return { \n name, \n inputs, \n ...(type && { type }),\n ...(authenticator && { authenticator }),\n };\n }\n\n // Get inputs for the next step\n getInputs(): Input[] {\n const inputs: Input[] = [];\n const inputsFromRemediation = this.remediation.value || [];\n inputsFromRemediation.forEach(inputFromRemediation => {\n let input;\n let { name, type, visible, messages } = inputFromRemediation;\n if (visible === false) {\n return; // Filter out invisible inputs, like stateHandle\n }\n if (typeof this[`getInput${titleCase(name)}`] === 'function') {\n input = this[`getInput${titleCase(name)}`](inputFromRemediation);\n } else if (type !== 'object') {\n // handle general primitive types\n let alias;\n const aliases = (this.map ? this.map[name] : null) || [];\n if (aliases.length === 1) {\n alias = aliases[0];\n } else {\n // try find key from values\n alias = aliases.find(name => Object.keys(this.values).includes(name));\n }\n if (alias) {\n input = { ...inputFromRemediation, name: alias };\n }\n }\n if (!input) {\n input = inputFromRemediation;\n }\n if (Array.isArray(input)) {\n input.forEach(i => inputs.push(i));\n } else {\n // guarantees field-level messages are passed back\n if (messages) {\n input.messages = messages;\n }\n inputs.push(input);\n }\n });\n return inputs;\n }\n\n static getMessages(remediation: IdxRemediation): IdxMessage[] | undefined {\n if (!remediation.value) {\n return;\n }\n return remediation.value[0]?.form?.value.reduce((messages: IdxMessage[], field) => {\n if (field.messages) {\n messages = [...messages, ...field.messages.value];\n }\n return messages;\n }, []);\n }\n\n // Prepare values for the next remediation\n // In general, remove used values from inputs for the current remediation\n // Override this method if special cases need be handled\n getValuesAfterProceed(): T {\n const inputsFromRemediation = this.remediation.value || []; // \"raw\" inputs from server response\n const inputsFromRemediator = this.getInputs(); // \"aliased\" inputs from SDK remediator\n const inputs = [\n ...inputsFromRemediation,\n ...inputsFromRemediator\n ];\n // scrub all values related to this remediation\n for (const input of inputs) {\n delete this.values[input.name];\n }\n return this.values;\n }\n\n protected getAuthenticator(): IdxAuthenticator | undefined {\n // relatesTo value may be an authenticator or an authenticatorEnrollment\n const relatesTo = this.remediation.relatesTo?.value;\n if (!relatesTo) {\n return;\n }\n\n const authenticatorFromRemediation = getAuthenticatorFromRemediation(this.remediation);\n if (!authenticatorFromRemediation) {\n // Hopefully value is an authenticator\n return relatesTo;\n }\n\n // If relatesTo is an authenticatorEnrollment, the id is actually the enrollmentId\n // Let's get the correct authenticator id from the form value\n const id = authenticatorFromRemediation.form!.value\n .find(({ name }) => name === 'id')!.value as string;\n const enrollmentId = authenticatorFromRemediation.form!.value\n .find(({ name }) => name === 'enrollmentId')?.value as string;\n\n return {\n ...relatesTo,\n id,\n enrollmentId\n };\n }\n}\n","/* eslint-disable complexity */\nimport { AuthSdkError } from '../../../errors';\nimport { Input } from '../../types';\n\nexport function unwrapFormValue(remediation): Input { \n if (Array.isArray(remediation)) {\n return remediation\n .map(item => {\n if (typeof item === 'string' || typeof item === 'number' || typeof item === 'boolean') {\n return item;\n }\n return unwrapFormValue(item);\n }) as any;\n }\n\n const res = {};\n for (const [key, value] of Object.entries(remediation)) {\n if (value === null || typeof value === 'undefined') {\n continue;\n }\n\n if (typeof value === 'object') {\n const formKeys = Object.keys(value as object);\n // detect patterns like:\n // value -> form -> value | form -> value\n if (['value', 'form'].includes(key) \n && formKeys.length === 1 \n && ['value', 'form'].includes(formKeys[0])\n ) {\n // unwrap nested form\n const unwrappedForm = unwrapFormValue(value);\n Object.entries(unwrappedForm).forEach(([key, value]) => {\n res[key] = value;\n });\n } else {\n // dfs\n res[key] = unwrapFormValue(value);\n }\n } else {\n // handle primitive value\n res[key] = value;\n }\n }\n\n return res as Input;\n}\n\n// only check if value is required for now\n// TODO: support SDK layer type based input validation\nexport function hasValidInputValue(input, values) {\n const fn = (input, values, requiredTracker) => {\n const { name, value, type, options, required } = input;\n const isRequired = required || requiredTracker;\n\n // handle nested value - all required fields should be avaiable in values \n if (Array.isArray(value)) {\n return value.reduce((acc, item) => {\n return acc && fn(item, values[name], isRequired); // recursive call\n }, true);\n }\n\n // handle options field\n // 1. object type options - check if each object field is required and value can be found from the selectedOption\n // 2. primitive options - required field is avaiable from top level\n // 3. unknown format - pass to backend for validation\n if (options) {\n // object type options\n if (type === 'object') {\n const selectedOption = values[name];\n if (!selectedOption) {\n return false;\n }\n if (!selectedOption.id) {\n // unknown option format, pass to backend for validation\n return true;\n }\n const optionSchema = options.find((option) => {\n const idSchema = option.value.find(({ name }) => name === 'id' );\n return idSchema.value === selectedOption.id;\n });\n if (!optionSchema) {\n return false;\n }\n return optionSchema.value\n .filter(({ required }) => !!required)\n .reduce((acc, { name }) => {\n return acc && !!selectedOption[name];\n }, true);\n }\n\n // primitive options, not required - always valid\n if (required === false) {\n return true;\n }\n\n // primitive options, required - check if value is available\n if (required === true) {\n return !!values[name];\n }\n\n // unknown options, throw\n throw new AuthSdkError(`Unknown options type, ${JSON.stringify(input)}`);\n }\n\n // base case\n if (!isRequired) {\n return true;\n }\n \n return !!(values && values[name]);\n };\n\n return fn(input, values, false);\n}\n","import { OktaAuthIdxInterface, IdxContext, NextStep, Input } from '../../types';\nimport { Remediator } from '../Base/Remediator';\nimport { unwrapFormValue } from './util';\n\nexport class GenericRemediator extends Remediator {\n canRemediate(): boolean {\n // only handle remediations that are able to submit form (xhr)\n if (typeof this.remediation.action !== 'function') {\n return false;\n }\n\n // DO NOT REMOVE - bring it back when enable client side validation for GenericRemediator - OKTA-512003\n // const inputs = this.getInputs();\n // const res = inputs.reduce((acc, input) => {\n // return acc && hasValidInputValue(input, this.values);\n // }, true);\n // return res;\n\n if (this.remediation.name === 'poll' || this.remediation.name.endsWith('-poll')) {\n return true;\n }\n\n if (this.options.step) {\n return true;\n }\n \n // disable auto proceed for unknown remediations\n return false;\n }\n\n getData() {\n const data = this.getInputs().reduce((acc, { name }) => {\n acc[name] = this.values[name];\n return acc;\n }, {});\n return data;\n }\n\n getNextStep(authClient: OktaAuthIdxInterface, _context?: IdxContext): NextStep {\n const name = this.getName();\n const inputs = this.getInputs();\n \n /* eslint-disable no-unused-vars, @typescript-eslint/no-unused-vars */\n // excludes transformed fields\n const { \n // http metas have been transformed to action\n href, \n method, \n rel, \n accepts, \n produces, \n // value has been transform to inputs\n value,\n // will be transformed to a function that resolves IdxTransaction\n action,\n ...rest \n } = this.remediation;\n /* eslint-enable no-unused-vars, @typescript-eslint/no-unused-vars */\n\n // step to handle form submission\n if (action) {\n return { \n ...rest,\n ...(!!inputs.length && { inputs }),\n action: async (params?) => {\n return authClient.idx.proceed({\n step: name,\n ...params\n });\n }\n };\n }\n\n // return whole remediation data for other steps, eg \"redirect-idp\"\n return { ...this.remediation } as NextStep;\n \n }\n\n getInputs(): Input[] {\n return (this.remediation.value || [])\n .filter(({ name }) => name !== 'stateHandle')\n .map(unwrapFormValue)\n .map(input => {\n // use string as default input type\n input.type = input.type || 'string';\n return input;\n });\n }\n\n}\n","import { warn, split2 } from '../util';\nimport { RemediationValues, Remediator, RemediatorConstructor } from './remediators';\nimport { GenericRemediator } from './remediators/GenericRemediator';\nimport {\n OktaAuthIdxInterface,\n IdxFeature,\n NextStep,\n RemediateOptions,\n RemediationResponse,\n RunOptions,\n FlowIdentifier,\n FlowSpecification\n} from './types';\nimport { IdxMessage, IdxRemediation, IdxRemediationValue, IdxResponse } from './types/idx-js';\n\ntype GetFlowSpecification = (\n oktaAuth: OktaAuthIdxInterface,\n flow: FlowIdentifier\n) => FlowSpecification;\n\nconst ctx: {\n remediators: Record,\n getFlowSpecification: GetFlowSpecification,\n} = {\n // default values to be used by minimal IDX API\n remediators: {},\n getFlowSpecification: function(_oktaAuth: OktaAuthIdxInterface, _flow: FlowIdentifier = 'default') {\n return {\n remediators: {}\n } as FlowSpecification;\n }\n};\n\n// should be set in createIdxAPI() factory\nexport function setRemediatorsCtx(newCtx: Partial) {\n Object.assign(ctx, newCtx);\n}\n\nexport function getFlowSpecification(oktaAuth: OktaAuthIdxInterface, flow: FlowIdentifier = 'default') {\n return ctx.getFlowSpecification(oktaAuth, flow);\n}\n\nexport function isTerminalResponse(idxResponse: IdxResponse) {\n const { neededToProceed, interactionCode } = idxResponse;\n return !neededToProceed.length && !interactionCode;\n}\n\nexport function canSkipFn(idxResponse: IdxResponse) {\n return idxResponse.neededToProceed.some(({ name }) => name === 'skip');\n}\n\nexport function canResendFn(idxResponse: IdxResponse) {\n return Object.keys(idxResponse.actions).some(actionName => actionName.includes('resend'));\n}\n\nexport function getMessagesFromIdxRemediationValue(\n value?: IdxRemediationValue[]\n): IdxMessage[] | undefined {\n if (!value || !Array.isArray(value)) {\n return;\n }\n return value.reduce((messages, value) => {\n if (value.messages) {\n messages = [...messages, ...value.messages.value] as never;\n }\n if (value.form) {\n const messagesFromForm = getMessagesFromIdxRemediationValue(value.form.value) || [];\n messages = [...messages, ...messagesFromForm] as never;\n } \n if (value.options) {\n let optionValues = [];\n value.options.forEach(option => {\n if (!option.value || typeof option.value === 'string') {\n return;\n }\n optionValues = [...optionValues, option.value] as never;\n });\n const messagesFromOptions = getMessagesFromIdxRemediationValue(optionValues) || [];\n messages = [...messages, ...messagesFromOptions] as never;\n }\n return messages;\n }, []);\n}\n\nexport function getMessagesFromResponse(idxResponse: IdxResponse, options: RunOptions): IdxMessage[] {\n let messages: IdxMessage[] = [];\n const { rawIdxState, neededToProceed } = idxResponse;\n\n // Handle global messages\n const globalMessages = rawIdxState.messages?.value.map(message => message);\n if (globalMessages) {\n messages = [...messages, ...globalMessages] as never;\n }\n\n // Handle field messages for current flow\n // Preserve existing logic for general cases, remove in the next major version\n // Follow ion response format for top level messages when useGenericRemediator is true\n if (!options.useGenericRemediator) {\n for (let remediation of neededToProceed) {\n const fieldMessages = getMessagesFromIdxRemediationValue(remediation.value);\n if (fieldMessages) {\n messages = [...messages, ...fieldMessages] as never;\n }\n }\n }\n\n // API may return identical error on same field, filter by i18n key\n const seen = {};\n messages = messages.reduce((filtered, message) => {\n const key = message.i18n?.key;\n if (key && seen[key] && message.message === seen[key].message) {\n return filtered;\n }\n seen[key] = message;\n filtered = [...filtered, message] as never;\n return filtered;\n }, []);\n\n return messages;\n}\n\n\nexport function getEnabledFeatures(idxResponse: IdxResponse): IdxFeature[] {\n const res = [];\n const { actions, neededToProceed } = idxResponse;\n\n if (actions['currentAuthenticator-recover']) {\n res.push(IdxFeature.PASSWORD_RECOVERY as never);\n }\n\n if (neededToProceed.some(({ name }) => name === 'select-enroll-profile')) {\n res.push(IdxFeature.REGISTRATION as never);\n }\n\n if (neededToProceed.some(({ name }) => name === 'redirect-idp')) {\n res.push(IdxFeature.SOCIAL_IDP as never);\n }\n\n if (neededToProceed.some(({ name }) => name === 'unlock-account')) {\n res.push(IdxFeature.ACCOUNT_UNLOCK as never);\n }\n\n return res;\n}\n\nexport function getAvailableSteps(\n authClient: OktaAuthIdxInterface, \n idxResponse: IdxResponse, \n useGenericRemediator?: boolean\n): NextStep[] {\n const res: NextStep[] = [];\n\n const remediatorMap: Record = Object.values(ctx.remediators)\n .reduce((map, remediatorClass) => {\n // Only add concrete subclasses to the map\n if (remediatorClass.remediationName) {\n map[remediatorClass.remediationName] = remediatorClass;\n }\n return map;\n }, {});\n\n for (let remediation of idxResponse.neededToProceed) {\n const T = getRemediatorClass(remediation, { useGenericRemediator, remediators: remediatorMap });\n if (T) {\n const remediator: Remediator = new T(remediation);\n res.push (remediator.getNextStep(authClient, idxResponse.context) as never);\n }\n }\n\n for (const [name] of Object.entries((idxResponse.actions || {}))) {\n let stepObj = {\n name, \n action: async (params?) => {\n return authClient.idx.proceed({ \n actions: [{ name, params }] \n });\n }\n };\n if (name.startsWith('currentAuthenticator')) {\n const [part1, part2] = split2(name, '-');\n const actionObj = idxResponse.rawIdxState[part1].value[part2];\n /* eslint-disable no-unused-vars, @typescript-eslint/no-unused-vars */\n const {\n href, \n method, \n rel, \n accepts, \n produces, \n ...rest\n } = actionObj;\n /* eslint-enable no-unused-vars, @typescript-eslint/no-unused-vars */\n const value = actionObj.value?.filter(item => item.name !== 'stateHandle');\n stepObj = { \n ...rest, \n ...(value && { value }),\n ...stepObj,\n };\n }\n res.push(stepObj);\n }\n\n return res;\n}\n\nexport function filterValuesForRemediation(\n idxResponse: IdxResponse,\n remediationName: string,\n values: RemediationValues\n): RemediationValues {\n const remediations = idxResponse.neededToProceed || [];\n const remediation = remediations.find(r => r.name === remediationName);\n if (!remediation) {\n // step was specified, but remediation was not found. This is unexpected!\n warn(`filterValuesForRemediation: \"${remediationName}\" did not match any remediations`);\n return values;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const valuesForRemediation = remediation.value!.reduce((res, entry) => {\n const { name, value } = entry;\n if (name === 'stateHandle') {\n res[name] = value; // use the stateHandle value in the remediation\n } else {\n res[name] = values[name]; // use the value provided by the caller\n }\n return res;\n }, {});\n return valuesForRemediation;\n}\n\nfunction getRemediatorClass(remediation: IdxRemediation, options: RemediateOptions) {\n const { useGenericRemediator, remediators } = options;\n \n if (!remediation) {\n return undefined;\n }\n\n if (useGenericRemediator) {\n return GenericRemediator;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return remediators![remediation.name];\n}\n\n// Return first match idxRemediation in allowed remediators\n// eslint-disable-next-line complexity\nexport function getRemediator(\n idxResponse: IdxResponse,\n values: RemediationValues,\n options: RemediateOptions,\n): Remediator | undefined {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const remediators = options.remediators!;\n const useGenericRemediator = options.useGenericRemediator;\n const {neededToProceed: idxRemediations, context} = idxResponse;\n\n let remediator: Remediator;\n // remediation name specified by caller - fast-track remediator lookup \n if (options.step) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const remediation = idxRemediations.find(({ name }) => name === options.step)!;\n if (remediation) {\n const T = getRemediatorClass(remediation, options);\n return T ? new T(remediation, values, options) : undefined;\n } else {\n // step was specified, but remediation was not found. This is unexpected!\n warn(`step \"${options.step}\" did not match any remediations`);\n return;\n }\n }\n\n const remediatorCandidates: Remediator[] = [];\n if (useGenericRemediator) {\n // always pick the first remediation for when use GenericRemediator\n remediatorCandidates.push(new GenericRemediator(idxRemediations[0], values, options));\n } else {\n for (let remediation of idxRemediations) {\n const isRemeditionInFlow = Object.keys(remediators as object).includes(remediation.name);\n if (!isRemeditionInFlow) {\n continue;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const T = getRemediatorClass(remediation, options)!;\n remediator = new T(remediation, values, options);\n if (remediator.canRemediate(context)) {\n // found the remediator\n return remediator;\n }\n // remediator cannot handle the current values\n // maybe return for next step\n remediatorCandidates.push(remediator); \n }\n }\n \n return remediatorCandidates[0];\n}\n\n\nexport function getNextStep(\n authClient: OktaAuthIdxInterface, remediator: Remediator, idxResponse: IdxResponse\n): NextStep {\n const nextStep = remediator.getNextStep(authClient, idxResponse.context);\n const canSkip = canSkipFn(idxResponse);\n const canResend = canResendFn(idxResponse);\n return {\n ...nextStep,\n ...(canSkip && {canSkip}),\n ...(canResend && {canResend}),\n };\n}\n\nexport function handleFailedResponse(\n authClient: OktaAuthIdxInterface,\n idxResponse: IdxResponse,\n options = {}\n): RemediationResponse {\n const terminal = isTerminalResponse(idxResponse);\n const messages = getMessagesFromResponse(idxResponse, options);\n if (terminal) {\n return { idxResponse, terminal, messages };\n } else {\n const remediator = getRemediator(idxResponse, {}, options);\n const nextStep = remediator && getNextStep(authClient, remediator, idxResponse);\n return {\n idxResponse,\n messages,\n ...(nextStep && { nextStep }),\n };\n }\n \n}\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, max-depth, complexity */\nimport { AuthSdkError } from '../errors';\nimport { RemediationValues } from './remediators';\nimport { OktaAuthIdxInterface, RemediateOptions, RemediationResponse } from './types';\nimport { \n IdxResponse,\n IdxActionParams, \n} from './types/idx-js';\nimport {\n isTerminalResponse,\n filterValuesForRemediation,\n getRemediator,\n getNextStep,\n handleFailedResponse\n} from './util';\n\nexport interface RemediateActionWithOptionalParams {\n name: string;\n params?: IdxActionParams;\n}\n\nexport type RemediateAction = string | RemediateActionWithOptionalParams;\n\n\nfunction getActionFromValues(values: RemediationValues, idxResponse: IdxResponse): string | undefined {\n // Currently support resend actions only\n return Object.keys(idxResponse.actions).find(action => !!values.resend && action.includes('-resend'));\n}\n\nfunction removeActionFromValues(values: RemediationValues): RemediationValues {\n // Currently support resend actions only\n return {\n ...values,\n resend: undefined\n };\n}\n\nfunction removeActionFromOptions(options: RemediateOptions, actionName: string): RemediateOptions {\n let actions = options.actions || [];\n actions = actions.filter(entry => {\n if (typeof entry === 'string') {\n return entry !== actionName;\n }\n return entry.name !== actionName;\n });\n\n return { ...options, actions };\n}\n\n// This function is called recursively until it reaches success or cannot be remediated\nexport async function remediate(\n authClient: OktaAuthIdxInterface,\n idxResponse: IdxResponse,\n values: RemediationValues,\n options: RemediateOptions\n): Promise {\n let { neededToProceed, interactionCode } = idxResponse;\n const { flow } = options;\n\n // If the response contains an interaction code, there is no need to remediate\n if (interactionCode) {\n return { idxResponse };\n }\n\n const remediator = getRemediator(idxResponse, values, options);\n\n // Try actions in idxResponse first\n const actionFromValues = getActionFromValues(values, idxResponse);\n const actionFromOptions = options.actions || [];\n const actions = [\n ...actionFromOptions,\n ...(actionFromValues && [actionFromValues] || []),\n ];\n if (actions) {\n for (let action of actions) {\n // Action can either be specified as a string, or as an object with name and optional params\n let params: IdxActionParams = {};\n if (typeof action !== 'string') {\n params = action.params || {};\n action = action.name;\n }\n let valuesWithoutExecutedAction = removeActionFromValues(values);\n let optionsWithoutExecutedAction = removeActionFromOptions(options, action);\n\n if (typeof idxResponse.actions[action] === 'function') {\n idxResponse = await idxResponse.actions[action](params);\n if (idxResponse.requestDidSucceed === false) {\n return handleFailedResponse(authClient, idxResponse, options);\n }\n if (action === 'cancel') {\n return { idxResponse, canceled: true };\n }\n return remediate(\n authClient, \n idxResponse, \n valuesWithoutExecutedAction, \n optionsWithoutExecutedAction\n ); // recursive call\n }\n\n // search for action in remediation list\n const remediationAction = neededToProceed.find(({ name }) => name === action);\n if (remediationAction) {\n idxResponse = await idxResponse.proceed(action, params);\n if (idxResponse.requestDidSucceed === false) {\n return handleFailedResponse(authClient, idxResponse, options);\n }\n return remediate(authClient, idxResponse, values, optionsWithoutExecutedAction); // recursive call\n }\n }\n }\n\n // Do not attempt to remediate if response is in terminal state\n const terminal = isTerminalResponse(idxResponse);\n if (terminal) {\n return { idxResponse, terminal };\n }\n\n if (!remediator) {\n // With options.step, remediator is not required\n if (options.step) {\n values = filterValuesForRemediation(idxResponse, options.step, values); // include only requested values\n idxResponse = await idxResponse.proceed(options.step, values);\n if (idxResponse.requestDidSucceed === false) {\n return handleFailedResponse(authClient, idxResponse, options);\n }\n return { idxResponse };\n }\n\n // With default flow, remediator is not required\n if (flow === 'default') {\n return { idxResponse };\n }\n throw new AuthSdkError(`\n No remediation can match current flow, check policy settings in your org.\n Remediations: [${neededToProceed.reduce((acc, curr) => acc ? acc + ' ,' + curr.name : curr.name, '')}]\n `);\n }\n\n // Return next step to the caller\n if (!remediator.canRemediate()) {\n const nextStep = getNextStep(authClient, remediator, idxResponse);\n return {\n idxResponse,\n nextStep,\n };\n }\n\n const name = remediator.getName();\n const data = remediator.getData();\n\n idxResponse = await idxResponse.proceed(name, data);\n if (idxResponse.requestDidSucceed === false) {\n return handleFailedResponse(authClient, idxResponse, options);\n }\n // We may want to trim the values bag for the next remediation\n // Let the remediator decide what the values should be (default to current values)\n values = remediator.getValuesAfterProceed();\n options = { ...options, step: undefined }; // do not re-use the step\n\n // generic remediator should not auto proceed in pending status\n // return nextStep directly\n if (options.useGenericRemediator && !idxResponse.interactionCode && !isTerminalResponse(idxResponse)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const gr = getRemediator(idxResponse, values, options)!;\n const nextStep = getNextStep(authClient, gr, idxResponse);\n return {\n idxResponse,\n nextStep,\n };\n }\n \n return remediate(authClient, idxResponse, values, options); // recursive call\n\n}\n","/* 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 { RemediationValues } from './remediators/Base/Remediator';\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 {\n getAvailableSteps,\n getEnabledFeatures,\n getMessagesFromResponse,\n isTerminalResponse,\n getFlowSpecification\n} from './util';\nimport { Tokens } from '../oidc/types';\nimport { APIError } from '../errors/types';\ndeclare interface RunData {\n options: RunOptions;\n values: 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: OktaAuthIdxInterface, 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: OktaAuthIdxInterface, data: RunData): Promise {\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: OktaAuthIdxInterface, data: RunData): Promise {\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: OktaAuthIdxInterface, data: RunData): Promise {\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: OktaAuthIdxInterface, data: RunData): Promise {\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 {\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","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { \n OktaAuthIdxInterface,\n IdxTransaction,\n AuthenticatorKey,\n AuthenticationOptions\n} from './types';\nimport { run } from './run';\n\nexport async function authenticate(\n authClient: OktaAuthIdxInterface, options: AuthenticationOptions = {}\n): Promise {\n if (options.password && !options.authenticator) {\n options.authenticator = AuthenticatorKey.OKTA_PASSWORD;\n }\n return run(authClient, { \n ...options, \n flow: 'authenticate'\n });\n}\n","import { IdxAuthenticator, IdxRemediationValue } from '../types/idx-js';\n\n\nexport interface Credentials {\n [key: string]: string | undefined;\n}\n\nexport abstract class Authenticator {\n meta: IdxAuthenticator;\n\n constructor(authenticator: IdxAuthenticator) {\n this.meta = authenticator;\n }\n\n abstract canVerify(values: Values): boolean;\n\n abstract mapCredentials(values: Values): Credentials | undefined;\n\n abstract getInputs(idxRemediationValue: IdxRemediationValue): any; // TODO: add type\n}\n","import { Authenticator, Credentials } from './Authenticator';\n\nexport interface VerificationCodeValues {\n verificationCode?: string;\n otp?: string;\n credentials?: Credentials;\n}\n\ninterface VerificationCodeCredentials extends Credentials {\n passcode: string;\n}\n\n// general authenticator to handle \"verificationCode\" input\n// it can be used for \"email\", \"phone\", \"google authenticator\"\n// a new authenticator class should be created if special cases need to be handled\nexport class VerificationCodeAuthenticator extends Authenticator {\n canVerify(values: VerificationCodeValues) {\n return !!(values.credentials ||values.verificationCode || values.otp);\n }\n\n mapCredentials(values): VerificationCodeCredentials | Credentials | undefined {\n const { credentials, verificationCode, otp } = values;\n if (!credentials && !verificationCode && !otp) {\n return;\n }\n return credentials || { passcode: verificationCode || otp };\n }\n\n getInputs(idxRemediationValue) {\n return {\n ...idxRemediationValue.form?.value[0],\n name: 'verificationCode',\n type: 'string',\n required: idxRemediationValue.required\n };\n }\n}\n","import { Credentials } from './Authenticator';\nimport { VerificationCodeAuthenticator } from './VerificationCodeAuthenticator';\n\ninterface TotpCredentials extends Credentials {\n totp: string;\n}\n\nexport class OktaVerifyTotp extends VerificationCodeAuthenticator {\n mapCredentials(values): TotpCredentials | undefined {\n const { verificationCode } = values;\n if (!verificationCode) {\n return;\n }\n return { totp: verificationCode };\n }\n}\n","import { Authenticator, Credentials } from './Authenticator';\n\nexport interface OktaPasswordInputValues {\n password?: string;\n passcode?: string;\n credentials?: Credentials;\n}\n\nexport class OktaPassword extends Authenticator {\n canVerify(values: OktaPasswordInputValues) {\n return !!(values.credentials || values.password || values.passcode);\n }\n\n mapCredentials(values: OktaPasswordInputValues): Credentials | undefined {\n const { credentials, password, passcode } = values;\n if (!credentials && !password && !passcode) {\n return;\n }\n return credentials || { passcode: passcode || password };\n }\n\n getInputs(idxRemediationValue) {\n return {\n ...idxRemediationValue.form?.value[0],\n name: 'password',\n type: 'string',\n required: idxRemediationValue.required\n };\n }\n}\n","import { Authenticator, Credentials } from './Authenticator';\n\nexport interface SecurityQuestionEnrollValues {\n questionKey?: string;\n question?: string;\n answer?: string;\n credentials?: Credentials;\n}\n\nexport class SecurityQuestionEnrollment extends Authenticator {\n canVerify(values: SecurityQuestionEnrollValues) {\n const { credentials } = values;\n if (credentials && credentials.questionKey && credentials.answer) {\n return true;\n }\n const { questionKey, question, answer } = values;\n return !!(questionKey && answer) || !!(question && answer);\n }\n\n mapCredentials(values: SecurityQuestionEnrollValues): Credentials | undefined {\n const { questionKey, question, answer } = values;\n if (!answer || (!questionKey && !question)) {\n return;\n }\n return {\n questionKey: question ? 'custom' : questionKey,\n question,\n answer\n };\n }\n\n getInputs() {\n return [\n { name: 'questionKey', type: 'string', required: true },\n { name: 'question', type: 'string', label: 'Create a security question' },\n { name: 'answer', type: 'string', label: 'Answer', required: true },\n ];\n }\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { Authenticator, Credentials } from './Authenticator';\n\nexport interface SecurityQuestionVerificationValues {\n answer?: string;\n credentials?: Credentials;\n}\n\nexport class SecurityQuestionVerification extends Authenticator {\n canVerify(values: SecurityQuestionVerificationValues) {\n const { credentials } = values;\n if (credentials && credentials.answer) {\n return true;\n }\n const { answer } = values;\n return !!answer;\n }\n\n mapCredentials(values: SecurityQuestionVerificationValues): Credentials | undefined {\n const { answer } = values;\n if (!answer) {\n return;\n }\n return {\n questionKey: this.meta.contextualData!.enrolledQuestion!.questionKey,\n answer\n };\n }\n\n getInputs() {\n return [\n { name: 'answer', type: 'string', label: 'Answer', required: true }\n ];\n }\n}\n","import { Authenticator, Credentials } from './Authenticator';\n\nexport interface WebauthnEnrollValues {\n clientData?: string;\n attestation?: string;\n credentials?: Credentials;\n}\n\nexport class WebauthnEnrollment extends Authenticator {\n canVerify(values: WebauthnEnrollValues) {\n const { credentials } = values;\n const obj = credentials || values;\n const { clientData, attestation } = obj;\n return !!(clientData && attestation);\n }\n\n mapCredentials(values: WebauthnEnrollValues): Credentials | undefined {\n const { credentials, clientData, attestation } = values;\n if (!credentials && !clientData && !attestation) {\n return;\n }\n return credentials || ({\n clientData,\n attestation\n });\n }\n\n getInputs() {\n return [\n { name: 'clientData', type: 'string', required: true, visible: false, label: 'Client Data' },\n { name: 'attestation', type: 'string', required: true, visible: false, label: 'Attestation' },\n ];\n }\n}\n","import { Authenticator, Credentials } from './Authenticator';\n\nexport interface WebauthnVerificationValues {\n clientData?: string;\n authenticatorData?: string;\n signatureData?: string;\n credentials?: Credentials;\n}\n\nexport class WebauthnVerification extends Authenticator {\n canVerify(values: WebauthnVerificationValues) {\n const { credentials } = values;\n const obj = credentials || values;\n const { clientData, authenticatorData, signatureData } = obj;\n return !!(clientData && authenticatorData && signatureData);\n }\n\n mapCredentials(values: WebauthnVerificationValues): Credentials | undefined {\n const { credentials, authenticatorData, clientData, signatureData } = values;\n if (!credentials && !authenticatorData && !clientData && !signatureData) {\n return;\n }\n return credentials || ({\n authenticatorData,\n clientData,\n signatureData\n });\n }\n\n getInputs() {\n return [\n { name: 'authenticatorData', type: 'string', label: 'Authenticator Data', required: true, visible: false },\n { name: 'clientData', type: 'string', label: 'Client Data', required: true, visible: false },\n { name: 'signatureData', type: 'string', label: 'Signature Data', required: true, visible: false },\n ];\n }\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Remediator';\nimport { getAuthenticator, Authenticator, AuthenticatorValues } from '../../authenticator';\nimport { IdxRemediation, IdxContext } from '../../types/idx-js';\nimport { OktaAuthIdxInterface, NextStep } from '../../types';\n\nexport type VerifyAuthenticatorValues = AuthenticatorValues & RemediationValues;\n\n// Base class - DO NOT expose static remediationName\nexport class VerifyAuthenticator\n extends Remediator {\n\n authenticator: Authenticator;\n\n constructor(remediation: IdxRemediation, values: T = {} as T) {\n super(remediation, values);\n this.authenticator = getAuthenticator(remediation);\n }\n\n getNextStep(authClient: OktaAuthIdxInterface, context?: IdxContext): NextStep {\n const nextStep = super.getNextStep(authClient, context);\n const authenticatorEnrollments = context?.authenticatorEnrollments?.value;\n\n return {\n ...nextStep,\n authenticatorEnrollments\n };\n }\n\n canRemediate() {\n return this.authenticator.canVerify(this.values);\n }\n\n mapCredentials() {\n return this.authenticator.mapCredentials(this.values);\n }\n\n getInputCredentials(input) {\n return this.authenticator.getInputs(input);\n }\n\n getValuesAfterProceed(): T {\n this.values = super.getValuesAfterProceed();\n let trimmedValues = Object.keys(this.values).filter(valueKey => valueKey !== 'credentials');\n return trimmedValues.reduce((values, valueKey) => ({...values, [valueKey]: this.values[valueKey]}), {} as T);\n }\n}\n","import { OktaVerifyTotp } from './OktaVerifyTotp';\nimport { Authenticator } from './Authenticator';\nimport { VerificationCodeAuthenticator } from './VerificationCodeAuthenticator';\nimport { OktaPassword } from './OktaPassword';\nimport { SecurityQuestionEnrollment } from './SecurityQuestionEnrollment';\nimport { SecurityQuestionVerification } from './SecurityQuestionVerification';\nimport { WebauthnEnrollment } from './WebauthnEnrollment';\nimport { WebauthnVerification } from './WebauthnVerification';\nimport { IdxAuthenticator, IdxRemediation } from '../types/idx-js';\nimport { AuthenticatorKey } from '../types';\n\n/* eslint complexity:[0,8] */\nexport function getAuthenticator(remediation: IdxRemediation): Authenticator {\n const relatesTo = remediation.relatesTo;\n const value = relatesTo?.value || {} as IdxAuthenticator;\n switch (value.key) {\n case AuthenticatorKey.OKTA_PASSWORD:\n return new OktaPassword(value);\n case AuthenticatorKey.SECURITY_QUESTION:\n if (value.contextualData?.enrolledQuestion) {\n return new SecurityQuestionVerification(value);\n } else {\n return new SecurityQuestionEnrollment(value);\n }\n case AuthenticatorKey.OKTA_VERIFY:\n return new OktaVerifyTotp(value);\n case AuthenticatorKey.WEBAUTHN:\n if (value.contextualData?.challengeData) {\n return new WebauthnVerification(value);\n } else {\n return new WebauthnEnrollment(value);\n }\n default:\n return new VerificationCodeAuthenticator(value);\n }\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { VerifyAuthenticator, VerifyAuthenticatorValues } from './Base/VerifyAuthenticator';\n\nexport type EnrollAuthenticatorValues = VerifyAuthenticatorValues;\n\nexport class EnrollAuthenticator extends VerifyAuthenticator {\n static remediationName = 'enroll-authenticator';\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Base/Remediator';\nimport { NextStep, OktaAuthIdxInterface } from '../types';\nimport { IdxContext } from '../types/idx-js';\n\nexport interface EnrollPollValues extends RemediationValues {\n startPolling?: boolean;\n}\n\nexport class EnrollPoll extends Remediator {\n static remediationName = 'enroll-poll';\n\n canRemediate() {\n return !!this.values.startPolling || this.options.step === 'enroll-poll';\n }\n\n getNextStep(authClient: OktaAuthIdxInterface, context?: IdxContext): NextStep {\n const common = super.getNextStep(authClient, context);\n let authenticator = this.getAuthenticator();\n if (!authenticator && context?.currentAuthenticator) {\n authenticator = context.currentAuthenticator.value;\n }\n return {\n ...common,\n authenticator,\n poll: {\n required: true,\n refresh: this.remediation.refresh\n },\n };\n }\n\n getValuesAfterProceed(): EnrollPollValues {\n let trimmedValues = Object.keys(this.values).filter(valueKey => valueKey !== 'startPolling');\n return trimmedValues.reduce((values, valueKey) => ({...values, [valueKey]: this.values[valueKey]}), {});\n }\n}\n","/*!\n * Copyright (c) 2021-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Base/Remediator';\nimport { IdxRemediationValueForm, IdxContext } from '../types/idx-js';\nimport { Authenticator, OktaAuthIdxInterface } from '../types/api';\n\n\nexport type SelectEnrollmentChannelValues = RemediationValues & {\n channel?: string;\n};\n\nexport class SelectEnrollmentChannel extends Remediator {\n static remediationName = 'select-enrollment-channel';\n\n canRemediate() {\n if (this.values.channel) {\n return true;\n }\n\n if (this.values.authenticator) {\n const { id, channel } = this.values.authenticator as Authenticator;\n if (!!id && !!channel) {\n return true;\n }\n }\n\n return false;\n }\n\n getNextStep(authClient: OktaAuthIdxInterface, context: IdxContext) {\n const common = super.getNextStep(authClient, context);\n const authenticator = context.currentAuthenticator.value;\n return {\n ...common,\n authenticator,\n };\n }\n\n getData() {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const remediationValue = this.remediation!.value![0].value as IdxRemediationValueForm;\n return {\n authenticator: {\n id: remediationValue.form.value[0].value,\n channel: (this.values.authenticator as Authenticator)?.channel || this.values.channel,\n },\n stateHandle: this.values.stateHandle,\n\n };\n }\n\n getValuesAfterProceed(): SelectEnrollmentChannelValues {\n this.values = super.getValuesAfterProceed();\n delete this.values.authenticators; // required to prevent infinite loops from auto-remediating via values\n const filterKey = this.values.channel ? 'channel' : 'authenticator';\n let trimmedValues = Object.keys(this.values).filter(valueKey => valueKey !== filterKey);\n return trimmedValues.reduce((values, valueKey) => ({...values, [valueKey]: this.values[valueKey]}), {});\n }\n}\n","/*!\n * Copyright (c) 2021-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Base/Remediator';\nimport { IdxContext } from '../types/idx-js';\nimport { OktaAuthIdxInterface } from '../types';\n\n\nexport type EnrollmentChannelDataValues = RemediationValues & {\n email?: string;\n phoneNumber?: string;\n};\n\nexport class EnrollmentChannelData extends Remediator {\n static remediationName = 'enrollment-channel-data';\n\n getInputEmail() {\n return [\n { name: 'email', type: 'string', required: true, label: 'Email' },\n ];\n }\n\n getInputPhoneNumber() {\n return [\n { name: 'phoneNumber', type: 'string', required: true, label: 'Phone Number' },\n ];\n }\n\n canRemediate() {\n return Boolean(this.values.email || this.values.phoneNumber);\n }\n\n getNextStep(authClient: OktaAuthIdxInterface, context: IdxContext) {\n const common = super.getNextStep(authClient, context);\n const authenticator = context.currentAuthenticator.value;\n return {\n ...common,\n authenticator,\n };\n }\n\n getData() {\n return {\n stateHandle: this.values.stateHandle,\n email: this.values.email,\n phoneNumber: this.values.phoneNumber\n };\n }\n\n getValuesAfterProceed(): EnrollmentChannelDataValues {\n let trimmedValues = Object.keys(this.values).filter(valueKey => !['email', 'phoneNumber'].includes(valueKey));\n return trimmedValues.reduce((values, valueKey) => ({...values, [valueKey]: this.values[valueKey]}), {});\n }\n}\n","/*!\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 { VerifyAuthenticator, VerifyAuthenticatorValues } from './Base/VerifyAuthenticator';\n\nexport type ChallengeAuthenticatorValues = VerifyAuthenticatorValues;\n\nexport class ChallengeAuthenticator extends VerifyAuthenticator {\n static remediationName = 'challenge-authenticator';\n}\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\nimport { EnrollPoll } from './EnrollPoll';\n\nexport class ChallengePoll extends EnrollPoll{\n static remediationName = 'challenge-poll';\n\n canRemediate() {\n return !!this.values.startPolling || this.options.step === 'challenge-poll';\n }\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { VerifyAuthenticator, VerifyAuthenticatorValues } from './Base/VerifyAuthenticator';\n\nexport type ResetAuthenticatorValues = VerifyAuthenticatorValues;\n\nexport class ResetAuthenticator extends VerifyAuthenticator {\n static remediationName = 'reset-authenticator';\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { IdxRemediation, IdxRemediationValue, IdxAuthenticator } from '../types/idx-js';\nimport { RemediateOptions } from '../types';\nimport { Remediator, RemediationValues } from './Base/Remediator';\nimport { Authenticator, Credentials, OktaPassword } from '../authenticator';\n\nexport interface EnrollProfileValues extends RemediationValues {\n firstName?: string;\n lastName?: string;\n email?: string;\n credentials?: Credentials;\n password?: string;\n passcode?: string;\n}\n\nexport class EnrollProfile extends Remediator {\n static remediationName = 'enroll-profile';\n\n authenticator: Authenticator | null = null;\n\n constructor(\n remediation: IdxRemediation,\n values: EnrollProfileValues = {},\n options: RemediateOptions = {}\n ) {\n super(remediation, values, options);\n\n // credentials are only required when Profile Enrollment policy requires them\n // if credentials are included in the remediation, they are considered required\n // otherwise it will be omitted\n const credentials = this.getCredentialsFromRemediation();\n if (credentials) {\n this.authenticator = this.authenticator = new OktaPassword({} as IdxAuthenticator);\n }\n }\n\n canRemediate() {\n // ensure credentials can be verified, if required\n if (this.authenticator && !this.authenticator.canVerify(this.values)) {\n return false;\n }\n\n const userProfileFromValues = this.getData().userProfile;\n if (!userProfileFromValues) {\n return false;\n }\n // eslint-disable-next-line max-len\n const userProfileFromRemediation = this.remediation.value!.find(({ name }) => name === 'userProfile') as IdxRemediationValue;\n return userProfileFromRemediation.form!.value.reduce((canRemediate, curr) => {\n if (curr.required) {\n canRemediate = canRemediate && !!userProfileFromValues[curr.name];\n }\n return canRemediate;\n }, true);\n }\n\n getCredentialsFromRemediation () {\n return this.remediation.value!.find(({ name }) => name === 'credentials');\n }\n\n mapUserProfile({form: { value: profileAttributes }}) {\n const attributeNames = profileAttributes.map(({name}) => name);\n const data = attributeNames.reduce((attributeValues, attributeName) => (\n this.values[attributeName] ? {\n ...attributeValues,\n [attributeName]: this.values[attributeName]\n } : attributeValues), {});\n if (Object.keys(data).length === 0) {\n return;\n }\n return data;\n }\n\n mapCredentials() {\n const val = this.authenticator && this.authenticator.mapCredentials(this.values);\n if (!val) {\n return;\n }\n return val;\n }\n\n getInputUserProfile(input) {\n return [...input.form.value];\n }\n\n getInputCredentials(input) {\n return [...input.form.value];\n }\n\n getErrorMessages(errorRemediation) {\n return errorRemediation.value[0].form.value.reduce((errors, field) => {\n if (field.messages) {\n errors.push(field.messages.value[0].message);\n }\n return errors;\n }, []);\n }\n}","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Credentials } from '../authenticator';\nimport { Remediator, RemediationValues } from './Base/Remediator';\n\nexport interface IdentifyValues extends RemediationValues {\n username?: string;\n password?: string;\n credentials?: Credentials;\n rememberMe?: boolean;\n}\n\nexport class Identify extends Remediator {\n static remediationName = 'identify';\n\n map = {\n 'identifier': ['username']\n };\n\n canRemediate(): boolean {\n const { identifier } = this.getData();\n return !!identifier;\n }\n\n mapCredentials() {\n const { credentials, password } = this.values;\n if (!credentials && !password) {\n return;\n }\n return credentials || { passcode: password };\n }\n\n getInputCredentials(input) {\n return {\n ...input.form.value[0],\n name: 'password',\n required: input.required\n };\n }\n\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Base/Remediator';\n\nexport interface ReEnrollAuthenticatorValues extends RemediationValues {\n newPassword?: string;\n}\n\nexport class ReEnrollAuthenticator extends Remediator {\n static remediationName = 'reenroll-authenticator';\n\n mapCredentials() {\n const { newPassword } = this.values;\n if (!newPassword) {\n return;\n }\n return { \n passcode: newPassword,\n };\n }\n\n getInputCredentials(input) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const challengeType = this.getAuthenticator()!.type;\n const name = challengeType === 'password' ? 'newPassword' : 'verificationCode';\n return {\n ...input.form.value[0],\n name\n };\n }\n\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { ReEnrollAuthenticator } from './ReEnrollAuthenticator';\n\nexport class ReEnrollAuthenticatorWarning extends ReEnrollAuthenticator {\n static remediationName = 'reenroll-authenticator-warning';\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator } from './Base/Remediator';\n\nexport class RedirectIdp extends Remediator {\n static remediationName = 'redirect-idp';\n\n canRemediate() {\n return false;\n }\n\n getNextStep() {\n const { name, type, idp, href } = this.remediation;\n return {\n name,\n type,\n idp,\n href\n };\n }\n\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Remediator';\nimport { getAuthenticatorFromRemediation } from '../util';\nimport { IdxRemediationValue, IdxContext, IdxOption } from '../../types/idx-js';\nimport { Authenticator, isAuthenticator } from '../../types/api';\nimport { compareAuthenticators, findMatchedOption} from '../../authenticator/util';\n\nexport type SelectAuthenticatorValues = RemediationValues & {\n authenticator?: string | Authenticator;\n};\n\n// Base class - DO NOT expose static remediationName\nexport class SelectAuthenticator\n extends Remediator {\n selectedAuthenticator?: Authenticator;\n selectedOption?: any;\n\n // Find matched authenticator in provided order\n findMatchedOption(authenticators, options) {\n let option: IdxOption | undefined;\n for (let authenticator of authenticators) {\n option = options\n .find(({ relatesTo }) => relatesTo.key && relatesTo.key === authenticator.key);\n if (option) {\n break;\n }\n }\n return option;\n }\n\n /* eslint complexity:[0,9] */\n canRemediate(context?: IdxContext) {\n const { authenticators, authenticator } = this.values;\n const authenticatorFromRemediation = getAuthenticatorFromRemediation(this.remediation);\n const { options } = authenticatorFromRemediation;\n // Let users select authenticator if no input is provided\n if (!authenticators || !authenticators.length) {\n return false;\n }\n\n // Authenticator is explicitly specified by id\n if (isAuthenticator(authenticator) && authenticator.id) {\n return true;\n }\n\n // Proceed with provided authenticators\n const matchedOption = this.findMatchedOption(authenticators, options!);\n if (matchedOption) {\n // Don't select current authenticator (OKTA-612939)\n const isCurrentAuthenticator = context?.currentAuthenticator\n && context?.currentAuthenticator.value.id === matchedOption.relatesTo?.id;\n const isCurrentAuthenticatorEnrollment = context?.currentAuthenticatorEnrollment\n && context?.currentAuthenticatorEnrollment.value.id === matchedOption.relatesTo?.id;\n return !isCurrentAuthenticator && !isCurrentAuthenticatorEnrollment;\n }\n \n return false;\n }\n\n mapAuthenticator(remediationValue: IdxRemediationValue) {\n const { authenticators, authenticator } = this.values;\n\n // Authenticator is explicitly specified by id\n if (isAuthenticator(authenticator) && authenticator.id) {\n this.selectedAuthenticator = authenticator; // track the selected authenticator\n return authenticator;\n }\n\n const { options } = remediationValue;\n const selectedOption = findMatchedOption(authenticators, options);\n this.selectedAuthenticator = selectedOption.relatesTo; // track the selected authenticator\n this.selectedOption = selectedOption;\n return {\n id: selectedOption?.value.form.value.find(({ name }) => name === 'id').value\n };\n }\n\n getInputAuthenticator(remediation) {\n const options = remediation.options.map(({ label, relatesTo }) => {\n return {\n label,\n value: relatesTo.key\n };\n });\n return { name: 'authenticator', type: 'string', options };\n }\n\n getValuesAfterProceed(): T {\n this.values = super.getValuesAfterProceed();\n // remove used authenticators\n const authenticators = (this.values.authenticators as Authenticator[])\n .filter(authenticator => {\n return compareAuthenticators(authenticator, this.selectedAuthenticator) !== true;\n });\n return { ...this.values, authenticators };\n }\n\n}\n","/*!\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 { SelectAuthenticator, SelectAuthenticatorValues } from './Base/SelectAuthenticator';\nimport { getAuthenticatorFromRemediation } from './util';\nimport { IdxRemediation } from '../types/idx-js';\nimport { AuthenticatorKey, Authenticator, RemediateOptions } from '../types';\n\nexport type SelectAuthenticatorAuthenticateValues = SelectAuthenticatorValues & {\n password?: string;\n};\n\nexport class SelectAuthenticatorAuthenticate extends SelectAuthenticator {\n static remediationName = 'select-authenticator-authenticate';\n\n constructor(\n remediation: IdxRemediation, \n values: SelectAuthenticatorValues = {}, \n options: RemediateOptions = {}\n ) {\n super(remediation, values, options);\n\n // Preset password authenticator to trigger recover action\n const isRecoveryFlow = this.options.flow === 'recoverPassword';\n const hasPasswordInOptions = getAuthenticatorFromRemediation(remediation)\n .options?.some(({ relatesTo }) => relatesTo?.key === AuthenticatorKey.OKTA_PASSWORD);\n if (hasPasswordInOptions && (isRecoveryFlow || this.values.password)) {\n this.values.authenticators = [\n ...this.values.authenticators || [],\n { key: AuthenticatorKey.OKTA_PASSWORD }\n ] as Authenticator[];\n }\n }\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { SelectAuthenticator, SelectAuthenticatorValues } from './Base/SelectAuthenticator';\n\nexport type SelectAuthenticatorEnrollValues = SelectAuthenticatorValues;\n\nexport class SelectAuthenticatorEnroll extends SelectAuthenticator {\n static remediationName = 'select-authenticator-enroll';\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { SelectAuthenticator, SelectAuthenticatorValues } from './Base/SelectAuthenticator';\nimport { Authenticator } from '../types';\nimport { IdxRemediationValue } from '../types/idx-js';\n\n\nexport type SelectAuthenticatorUnlockAccountValues = SelectAuthenticatorValues & {\n identifier?: string;\n methodType?: string;\n};\n\nexport class SelectAuthenticatorUnlockAccount extends SelectAuthenticator {\n static remediationName = 'select-authenticator-unlock-account';\n authenticator?: Authenticator;\n\n map = {\n identifier: ['username']\n };\n\n canRemediate() {\n const identifier = this.getData('identifier');\n return !!identifier && super.canRemediate();\n }\n\n mapAuthenticator(remediationValue: IdxRemediationValue) {\n const authenticatorMap = super.mapAuthenticator(remediationValue);\n const methodTypeOption = this.selectedOption?.value.form.value.find(({ name }) => name === 'methodType');\n\n // defaults to 'manually defined' value\n // 2nd: option may have pre-defined value, like stateHandle\n // 3rd: if only a single OV option is available, default to that option\n const methodTypeValue = this.values.methodType ||\n methodTypeOption?.value as string || methodTypeOption?.options?.[0]?.value as string;\n\n if (methodTypeValue) {\n return {\n ...authenticatorMap,\n methodType: methodTypeValue\n };\n }\n\n return authenticatorMap;\n }\n\n getInputUsername () {\n return { name: 'username', type: 'string' };\n }\n\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Base/Remediator';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface SelectEnrollProfileValues extends RemediationValues {}\n\nexport class SelectEnrollProfile extends Remediator {\n static remediationName = 'select-enroll-profile';\n\n canRemediate() {\n return true;\n }\n}\n","/* 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\nimport { Remediator, RemediationValues } from './Remediator';\nimport { IdxRemediationValue, IdxRemediation, IdxAuthenticator } from '../../types/idx-js';\nimport { isAuthenticator } from '../../types/api';\nimport { compareAuthenticators } from '../../authenticator/util';\n\nexport type AuthenticatorDataValues = RemediationValues & {\n methodType?: string;\n};\n\n// Base class - DO NOT expose static remediationName\nexport class AuthenticatorData extends Remediator {\n authenticator: IdxAuthenticator;\n\n constructor(remediation: IdxRemediation, values: T = {} as T) {\n super(remediation, values);\n\n // set before other data calculation\n this.authenticator = this.getAuthenticator()!;\n\n this.formatAuthenticatorData();\n }\n\n protected formatAuthenticatorData() {\n const authenticatorData = this.getAuthenticatorData();\n if (authenticatorData) {\n this.values.authenticatorsData = this.values.authenticatorsData!.map(data => {\n if (compareAuthenticators(this.authenticator, data)) {\n return this.mapAuthenticatorDataFromValues(data);\n }\n return data;\n });\n } else {\n const data = this.mapAuthenticatorDataFromValues();\n if (data) {\n this.values.authenticatorsData!.push(data);\n }\n }\n }\n\n protected getAuthenticatorData() {\n return this.values.authenticatorsData!\n .find((data) => compareAuthenticators(this.authenticator, data));\n }\n\n canRemediate() {\n return this.values.authenticatorsData!\n .some(data => compareAuthenticators(this.authenticator, data));\n }\n\n protected mapAuthenticatorDataFromValues(authenticatorData?) {\n // add methodType to authenticatorData if it exists in values\n let { methodType, authenticator } = this.values;\n if (!methodType && isAuthenticator(authenticator)) {\n methodType = authenticator?.methodType;\n }\n \n const { id, enrollmentId } = this.authenticator;\n const data = { \n id,\n enrollmentId,\n ...(authenticatorData && authenticatorData),\n ...(methodType && { methodType }) \n };\n\n return data.methodType ? data : null;\n }\n\n protected getAuthenticatorFromRemediation(): IdxRemediationValue {\n const authenticator = this.remediation.value!\n .find(({ name }) => name === 'authenticator') as IdxRemediationValue;\n return authenticator;\n }\n\n getValuesAfterProceed(): T {\n this.values = super.getValuesAfterProceed();\n // remove used authenticatorData\n const authenticatorsData = this.values.authenticatorsData!\n .filter(data => compareAuthenticators(this.authenticator, data) !== true);\n return { ...this.values, authenticatorsData };\n }\n}\n","/* 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\nimport { AuthenticatorData, AuthenticatorDataValues } from './Base/AuthenticatorData';\n\nexport type AuthenticatorVerificationDataValues = AuthenticatorDataValues;\n\nexport class AuthenticatorVerificationData extends AuthenticatorData {\n static remediationName = 'authenticator-verification-data';\n\n mapAuthenticator() {\n return this.getAuthenticatorData();\n }\n\n getInputAuthenticator() {\n const authenticator = this.getAuthenticatorFromRemediation();\n const methodType = authenticator.form!.value.find(({ name }) => name === 'methodType');\n // if has methodType in form, let user select the methodType\n if (methodType && methodType.options) {\n return { \n name: 'methodType', \n type: 'string', \n required: true, \n options: methodType.options \n };\n }\n // no methodType, then return form values\n const inputs = [...authenticator.form!.value];\n return inputs;\n }\n\n getValuesAfterProceed(): AuthenticatorVerificationDataValues {\n this.values = super.getValuesAfterProceed();\n let trimmedValues = Object.keys(this.values).filter(valueKey => valueKey !== 'authenticator');\n return trimmedValues.reduce((values, valueKey) => ({...values, [valueKey]: this.values[valueKey]}), {});\n }\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { AuthenticatorData, AuthenticatorDataValues } from './Base/AuthenticatorData';\nimport { getAuthenticatorFromRemediation } from './util';\n\nexport type AuthenticatorEnrollmentDataValues = AuthenticatorDataValues & {\n phoneNumber?: string;\n resend?: boolean; // resend is not a remediator value - revise when IdxResponse structure is updated\n}\nexport class AuthenticatorEnrollmentData extends AuthenticatorData {\n static remediationName = 'authenticator-enrollment-data';\n\n mapAuthenticator() {\n const authenticatorData = this.getAuthenticatorData();\n const authenticatorFromRemediation = getAuthenticatorFromRemediation(this.remediation)!;\n return { \n id: authenticatorFromRemediation.form!.value\n .find(({ name }) => name === 'id')!.value,\n methodType: authenticatorData!.methodType,\n phoneNumber: authenticatorData!.phoneNumber,\n };\n }\n\n getInputAuthenticator(remediation) {\n return [\n { name: 'methodType', type: 'string' }, \n { name: 'phoneNumber', label: 'Phone Number', type: 'string' }\n ].map(item => {\n const value = remediation.form.value.find(val => val.name === item.name);\n return { ...value, ...item };\n });\n }\n\n protected mapAuthenticatorDataFromValues(data?) {\n // get mapped authenticator from base class\n data = super.mapAuthenticatorDataFromValues(data);\n // add phoneNumber to authenticator if it exists in values\n const { phoneNumber } = this.values;\n if (!data && !phoneNumber) {\n return;\n }\n\n return { \n ...(data && data), \n ...(phoneNumber && { phoneNumber }) \n };\n }\n\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Base/Remediator';\n\nexport interface SkipValues extends RemediationValues {\n skip?: boolean;\n}\n\nexport class Skip extends Remediator {\n static remediationName = 'skip';\n\n canRemediate() {\n return !!this.values.skip || this.options.step === 'skip';\n }\n\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { RemediationFlow } from './RemediationFlow';\nimport { \n Identify,\n SelectAuthenticatorAuthenticate,\n ChallengeAuthenticator,\n ReEnrollAuthenticator,\n ReEnrollAuthenticatorWarning,\n RedirectIdp,\n AuthenticatorEnrollmentData,\n SelectAuthenticatorEnroll,\n EnrollAuthenticator,\n AuthenticatorVerificationData,\n EnrollPoll,\n ChallengePoll,\n SelectEnrollmentChannel,\n EnrollmentChannelData,\n Skip\n} from '../remediators';\n\nexport const AuthenticationFlow: RemediationFlow = {\n 'identify': Identify,\n 'select-authenticator-authenticate': SelectAuthenticatorAuthenticate,\n 'select-authenticator-enroll': SelectAuthenticatorEnroll,\n 'authenticator-enrollment-data': AuthenticatorEnrollmentData,\n 'authenticator-verification-data': AuthenticatorVerificationData,\n 'enroll-authenticator': EnrollAuthenticator,\n 'challenge-authenticator': ChallengeAuthenticator,\n 'challenge-poll': ChallengePoll,\n 'reenroll-authenticator': ReEnrollAuthenticator,\n 'reenroll-authenticator-warning': ReEnrollAuthenticatorWarning,\n 'enroll-poll': EnrollPoll,\n 'select-enrollment-channel': SelectEnrollmentChannel,\n 'enrollment-channel-data': EnrollmentChannelData,\n 'redirect-idp': RedirectIdp,\n 'skip': Skip,\n};\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { RemediationFlow } from './RemediationFlow';\nimport {\n Identify,\n SelectAuthenticatorAuthenticate,\n ChallengeAuthenticator,\n AuthenticatorVerificationData,\n ResetAuthenticator,\n ReEnrollAuthenticator,\n ReEnrollAuthenticatorWarning,\n SelectAuthenticatorEnroll,\n AuthenticatorEnrollmentData,\n EnrollPoll\n} from '../remediators';\n\nexport const PasswordRecoveryFlow: RemediationFlow = {\n 'identify': Identify,\n 'identify-recovery': Identify,\n 'select-authenticator-authenticate': SelectAuthenticatorAuthenticate,\n 'select-authenticator-enroll': SelectAuthenticatorEnroll,\n 'challenge-authenticator': ChallengeAuthenticator,\n 'authenticator-verification-data': AuthenticatorVerificationData,\n 'authenticator-enrollment-data': AuthenticatorEnrollmentData,\n 'reset-authenticator': ResetAuthenticator,\n 'reenroll-authenticator': ReEnrollAuthenticator,\n 'reenroll-authenticator-warning': ReEnrollAuthenticatorWarning,\n 'enroll-poll': EnrollPoll,\n};\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { RemediationFlow } from './RemediationFlow';\nimport { \n SelectEnrollProfile,\n EnrollPoll,\n SelectEnrollmentChannel,\n EnrollmentChannelData,\n EnrollProfile,\n SelectAuthenticatorEnroll,\n EnrollAuthenticator,\n AuthenticatorEnrollmentData,\n Skip,\n} from '../remediators';\n\nexport const RegistrationFlow: RemediationFlow = {\n 'select-enroll-profile': SelectEnrollProfile,\n 'enroll-profile': EnrollProfile,\n 'authenticator-enrollment-data': AuthenticatorEnrollmentData,\n 'select-authenticator-enroll': SelectAuthenticatorEnroll,\n 'enroll-poll': EnrollPoll,\n 'select-enrollment-channel': SelectEnrollmentChannel,\n 'enrollment-channel-data': EnrollmentChannelData,\n 'enroll-authenticator': EnrollAuthenticator,\n 'skip': Skip,\n};\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { RemediationFlow } from './RemediationFlow';\nimport {\n Identify,\n SelectAuthenticatorUnlockAccount,\n SelectAuthenticatorAuthenticate,\n ChallengeAuthenticator,\n ChallengePoll,\n AuthenticatorVerificationData,\n ReEnrollAuthenticatorWarning\n} from '../remediators';\n\nexport const AccountUnlockFlow: RemediationFlow = {\n 'identify': Identify,\n // NOTE: unlock-account is purposely not included. Handled as action\n // because it's a rememdiation which requires no input\n // 'unlock-account': UnlockAccount,\n 'select-authenticator-unlock-account': SelectAuthenticatorUnlockAccount,\n 'select-authenticator-authenticate': SelectAuthenticatorAuthenticate,\n 'challenge-authenticator': ChallengeAuthenticator,\n 'challenge-poll': ChallengePoll,\n 'authenticator-verification-data': AuthenticatorVerificationData,\n 'reenroll-authenticator-warning': ReEnrollAuthenticatorWarning,\n};\n","import { OktaAuthIdxInterface, FlowIdentifier, FlowSpecification } from '../types';\nimport { AuthenticationFlow } from './AuthenticationFlow';\nimport { PasswordRecoveryFlow } from './PasswordRecoveryFlow';\nimport { RegistrationFlow } from './RegistrationFlow';\nimport { AccountUnlockFlow } from './AccountUnlockFlow';\n\n// eslint-disable-next-line complexity\nexport function getFlowSpecification(\n oktaAuth: OktaAuthIdxInterface,\n flow: FlowIdentifier = 'default'\n): FlowSpecification {\n let remediators, actions, withCredentials = true;\n switch (flow) {\n case 'register':\n case 'signup':\n case 'enrollProfile':\n remediators = RegistrationFlow;\n withCredentials = false;\n break;\n case 'recoverPassword':\n case 'resetPassword':\n remediators = PasswordRecoveryFlow;\n actions = [\n 'currentAuthenticator-recover', \n 'currentAuthenticatorEnrollment-recover'\n ];\n withCredentials = false;\n break;\n case 'unlockAccount':\n remediators = AccountUnlockFlow;\n withCredentials = false;\n actions = [\n 'unlock-account'\n ];\n break;\n case 'authenticate':\n case 'login':\n case 'signin':\n remediators = AuthenticationFlow;\n break;\n default:\n // default case has no flow monitor\n remediators = AuthenticationFlow;\n break;\n }\n return { flow, remediators, actions, withCredentials };\n}\n","/*!\n * Copyright (c) 2021, 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 { OktaAuthIdxInterface, CancelOptions, IdxTransactionMeta } from './types';\nimport { run } from './run';\nimport { getFlowSpecification } from './flow';\n\nexport async function cancel (authClient: OktaAuthIdxInterface, options?: CancelOptions) {\n const meta = authClient.transactionManager.load() as IdxTransactionMeta;\n const flowSpec = getFlowSpecification(authClient, meta.flow);\n return run(authClient, {\n ...options,\n ...flowSpec,\n actions: ['cancel']\n });\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { \n OktaAuthIdxInterface,\n IdxTransaction,\n ProceedOptions,\n} from './types';\nimport { run } from './run';\nimport { getSavedTransactionMeta } from './transactionMeta';\nimport { AuthSdkError } from '../errors';\n\nexport function canProceed(authClient: OktaAuthIdxInterface, options: ProceedOptions = {}): boolean {\n const meta = getSavedTransactionMeta(authClient, options);\n return !!(meta || options.stateHandle);\n}\n\nexport async function proceed(\n authClient: OktaAuthIdxInterface,\n options: ProceedOptions = {}\n): Promise {\n\n if (!canProceed(authClient, options)) {\n throw new AuthSdkError('Unable to proceed: saved transaction could not be loaded');\n }\n\n let { flow, state } = options;\n if (!flow) {\n const meta = getSavedTransactionMeta(authClient, { state });\n flow = meta?.flow;\n }\n\n return run(authClient, { \n ...options, \n flow\n });\n}\n","/*!\n * Copyright (c) 2021-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { proceed } from './proceed';\n\nimport { \n IdxPollOptions,\n IdxTransaction,\n OktaAuthIdxInterface,\n} from './types';\nimport { getSavedTransactionMeta } from './transactionMeta';\nimport { warn } from '../util';\n\nexport async function poll(authClient: OktaAuthIdxInterface, options: IdxPollOptions = {}): Promise {\n let transaction = await proceed(authClient, {\n startPolling: true\n });\n\n const meta = getSavedTransactionMeta(authClient);\n let availablePollingRemeditaions = meta?.remediations?.find(remediation => remediation.includes('poll'));\n if (!availablePollingRemeditaions?.length) {\n warn('No polling remediations available at the current IDX flow stage');\n }\n\n if (Number.isInteger(options.refresh)) {\n return new Promise(function (resolve, reject) {\n setTimeout(async function () {\n try {\n const refresh = transaction.nextStep?.poll?.refresh;\n if (refresh) {\n resolve(poll(authClient, {\n refresh\n }));\n } else {\n resolve(transaction);\n }\n } catch (err) {\n reject(err);\n }\n }, options.refresh);\n });\n }\n\n return transaction;\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { run } from './run';\nimport { OktaAuthIdxInterface, IdxTransaction, StartOptions } from './types';\n\nexport async function startTransaction(\n authClient: OktaAuthIdxInterface, \n options: StartOptions = {}\n): Promise {\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","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { run } from './run';\nimport { hasSavedInteractionHandle } from './transactionMeta';\nimport { startTransaction } from './startTransaction';\nimport { AuthSdkError } from '../errors';\nimport { \n RegistrationOptions, \n IdxTransaction, \n OktaAuthIdxInterface, \n IdxFeature,\n} from './types';\n\nexport async function register(\n authClient: OktaAuthIdxInterface, options: RegistrationOptions = {}\n): Promise {\n\n // Only check at the beginning of the transaction\n if (!hasSavedInteractionHandle(authClient)) {\n const { enabledFeatures } = await startTransaction(authClient, {\n ...options,\n flow: 'register',\n autoRemediate: false\n });\n if (!options.activationToken && enabledFeatures && !enabledFeatures.includes(IdxFeature.REGISTRATION)) {\n throw new AuthSdkError('Registration is not supported based on your current org configuration.');\n }\n }\n\n return run(authClient, {\n ...options,\n flow: 'register'\n });\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { run } from './run';\nimport { getFlowSpecification } from './flow';\nimport { \n OktaAuthIdxInterface, \n PasswordRecoveryOptions, \n IdxTransaction,\n} from './types';\n\nexport async function recoverPassword(\n authClient: OktaAuthIdxInterface, options: PasswordRecoveryOptions = {}\n): Promise {\n const flowSpec = getFlowSpecification(authClient, 'recoverPassword');\n return run(\n authClient, \n { \n ...options,\n ...flowSpec,\n }\n );\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { run } from './run';\nimport { hasSavedInteractionHandle } from './transactionMeta';\nimport { startTransaction } from './startTransaction';\nimport { AuthSdkError } from '../errors';\nimport { \n OktaAuthIdxInterface, \n AccountUnlockOptions, \n IdxTransaction,\n IdxFeature,\n} from './types';\n\nexport async function unlockAccount(\n authClient: OktaAuthIdxInterface, options: AccountUnlockOptions = {}\n): Promise {\n options.flow = 'unlockAccount';\n\n // Only check at the beginning of the transaction\n if (!hasSavedInteractionHandle(authClient)) {\n const { enabledFeatures } = await startTransaction(authClient, { ...options, autoRemediate: false });\n if (enabledFeatures && !enabledFeatures.includes(IdxFeature.ACCOUNT_UNLOCK)) {\n throw new AuthSdkError(\n 'Self Service Account Unlock is not supported based on your current org configuration.'\n );\n }\n }\n\n return run(authClient, { ...options });\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { OktaAuthOAuthInterface } from '../types';\nimport { OAuthError, AuthApiError, isOAuthError } from '../../errors';\n\nexport function isInteractionRequiredError(error: Error) {\n if (error.name !== 'OAuthError') {\n return false;\n }\n const oauthError = error as OAuthError;\n return (oauthError.errorCode === 'interaction_required');\n}\n\nexport function isAuthorizationCodeError(sdk: OktaAuthOAuthInterface, error: Error) {\n if (error.name !== 'AuthApiError') {\n return false;\n }\n const authApiError = error as AuthApiError;\n // xhr property doesn't seem to match XMLHttpRequest type\n const errorResponse = authApiError.xhr as unknown as Record;\n const responseJSON = errorResponse?.responseJSON as Record;\n return sdk.options.pkce && (responseJSON?.error as string === 'invalid_grant');\n}\n\nexport function isRefreshTokenInvalidError(error: unknown): boolean {\n // error: {\"error\":\"invalid_grant\",\"error_description\":\"The refresh token is invalid or expired.\"}\n return isOAuthError(error) &&\n error.errorCode === 'invalid_grant' &&\n error.errorSummary === 'The refresh token is invalid or expired.';\n}\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/* global window */\n/* eslint-disable complexity, max-statements */\nimport { OktaAuthOAuthOptions, OktaAuthOAuthInterface, OAuthResponseType } from '../types';\n\nexport function hasTokensInHash(hash: string): boolean {\n return /((id|access)_token=)/i.test(hash);\n}\n\n// authorization_code\nexport function hasAuthorizationCode(hashOrSearch: string): boolean {\n return /(code=)/i.test(hashOrSearch);\n}\n\n// interaction_code\nexport function hasInteractionCode(hashOrSearch: string): boolean {\n return /(interaction_code=)/i.test(hashOrSearch);\n}\n\nexport function hasErrorInUrl(hashOrSearch: string): boolean {\n return /(error=)/i.test(hashOrSearch) || /(error_description)/i.test(hashOrSearch);\n}\n\nexport function isRedirectUri(uri: string, sdk: OktaAuthOAuthInterface): boolean {\n var authParams = sdk.options;\n if (!uri || !authParams.redirectUri) {\n return false;\n }\n return uri.indexOf(authParams.redirectUri) === 0;\n}\n\nexport function isCodeFlow(options: OktaAuthOAuthOptions) {\n return options.pkce || options.responseType === 'code' || options.responseMode === 'query';\n}\n\nexport function hasResponseType(responseType: OAuthResponseType, options: OktaAuthOAuthOptions): boolean {\n let hasResponseType = false;\n if (Array.isArray(options.responseType) && options.responseType.length) {\n hasResponseType = options.responseType.indexOf(responseType) >= 0;\n } else {\n hasResponseType = options.responseType === responseType;\n }\n return hasResponseType;\n}\n\nexport function getHashOrSearch(options: OktaAuthOAuthOptions) {\n var codeFlow = isCodeFlow(options);\n var useQuery = codeFlow && options.responseMode !== 'fragment';\n return useQuery ? window.location.search : window.location.hash;\n}\n\n/**\n * Check if tokens or a code have been passed back into the url, which happens in\n * the OIDC (including social auth IDP) redirect flow.\n */\nexport function isLoginRedirect (sdk: OktaAuthOAuthInterface) {\n // First check, is this a redirect URI?\n if (!isRedirectUri(window.location.href, sdk)){\n return false;\n }\n\n // The location contains either a code, token, or an error + error_description\n var codeFlow = isCodeFlow(sdk.options);\n var hashOrSearch = getHashOrSearch(sdk.options);\n\n if (hasErrorInUrl(hashOrSearch)) {\n return true;\n }\n\n if (codeFlow) {\n var hasCode = hasAuthorizationCode(hashOrSearch) || hasInteractionCode(hashOrSearch);\n return hasCode;\n }\n\n // implicit flow, will always be hash fragment\n return hasTokensInHash(window.location.hash);\n}\n\n/**\n * Check if error=interaction_required has been passed back in the url, which happens in\n * the social auth IDP redirect flow.\n */\nexport function isInteractionRequired (sdk: OktaAuthOAuthInterface, hashOrSearch?: string) {\n if (!hashOrSearch) { // web only\n // First check, is this a redirect URI?\n if (!isLoginRedirect(sdk)){\n return false;\n }\n \n hashOrSearch = getHashOrSearch(sdk.options);\n }\n return /(error=interaction_required)/i.test(hashOrSearch);\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/* eslint-disable complexity, max-statements */\n\nexport function urlParamsToObject(hashOrSearch: string) {\n // Predefine regexs for parsing hash\n var plus2space = /\\+/g;\n var paramSplit = /([^&=]+)=?([^&]*)/g;\n var fragment = hashOrSearch || '';\n\n // Some hash based routers will automatically add a / character after the hash\n if (fragment.charAt(0) === '#' && fragment.charAt(1) === '/') {\n fragment = fragment.substring(2);\n }\n\n // Remove the leading # or ?\n if (fragment.charAt(0) === '#' || fragment.charAt(0) === '?') {\n fragment = fragment.substring(1);\n }\n\n\n var obj = {};\n\n // Loop until we have no more params\n var param;\n while (true) { // eslint-disable-line no-constant-condition\n param = paramSplit.exec(fragment);\n if (!param) { break; }\n\n var key = param[1];\n var value = param[2];\n\n // id_token should remain base64url encoded\n if (key === 'id_token' || key === 'access_token' || key === 'code') {\n obj[key] = value;\n } else {\n obj[key] = decodeURIComponent(value.replace(plus2space, ' '));\n }\n }\n return obj;\n}\n","\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\nimport { OktaAuthIdxInterface } from './types';\n\nimport CustomError from '../errors/CustomError';\nimport { urlParamsToObject } from '../oidc/util/urlParams';\nimport { EmailVerifyCallbackResponse } from './types/api';\n\nexport class EmailVerifyCallbackError extends CustomError {\n state: string;\n otp: string;\n\n constructor(state: string, otp: string) {\n super(`Enter the OTP code in the originating client: ${otp}`);\n this.name = 'EmailVerifyCallbackError';\n this.state = state;\n this.otp = otp;\n }\n}\n\nexport function isEmailVerifyCallbackError(error: Error) {\n return (error.name === 'EmailVerifyCallbackError');\n}\n\n// Check if state && otp have been passed back in the url\nexport function isEmailVerifyCallback (urlPath: string): boolean {\n return /(otp=)/i.test(urlPath) && /(state=)/i.test(urlPath);\n}\n\n// Parse state and otp from a urlPath (should be either a search or fragment from the URL)\nexport function parseEmailVerifyCallback(urlPath: string): EmailVerifyCallbackResponse {\n return urlParamsToObject(urlPath) as EmailVerifyCallbackResponse;\n}\n\nexport async function handleEmailVerifyCallback(authClient: OktaAuthIdxInterface, search: string) {\n if (isEmailVerifyCallback(search)) {\n const { state, otp } = parseEmailVerifyCallback(search);\n if (authClient.idx.canProceed({ state })) {\n // same browser / device\n return await authClient.idx.proceed({ state, otp });\n } else {\n // different browser or device\n throw new EmailVerifyCallbackError(state, otp);\n }\n }\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { AuthSdkError, OAuthError } from '../errors';\nimport { IdxTransactionMeta } from './types/meta';\nimport { OktaAuthIdxInterface } from './types';\n\nexport async function handleInteractionCodeRedirect(\n authClient: OktaAuthIdxInterface, \n url: string\n): Promise {\n const meta = authClient.transactionManager.load() as IdxTransactionMeta;\n if (!meta) {\n throw new AuthSdkError('No transaction data was found in storage');\n }\n\n const { \n codeVerifier,\n state: savedState \n } = meta;\n const { \n searchParams\n // URL API has been added to the polyfill\n // eslint-disable-next-line compat/compat\n } = new URL(url); \n const state = searchParams.get('state');\n const interactionCode = searchParams.get('interaction_code');\n\n // Error handling\n const error = searchParams.get('error');\n if (error) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n throw new OAuthError(error, searchParams.get('error_description')!);\n }\n if (state !== savedState) {\n throw new AuthSdkError('State in redirect uri does not match with transaction state');\n }\n if (!interactionCode) {\n throw new AuthSdkError('Unable to parse interaction_code from the url');\n }\n \n // Save tokens to storage\n const { tokens } = await authClient.token.exchangeCodeForTokens({ interactionCode, codeVerifier });\n authClient.tokenManager.setTokens(tokens);\n}","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\nimport { isInteractionRequired, isInteractionRequiredError } from '../../oidc';\nimport { authenticate } from '../authenticate';\nimport { cancel } from '../cancel';\nimport {\n handleEmailVerifyCallback,\n isEmailVerifyCallback,\n isEmailVerifyCallbackError,\n parseEmailVerifyCallback\n} from '../emailVerify';\nimport { handleInteractionCodeRedirect } from '../handleInteractionCodeRedirect';\nimport { makeIdxState } from '../idxState';\nimport { interact } from '../interact';\nimport { introspect } from '../introspect';\nimport { poll } from '../poll';\nimport { canProceed, proceed } from '../proceed';\nimport { recoverPassword } from '../recoverPassword';\nimport { register } from '../register';\nimport { startTransaction } from '../startTransaction';\nimport {\n clearTransactionMeta,\n createTransactionMeta,\n getSavedTransactionMeta,\n getTransactionMeta,\n isTransactionMetaValid,\n saveTransactionMeta\n} from '../transactionMeta';\nimport { FlowIdentifier, IdxAPI, OktaAuthIdxInterface } from '../types';\nimport { unlockAccount } from '../unlockAccount';\nimport * as remediators from '../remediators';\nimport { getFlowSpecification } from '../flow/FlowSpecification';\nimport { setRemediatorsCtx } from '../util';\n\n// Factory\nexport function createIdxAPI(sdk: OktaAuthIdxInterface): IdxAPI {\n setRemediatorsCtx({\n remediators,\n getFlowSpecification,\n });\n const boundStartTransaction = startTransaction.bind(null, sdk);\n const idx = {\n interact: interact.bind(null, sdk),\n introspect: introspect.bind(null, sdk),\n makeIdxResponse: makeIdxState.bind(null, sdk),\n \n authenticate: authenticate.bind(null, sdk),\n register: register.bind(null, sdk),\n start: boundStartTransaction,\n startTransaction: boundStartTransaction, // Use `start` instead. `startTransaction` will be removed in 7.0\n poll: poll.bind(null, sdk),\n proceed: proceed.bind(null, sdk),\n cancel: cancel.bind(null, sdk),\n recoverPassword: recoverPassword.bind(null, sdk),\n\n // oauth redirect callback\n handleInteractionCodeRedirect: handleInteractionCodeRedirect.bind(null, sdk),\n\n // interaction required callback\n isInteractionRequired: isInteractionRequired.bind(null, sdk),\n isInteractionRequiredError,\n\n // email verify callback\n handleEmailVerifyCallback: handleEmailVerifyCallback.bind(null, sdk),\n isEmailVerifyCallback,\n parseEmailVerifyCallback,\n isEmailVerifyCallbackError,\n \n getSavedTransactionMeta: getSavedTransactionMeta.bind(null, sdk),\n createTransactionMeta: createTransactionMeta.bind(null, sdk),\n getTransactionMeta: getTransactionMeta.bind(null, sdk),\n saveTransactionMeta: saveTransactionMeta.bind(null, sdk),\n clearTransactionMeta: clearTransactionMeta.bind(null, sdk),\n isTransactionMetaValid,\n setFlow: (flow: FlowIdentifier) => {\n sdk.options.flow = flow;\n },\n getFlow: (): FlowIdentifier | undefined => {\n return sdk.options.flow;\n },\n canProceed: canProceed.bind(null, sdk),\n unlockAccount: unlockAccount.bind(null, sdk),\n };\n return idx;\n}\n\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/* global atob, btoa, crypto */\nconst a = function(str) { return atob(str); };\nconst b = function (str) { return btoa(str); };\nconst c = typeof crypto === 'undefined' ? null : crypto;\n\nexport { a as atob, b as btoa, c as webcrypto };\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/* eslint-disable node/no-unsupported-features/node-builtins */\n/* global document, window, TextEncoder, navigator */\n\nimport { webcrypto } from './crypto';\n\nconst isWindowsPhone = /windows phone|iemobile|wpdesktop/i;\t\n\nexport function isBrowser() {\n return typeof document !== 'undefined' && typeof window !== 'undefined';\n}\n\nexport function isIE11OrLess() {\n if (!isBrowser()) {\n return false;\n }\n const documentMode = (document as any).documentMode;\n return !!documentMode && documentMode <= 11;\n}\n\nexport function getUserAgent() {\n return navigator.userAgent;\n}\n\nexport function isFingerprintSupported() {\n const agent = getUserAgent();\n return agent && !isWindowsPhone.test(agent);\t\n}\n\nexport function isPopupPostMessageSupported() {\n if (!isBrowser()) {\n return false;\n }\n const documentMode = (document as any).documentMode;\n var isIE8or9 = documentMode && documentMode < 10;\n if (typeof window.postMessage !== 'undefined' && !isIE8or9) {\n return true;\n }\n return false;\n}\n\nexport function isTokenVerifySupported() {\n return typeof webcrypto !== 'undefined'\n && webcrypto !== null\n && typeof webcrypto.subtle !== 'undefined'\n && typeof Uint8Array !== 'undefined';\n}\n\nexport function hasTextEncoder() {\n return typeof TextEncoder !== 'undefined';\n}\n\nexport function isPKCESupported() {\n return isTokenVerifySupported() && hasTextEncoder();\n}\n\nexport function isHTTPS() {\n if (!isBrowser()) {\n return false;\n }\n return window.location.protocol === 'https:';\n}\n\nexport function isLocalhost() {\n // eslint-disable-next-line compat/compat\n return isBrowser() && window.location.hostname === 'localhost';\n}\n\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/* global SDK_VERSION */\n\nimport { isBrowser } from '../features';\nexport class OktaUserAgent {\n environments: string[];\n\n constructor() {\n // add base sdk env\n this.environments = [`okta-auth-js/${SDK_VERSION}`];\n this.maybeAddNodeEnvironment();\n }\n\n addEnvironment(env: string) {\n this.environments.push(env);\n }\n\n getHttpHeader() {\n return { 'X-Okta-User-Agent-Extended': this.environments.join(' ') };\n }\n\n getVersion() {\n return SDK_VERSION;\n }\n\n maybeAddNodeEnvironment() {\n if (isBrowser() || !process || !process.versions) {\n return;\n }\n const { node: version } = process.versions;\n this.environments.push(`nodejs/${version}`);\n }\n}\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 */\nimport { OktaAuthHttpInterface } from './types';\n\nexport function setRequestHeader(authClient: OktaAuthHttpInterface, headerName, headerValue) {\n authClient.options.headers = authClient.options.headers || {};\n authClient.options.headers[headerName] = headerValue;\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\nimport { AuthSdkError } from '../errors';\nimport { atob, btoa } from './webcrypto';\n\n// converts a string to base64 (url/filename safe variant)\nexport function stringToBase64Url(str) {\n var b64 = btoa(str);\n return base64ToBase64Url(b64);\n}\n\n// converts a standard base64-encoded string to a \"url/filename safe\" variant\nexport function base64ToBase64Url(b64) {\n return b64.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n}\n\n// converts a \"url/filename safe\" base64 string to a \"standard\" base64 string\nexport function base64UrlToBase64(b64u) {\n return b64u.replace(/-/g, '+').replace(/_/g, '/');\n}\n\nexport function base64UrlToString(b64u) {\n var b64 = base64UrlToBase64(b64u);\n switch (b64.length % 4) {\n case 0:\n break;\n case 2:\n b64 += '==';\n break;\n case 3:\n b64 += '=';\n break;\n default:\n throw new AuthSdkError('Not a valid Base64Url');\n }\n var utf8 = atob(b64);\n try {\n return decodeURIComponent(escape(utf8));\n } catch (e) {\n return utf8;\n }\n}\n\nexport function stringToBuffer(str) {\n var buffer = new Uint8Array(str.length);\n for (var i = 0; i < str.length; i++) {\n buffer[i] = str.charCodeAt(i);\n }\n return buffer;\n}\n\nexport function base64UrlDecode(str) {\n return atob(base64UrlToBase64(str));\n}\n\n// Converts base64 string to binary data view\nexport function base64UrlToBuffer(b64u) {\n return Uint8Array.from(base64UrlDecode(b64u), (c: string) => c.charCodeAt(0));\n}\n\n// Converts an ArrayBuffer object that contains binary data to base64 encoded string\nexport function bufferToBase64Url(bin) {\n return btoa(new Uint8Array(bin).reduce((s, byte) => s + String.fromCharCode(byte), ''));\n}\n\n\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/* global TextEncoder */\nimport { stringToBase64Url } from './base64';\nimport { webcrypto } from './webcrypto';\n\nexport function getOidcHash(str) { \n var buffer = new TextEncoder().encode(str);\n return webcrypto.subtle.digest('SHA-256', buffer).then(function(arrayBuffer) {\n var intBuffer = new Uint8Array(arrayBuffer);\n var firstHalf = intBuffer.slice(0, 16);\n var hash = String.fromCharCode.apply(null, firstHalf as unknown as number[]);\n var b64u = stringToBase64Url(hash); // url-safe base64 variant\n return b64u;\n });\n}\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\nimport { clone } from '../util';\nimport { stringToBuffer, base64UrlDecode } from './base64';\nimport { webcrypto } from './webcrypto';\n\nexport function verifyToken(idToken, key) {\n key = clone(key);\n\n var format = 'jwk';\n var algo = {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n };\n var extractable = true;\n var usages = ['verify'];\n\n // https://connect.microsoft.com/IE/feedback/details/2242108/webcryptoapi-importing-jwk-with-use-field-fails\n // This is a metadata tag that specifies the intent of how the key should be used.\n // It's not necessary to properly verify the jwt's signature.\n delete key.use;\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return webcrypto.subtle.importKey(\n format,\n key,\n algo,\n extractable,\n usages\n )\n .then(function(cryptoKey) {\n var jwt = idToken.split('.');\n var payload = stringToBuffer(jwt[0] + '.' + jwt[1]);\n var b64Signature = base64UrlDecode(jwt[2]);\n var signature = stringToBuffer(b64Signature);\n\n return webcrypto.subtle.verify(\n algo,\n cryptoKey,\n signature,\n payload\n );\n });\n}\n\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// Implements a queue for synchronous or asynchronous methods\n// Methods will be wrapped in a promise and execute sequentially\n// This can be used to prevent concurrent calls to a single method or a set of methods\n\nimport { isPromise } from './types';\nimport { warn } from './console';\n\ninterface QueueItem {\n method: () => void;\n thisObject: object;\n args: any[];\n resolve: (value?: unknown) => void;\n reject: (reason?: unknown) => void;\n}\n\ninterface PromiseQueueOptions {\n quiet?: boolean; // if false, concurrrency warnings will not be logged\n}\nexport class PromiseQueue {\n queue: QueueItem[];\n running: boolean;\n options: PromiseQueueOptions;\n\n constructor(options: PromiseQueueOptions = { quiet: false }) {\n this.queue = [];\n this.running = false;\n this.options = options;\n }\n\n // Returns a promise\n // If the method is synchronous, it will resolve when the method completes\n // If the method returns a promise, it will resolve (or reject) with the value from the method's promise\n push(method: (...args: any) => any, thisObject: any, ...args: any[]) {\n return new Promise((resolve, reject) => {\n if (this.queue.length > 0) {\n // There is at least one other pending call.\n // The PromiseQueue will prevent these methods from running concurrently.\n if (this.options.quiet !== false) {\n warn(\n 'Async method is being called but another async method is already running. ' +\n 'The new method will be delayed until the previous method completes.'\n );\n }\n }\n this.queue.push({\n method,\n thisObject,\n args,\n resolve,\n reject\n });\n this.run();\n });\n }\n\n run() {\n if (this.running) {\n return;\n }\n if (this.queue.length === 0) {\n return;\n }\n this.running = true;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n var queueItem = this.queue.shift()!;\n var res = queueItem.method.apply(queueItem.thisObject, queueItem.args as never) as unknown;\n if (isPromise(res)) {\n (res as Promise).then(queueItem.resolve, queueItem.reject).finally(() => {\n this.running = false;\n this.run();\n });\n } else {\n queueItem.resolve(res);\n this.running = false;\n this.run();\n }\n }\n}\n","/*!\n * Copyright (c) 2019-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\n /* eslint-disable complexity, max-statements */\nimport { stringToBase64Url, webcrypto } from '../../crypto';\nimport { MIN_VERIFIER_LENGTH, MAX_VERIFIER_LENGTH, DEFAULT_CODE_CHALLENGE_METHOD } from '../../constants';\n\nfunction dec2hex (dec) {\n return ('0' + dec.toString(16)).substr(-2);\n}\n\nfunction getRandomString(length) {\n var a = new Uint8Array(Math.ceil(length / 2));\n webcrypto.getRandomValues(a);\n var str = Array.from(a, dec2hex).join('');\n return str.slice(0, length);\n}\n\nfunction generateVerifier(prefix?: string): string {\n var verifier = prefix || '';\n if (verifier.length < MIN_VERIFIER_LENGTH) {\n verifier = verifier + getRandomString(MIN_VERIFIER_LENGTH - verifier.length);\n }\n return encodeURIComponent(verifier).slice(0, MAX_VERIFIER_LENGTH);\n}\n\nfunction computeChallenge(str: string): PromiseLike { \n var buffer = new TextEncoder().encode(str);\n return webcrypto.subtle.digest('SHA-256', buffer).then(function(arrayBuffer) {\n var hash = String.fromCharCode.apply(null, new Uint8Array(arrayBuffer) as unknown as number[]);\n var b64u = stringToBase64Url(hash); // url-safe base64 variant\n return b64u;\n });\n}\n\nexport default {\n DEFAULT_CODE_CHALLENGE_METHOD,\n generateVerifier,\n computeChallenge\n};\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 */\nimport { AuthSdkError } from '../errors';\nimport { JWTObject } from './types';\nimport { base64UrlToString } from '../crypto';\n\nexport function decodeToken(token: string): JWTObject {\n var jwt = token.split('.');\n var decodedToken: JWTObject;\n\n try {\n decodedToken = {\n header: JSON.parse(base64UrlToString(jwt[0])),\n payload: JSON.parse(base64UrlToString(jwt[1])),\n signature: jwt[2]\n };\n } catch (e) {\n throw new AuthSdkError('Malformed token');\n }\n\n return decodedToken;\n}\n","\n/* global window */\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 */\nimport { generateNonce, generateState } from './oauth';\nimport { OktaAuthOAuthInterface, TokenParams } from '../types';\nimport { isBrowser } from '../../features';\nimport { removeNils } from '../../util';\n\nexport function getDefaultTokenParams(sdk: OktaAuthOAuthInterface): TokenParams {\n const {\n pkce,\n clientId,\n redirectUri,\n responseType,\n responseMode,\n scopes,\n acrValues,\n maxAge,\n state,\n ignoreSignature\n } = sdk.options;\n const defaultRedirectUri = isBrowser() ? window.location.href : undefined;\n return removeNils({\n pkce,\n clientId,\n redirectUri: redirectUri || defaultRedirectUri,\n responseType: responseType || ['token', 'id_token'],\n responseMode,\n state: state || generateState(),\n nonce: generateNonce(),\n scopes: scopes || ['openid', 'email'],\n acrValues,\n maxAge,\n ignoreSignature\n });\n}","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { AuthSdkError } from '../../errors';\nimport { CustomUrls, OAuthParams, OAuthResponse, RefreshToken, TokenParams } from '../types';\nimport { removeNils, toQueryString } from '../../util';\nimport { httpRequest, OktaAuthHttpInterface } from '../../http';\n\nfunction validateOptions(options: TokenParams) {\n // Quick validation\n if (!options.clientId) {\n throw new AuthSdkError('A clientId must be specified in the OktaAuth constructor to get a token');\n }\n\n if (!options.redirectUri) {\n throw new AuthSdkError('The redirectUri passed to /authorize must also be passed to /token');\n }\n\n if (!options.authorizationCode && !options.interactionCode) {\n throw new AuthSdkError('An authorization code (returned from /authorize) must be passed to /token');\n }\n\n if (!options.codeVerifier) {\n throw new AuthSdkError('The \"codeVerifier\" (generated and saved by your app) must be passed to /token');\n }\n}\n\nfunction getPostData(sdk, options: TokenParams): string {\n // Convert Token params to OAuth params, sent to the /token endpoint\n var params: OAuthParams = removeNils({\n 'client_id': options.clientId,\n 'redirect_uri': options.redirectUri,\n 'grant_type': options.interactionCode ? 'interaction_code' : 'authorization_code',\n 'code_verifier': options.codeVerifier\n });\n\n if (options.interactionCode) {\n params['interaction_code'] = options.interactionCode;\n } else if (options.authorizationCode) {\n params.code = options.authorizationCode;\n }\n\n const { clientSecret } = sdk.options;\n if (clientSecret) {\n params['client_secret'] = clientSecret;\n }\n\n // Encode as URL string\n return toQueryString(params).slice(1);\n}\n\n// exchange authorization code for an access token\nexport function postToTokenEndpoint(sdk, options: TokenParams, urls: CustomUrls): Promise {\n validateOptions(options);\n var data = getPostData(sdk, options);\n\n const headers = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n };\n\n return httpRequest(sdk, {\n url: urls.tokenUrl,\n method: 'POST',\n args: data,\n headers\n });\n}\n\nexport function postRefreshToken(\n sdk: OktaAuthHttpInterface,\n options: TokenParams,\n refreshToken: RefreshToken\n): Promise {\n return httpRequest(sdk, {\n url: refreshToken.tokenUrl,\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n\n args: Object.entries({\n client_id: options.clientId, // eslint-disable-line camelcase\n grant_type: 'refresh_token', // eslint-disable-line camelcase\n scope: refreshToken.scopes.join(' '),\n refresh_token: refreshToken.refreshToken, // eslint-disable-line camelcase\n }).map(function ([name, value]) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return name + '=' + encodeURIComponent(value!);\n }).join('&'),\n });\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 */\nimport { get } from '../../http';\nimport { find } from '../../util';\nimport { OktaAuthOAuthInterface, WellKnownResponse } from '../types';\nimport AuthSdkError from '../../errors/AuthSdkError';\n\nexport function getWellKnown(sdk: OktaAuthOAuthInterface, issuer?: string): Promise {\n var authServerUri = (issuer || sdk.options.issuer);\n return get(sdk, authServerUri + '/.well-known/openid-configuration', {\n cacheResponse: true\n });\n}\n\nexport function getKey(sdk: OktaAuthOAuthInterface, issuer: string, kid: string): Promise {\n var httpCache = sdk.storageManager.getHttpCache(sdk.options.cookies);\n\n return getWellKnown(sdk, issuer)\n .then(function(wellKnown) {\n var jwksUri = wellKnown['jwks_uri'];\n\n // Check our kid against the cached version (if it exists and isn't expired)\n var cacheContents = httpCache.getStorage();\n var cachedResponse = cacheContents[jwksUri];\n if (cachedResponse && Date.now()/1000 < cachedResponse.expiresAt) {\n var cachedKey = find(cachedResponse.response.keys, {\n kid: kid\n });\n\n if (cachedKey) {\n return cachedKey;\n }\n }\n\n // Remove cache for the key\n httpCache.clearStorage(jwksUri);\n\n // Pull the latest keys if the key wasn't in the cache\n return get(sdk, jwksUri, {\n cacheResponse: true\n })\n .then(function(res) {\n var key = find(res.keys, {\n kid: kid\n });\n\n if (key) {\n return key;\n }\n\n throw new AuthSdkError('The key id, ' + kid + ', was not found in the server\\'s keys');\n });\n });\n}\n","/* eslint-disable max-len */\n/* eslint-disable complexity */\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 */\nimport { getWellKnown, getKey } from './endpoints/well-known';\nimport { validateClaims } from './util';\nimport { AuthSdkError } from '../errors';\nimport { IDToken, OktaAuthOAuthInterface, TokenVerifyParams } from '../oidc/types';\nimport { decodeToken } from './decodeToken';\nimport * as sdkCrypto from '../crypto';\n\n// Verify the id token\nexport async function verifyToken(sdk: OktaAuthOAuthInterface, token: IDToken, validationParams: TokenVerifyParams): Promise {\n if (!token || !token.idToken) {\n throw new AuthSdkError('Only idTokens may be verified');\n }\n\n // Decode the Jwt object (may throw)\n const jwt = decodeToken(token.idToken);\n\n // The configured issuer may point to a frontend proxy.\n // Get the \"real\" issuer from .well-known/openid-configuration\n const configuredIssuer = validationParams?.issuer || sdk.options.issuer;\n const { issuer } = await getWellKnown(sdk, configuredIssuer);\n\n const validationOptions: TokenVerifyParams = Object.assign({\n // base options, can be overridden by params\n clientId: sdk.options.clientId,\n ignoreSignature: sdk.options.ignoreSignature\n }, validationParams, {\n // final options, cannot be overridden\n issuer\n });\n\n // Standard claim validation (may throw)\n validateClaims(sdk, jwt.payload, validationOptions);\n\n // If the browser doesn't support native crypto or we choose not\n // to verify the signature, bail early\n if (validationOptions.ignoreSignature == true || !sdk.features.isTokenVerifySupported()) {\n return token;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const key = await getKey(sdk, token.issuer, jwt.header.kid!);\n const valid = await sdkCrypto.verifyToken(token.idToken, key);\n if (!valid) {\n throw new AuthSdkError('The token signature is not valid');\n }\n if (validationParams && validationParams.accessToken && token.claims.at_hash) {\n const hash = await sdkCrypto.getOidcHash(validationParams.accessToken);\n if (hash !== token.claims.at_hash) {\n throw new AuthSdkError('Token hash verification failed');\n }\n }\n return token;\n}\n","/* 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/* eslint-disable complexity, max-statements */\n\nimport AuthSdkError from '../../errors/AuthSdkError';\nimport { OktaAuthOAuthInterface, TokenVerifyParams, UserClaims } from '../../oidc/types';\n\nexport function validateClaims(sdk: OktaAuthOAuthInterface, claims: UserClaims, validationParams: TokenVerifyParams) {\n const aud = validationParams.clientId;\n const iss = validationParams.issuer;\n const nonce = validationParams.nonce;\n const acr = validationParams.acrValues;\n\n if (!claims || !iss || !aud) {\n throw new AuthSdkError('The jwt, iss, and aud arguments are all required');\n }\n\n if (nonce && claims.nonce !== nonce) {\n throw new AuthSdkError('OAuth flow response nonce doesn\\'t match request nonce');\n }\n\n const now = Math.floor(Date.now()/1000);\n\n if (claims.iss !== iss) {\n throw new AuthSdkError('The issuer [' + claims.iss + '] ' +\n 'does not match [' + iss + ']');\n }\n\n if ((Array.isArray(claims.aud) && claims.aud.indexOf(aud) < 0) ||\n (!Array.isArray(claims.aud) && claims.aud !== aud))\n {\n throw new AuthSdkError('The audience [' + claims.aud + '] ' +\n 'does not match [' + aud + ']');\n }\n\n if (acr && claims.acr !== acr) {\n throw new AuthSdkError('The acr [' + claims.acr + '] ' +\n 'does not match acr_values [' + acr + ']');\n }\n\n if (claims.iat! > claims.exp!) {\n throw new AuthSdkError('The JWT expired before it was issued');\n }\n\n if (!sdk.options.ignoreLifetime) {\n if ((now - sdk.options.maxClockSkew!) > claims.exp!) {\n throw new AuthSdkError('The JWT expired and is no longer valid');\n }\n\n if (claims.iat! > (now + sdk.options.maxClockSkew!)) {\n throw new AuthSdkError('The JWT was issued in the future');\n }\n }\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n\n/* eslint-disable complexity, max-statements */\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 */\nimport { clone } from '../util';\nimport {\n getOAuthUrls,\n} from './util/oauth';\nimport { AuthSdkError, OAuthError } from '../errors';\nimport {\n OktaAuthOAuthInterface,\n TokenVerifyParams,\n IDToken,\n OAuthResponse,\n TokenParams,\n TokenResponse,\n CustomUrls,\n Tokens,\n} from './types';\nimport { verifyToken } from './verifyToken';\nimport { getDefaultTokenParams } from './util';\n\nfunction validateResponse(res: OAuthResponse, oauthParams: TokenParams) {\n if (res['error'] && res['error_description']) {\n throw new OAuthError(res['error'], res['error_description']);\n }\n\n if (res.state !== oauthParams.state) {\n throw new AuthSdkError('OAuth flow response state doesn\\'t match request state');\n }\n}\n\nexport async function handleOAuthResponse(\n sdk: OktaAuthOAuthInterface,\n tokenParams: TokenParams,\n res: OAuthResponse,\n urls?: CustomUrls\n): Promise {\n const pkce = sdk.options.pkce !== false;\n\n // The result contains an authorization_code and PKCE is enabled \n // `exchangeCodeForTokens` will call /token then call `handleOauthResponse` recursively with the result\n if (pkce && (res.code || res.interaction_code)) {\n return sdk.token.exchangeCodeForTokens(Object.assign({}, tokenParams, {\n authorizationCode: res.code,\n interactionCode: res.interaction_code\n }), urls);\n }\n\n tokenParams = tokenParams || getDefaultTokenParams(sdk);\n urls = urls || getOAuthUrls(sdk, tokenParams);\n\n let responseType = tokenParams.responseType || [];\n if (!Array.isArray(responseType) && responseType !== 'none') {\n responseType = [responseType];\n }\n\n let scopes;\n if (res.scope) {\n scopes = res.scope.split(' ');\n } else {\n scopes = clone(tokenParams.scopes);\n }\n const clientId = tokenParams.clientId || sdk.options.clientId;\n\n // Handling the result from implicit flow or PKCE token exchange\n validateResponse(res, tokenParams);\n\n const tokenDict = {} as Tokens;\n const expiresIn = res.expires_in;\n const tokenType = res.token_type;\n const accessToken = res.access_token;\n const idToken = res.id_token;\n const refreshToken = res.refresh_token;\n const now = Math.floor(Date.now()/1000);\n\n if (accessToken) {\n const accessJwt = sdk.token.decode(accessToken);\n tokenDict.accessToken = {\n accessToken: accessToken,\n claims: accessJwt.payload,\n expiresAt: Number(expiresIn) + now,\n tokenType: tokenType!,\n scopes: scopes,\n authorizeUrl: urls.authorizeUrl!,\n userinfoUrl: urls.userinfoUrl!\n };\n }\n\n if (refreshToken) {\n tokenDict.refreshToken = {\n refreshToken: refreshToken,\n // should not be used, this is the accessToken expire time\n // TODO: remove \"expiresAt\" in the next major version OKTA-407224\n expiresAt: Number(expiresIn) + now, \n scopes: scopes,\n tokenUrl: urls.tokenUrl!,\n authorizeUrl: urls.authorizeUrl!,\n issuer: urls.issuer!,\n };\n }\n\n if (idToken) {\n const idJwt = sdk.token.decode(idToken);\n const idTokenObj: IDToken = {\n idToken: idToken,\n claims: idJwt.payload,\n expiresAt: idJwt.payload.exp! - idJwt.payload.iat! + now, // adjusting expiresAt to be in local time\n scopes: scopes,\n authorizeUrl: urls.authorizeUrl!,\n issuer: urls.issuer!,\n clientId: clientId!\n };\n\n const validationParams: TokenVerifyParams = {\n clientId: clientId!,\n issuer: urls.issuer!,\n nonce: tokenParams.nonce,\n accessToken: accessToken,\n acrValues: tokenParams.acrValues\n };\n\n if (tokenParams.ignoreSignature !== undefined) {\n validationParams.ignoreSignature = tokenParams.ignoreSignature;\n }\n\n await verifyToken(sdk, idTokenObj, validationParams);\n tokenDict.idToken = idTokenObj;\n }\n\n // Validate received tokens against requested response types \n if (responseType.indexOf('token') !== -1 && !tokenDict.accessToken) {\n // eslint-disable-next-line max-len\n throw new AuthSdkError('Unable to parse OAuth flow response: response type \"token\" was requested but \"access_token\" was not returned.');\n }\n if (responseType.indexOf('id_token') !== -1 && !tokenDict.idToken) {\n // eslint-disable-next-line max-len\n throw new AuthSdkError('Unable to parse OAuth flow response: response type \"id_token\" was requested but \"id_token\" was not returned.');\n }\n\n return {\n tokens: tokenDict,\n state: res.state!,\n code: res.code,\n responseType\n };\n \n}","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/* eslint-disable max-len */\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 */\nimport { CustomUrls, OAuthResponse, OAuthResponseType, OktaAuthOAuthInterface, TokenParams, TokenResponse } from './types';\nimport { getOAuthUrls, getDefaultTokenParams } from './util';\nimport { clone } from '../util';\nimport { postToTokenEndpoint } from './endpoints/token';\nimport { handleOAuthResponse } from './handleOAuthResponse';\n\n// codeVerifier is required. May pass either an authorizationCode or interactionCode\nexport function exchangeCodeForTokens(sdk: OktaAuthOAuthInterface, tokenParams: TokenParams, urls?: CustomUrls): Promise {\n urls = urls || getOAuthUrls(sdk, tokenParams);\n // build params using defaults + options\n tokenParams = Object.assign({}, getDefaultTokenParams(sdk), clone(tokenParams));\n\n const {\n authorizationCode,\n interactionCode,\n codeVerifier,\n clientId,\n redirectUri,\n scopes,\n ignoreSignature,\n state,\n acrValues\n } = tokenParams;\n\n var getTokenOptions = {\n clientId,\n redirectUri,\n authorizationCode,\n interactionCode,\n codeVerifier,\n };\n\n return postToTokenEndpoint(sdk, getTokenOptions, urls)\n .then((response: OAuthResponse) => {\n\n // `handleOAuthResponse` hanadles responses from both `/authorize` and `/token` endpoints\n // Here we modify the response from `/token` so that it more closely matches a response from `/authorize`\n // `responseType` is used to validate that the expected tokens were returned\n const responseType: OAuthResponseType[] = ['token']; // an accessToken will always be returned\n if (scopes!.indexOf('openid') !== -1) {\n responseType.push('id_token'); // an idToken will be returned if \"openid\" is in the scopes\n }\n const handleResponseOptions: TokenParams = {\n clientId,\n redirectUri,\n scopes,\n responseType,\n ignoreSignature,\n acrValues\n };\n return handleOAuthResponse(sdk, handleResponseOptions, response, urls!)\n .then((response: TokenResponse) => {\n // For compatibility, \"code\" is returned in the TokenResponse. OKTA-326091\n response.code = authorizationCode;\n response.state = state!;\n return response;\n });\n })\n .finally(() => {\n sdk.transactionManager.clear();\n });\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/* global window, document */\n/* eslint-disable complexity, max-statements */\nimport { AuthSdkError } from '../../errors';\nimport { OktaAuthOAuthInterface } from '../types';\n\nexport function addListener(eventTarget, name, fn) {\n if (eventTarget.addEventListener) {\n eventTarget.addEventListener(name, fn);\n } else {\n eventTarget.attachEvent('on' + name, fn);\n }\n}\n\nexport function removeListener(eventTarget, name, fn) {\n if (eventTarget.removeEventListener) {\n eventTarget.removeEventListener(name, fn);\n } else {\n eventTarget.detachEvent('on' + name, fn);\n }\n}\n\nexport function loadFrame(src) {\n var iframe = document.createElement('iframe');\n iframe.style.display = 'none';\n iframe.src = src;\n\n return document.body.appendChild(iframe);\n}\n\nexport function loadPopup(src, options) {\n var title = options.popupTitle || 'External Identity Provider User Authentication';\n var appearance = 'toolbar=no, scrollbars=yes, resizable=yes, ' +\n 'top=100, left=500, width=600, height=600';\n return window.open(src, title, appearance);\n}\n\nexport function addPostMessageListener(sdk: OktaAuthOAuthInterface, timeout, state) {\n var responseHandler;\n var timeoutId;\n var msgReceivedOrTimeout = new Promise(function (resolve, reject) {\n\n responseHandler = function responseHandler(e) {\n if (!e.data || e.data.state !== state) {\n // A message not meant for us\n return;\n }\n\n // Configuration mismatch between saved token and current app instance\n // This may happen if apps with different issuers are running on the same host url\n // If they share the same storage key, they may read and write tokens in the same location.\n // Common when developing against http://localhost\n if (e.origin !== sdk.getIssuerOrigin()) {\n return reject(new AuthSdkError('The request does not match client configuration'));\n }\n resolve(e.data);\n };\n\n addListener(window, 'message', responseHandler);\n\n timeoutId = setTimeout(function () {\n reject(new AuthSdkError('OAuth flow timed out'));\n }, timeout || 120000);\n });\n\n return msgReceivedOrTimeout\n .finally(function () {\n clearTimeout(timeoutId);\n removeListener(window, 'message', responseHandler);\n });\n}\n","/* eslint-disable complexity */\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 */\nimport { getWellKnown } from '../endpoints/well-known';\nimport { AuthSdkError } from '../../errors';\nimport { OktaAuthOAuthInterface, TokenParams } from '../types';\nimport { getDefaultTokenParams } from './defaultTokenParams';\nimport { DEFAULT_CODE_CHALLENGE_METHOD } from '../../constants';\nimport PKCE from './pkce';\nimport { OktaAuthBaseInterface } from '../../base/types';\n\nexport function assertPKCESupport(sdk: OktaAuthBaseInterface) {\n if (!sdk.features.isPKCESupported()) {\n var errorMessage = 'PKCE requires a modern browser with encryption support running in a secure context.';\n if (!sdk.features.isHTTPS()) {\n // eslint-disable-next-line max-len\n errorMessage += '\\nThe current page is not being served with HTTPS protocol. PKCE requires secure HTTPS protocol.';\n }\n if (!sdk.features.hasTextEncoder()) {\n // eslint-disable-next-line max-len\n errorMessage += '\\n\"TextEncoder\" is not defined. To use PKCE, you may need to include a polyfill/shim for this browser.';\n }\n throw new AuthSdkError(errorMessage);\n }\n}\n\nexport async function validateCodeChallengeMethod(sdk: OktaAuthOAuthInterface, codeChallengeMethod?: string) {\n // set default code challenge method, if none provided\n codeChallengeMethod = codeChallengeMethod || sdk.options.codeChallengeMethod || DEFAULT_CODE_CHALLENGE_METHOD;\n\n // validate against .well-known/openid-configuration\n const wellKnownResponse = await getWellKnown(sdk);\n var methods = wellKnownResponse['code_challenge_methods_supported'] || [];\n if (methods.indexOf(codeChallengeMethod) === -1) {\n throw new AuthSdkError('Invalid code_challenge_method');\n }\n return codeChallengeMethod;\n}\n\nexport async function preparePKCE(\n sdk: OktaAuthOAuthInterface, \n tokenParams: TokenParams\n): Promise {\n let {\n codeVerifier,\n codeChallenge,\n codeChallengeMethod\n } = tokenParams;\n\n // PKCE calculations can be avoided by passing a codeChallenge\n codeChallenge = codeChallenge || sdk.options.codeChallenge;\n if (!codeChallenge) {\n assertPKCESupport(sdk);\n codeVerifier = codeVerifier || PKCE.generateVerifier();\n codeChallenge = await PKCE.computeChallenge(codeVerifier);\n }\n codeChallengeMethod = await validateCodeChallengeMethod(sdk, codeChallengeMethod);\n\n // Clone/copy the params. Set PKCE values\n tokenParams = {\n ...tokenParams,\n responseType: 'code', // responseType is forced\n codeVerifier,\n codeChallenge,\n codeChallengeMethod\n };\n\n return tokenParams;\n}\n\n// Prepares params for a call to /authorize or /token\nexport async function prepareTokenParams(\n sdk: OktaAuthOAuthInterface,\n tokenParams: TokenParams = {}\n): Promise {\n // build params using defaults + options\n const defaults = getDefaultTokenParams(sdk);\n tokenParams = { ...defaults, ...tokenParams };\n\n if (tokenParams.pkce === false) {\n // Implicit flow or authorization_code without PKCE\n return tokenParams;\n }\n\n return preparePKCE(sdk, tokenParams);\n}","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { isString, removeNils, toQueryString } from '../../util';\nimport { AuthSdkError } from '../../errors';\nimport { OAuthParams, TokenParams } from '../types';\n\nexport function convertTokenParamsToOAuthParams(tokenParams: TokenParams) {\n // Quick validation\n if (!tokenParams.clientId) {\n throw new AuthSdkError('A clientId must be specified in the OktaAuth constructor to get a token');\n }\n\n if (isString(tokenParams.responseType) && tokenParams.responseType.indexOf(' ') !== -1) {\n throw new AuthSdkError('Multiple OAuth responseTypes must be defined as an array');\n }\n\n // Convert our params to their actual OAuth equivalents\n var oauthParams: OAuthParams = {\n 'client_id': tokenParams.clientId,\n 'code_challenge': tokenParams.codeChallenge,\n 'code_challenge_method': tokenParams.codeChallengeMethod,\n 'display': tokenParams.display,\n 'idp': tokenParams.idp,\n 'idp_scope': tokenParams.idpScope,\n 'login_hint': tokenParams.loginHint,\n 'max_age': tokenParams.maxAge,\n 'nonce': tokenParams.nonce,\n 'prompt': tokenParams.prompt,\n 'redirect_uri': tokenParams.redirectUri,\n 'response_mode': tokenParams.responseMode,\n 'response_type': tokenParams.responseType,\n 'sessionToken': tokenParams.sessionToken,\n 'state': tokenParams.state,\n 'acr_values': tokenParams.acrValues,\n 'enroll_amr_values': tokenParams.enrollAmrValues,\n };\n oauthParams = removeNils(oauthParams) as OAuthParams;\n\n ['idp_scope', 'response_type', 'enroll_amr_values'].forEach(function (mayBeArray) {\n if (Array.isArray(oauthParams[mayBeArray])) {\n oauthParams[mayBeArray] = oauthParams[mayBeArray].join(' ');\n }\n });\n\n if (tokenParams.responseType!.indexOf('id_token') !== -1 &&\n tokenParams.scopes!.indexOf('openid') === -1) {\n throw new AuthSdkError('openid scope must be specified in the scopes argument when requesting an id_token');\n } else if (tokenParams.scopes) {\n oauthParams.scope = tokenParams.scopes!.join(' ');\n }\n\n return oauthParams;\n}\n\nexport function buildAuthorizeParams(tokenParams: TokenParams) {\n var oauthQueryParams = convertTokenParamsToOAuthParams(tokenParams);\n return toQueryString({ \n ...oauthQueryParams, \n ...(tokenParams.extraParams && { ...tokenParams.extraParams })\n });\n}\n","\n/* global document */\n/* eslint-disable complexity, max-statements */\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 */\nimport {\n getOAuthUrls,\n loadFrame,\n addPostMessageListener\n} from './util';\n\nimport AuthSdkError from '../errors/AuthSdkError';\n\nimport {\n OktaAuthOAuthInterface,\n TokenParams,\n PopupParams,\n OAuthResponse,\n} from './types';\n\nimport { prepareTokenParams } from './util/prepareTokenParams';\nimport { buildAuthorizeParams } from './endpoints/authorize';\nimport { handleOAuthResponse } from './handleOAuthResponse';\n/*\n * Retrieve an idToken from an Okta or a third party idp\n *\n * Two main flows:\n *\n * 1) Exchange a sessionToken for a token\n *\n * Required:\n * clientId: passed via the OktaAuth constructor or into getToken\n * sessionToken: 'yourtoken'\n *\n * Optional:\n * redirectUri: defaults to window.location.href\n * scopes: defaults to ['openid', 'email']\n *\n * Forced:\n * prompt: 'none'\n * responseMode: 'okta_post_message'\n * display: undefined\n *\n * 2) Get a token from an idp\n *\n * Required:\n * clientId: passed via the OktaAuth constructor or into getToken\n *\n * Optional:\n * redirectUri: defaults to window.location.href\n * scopes: defaults to ['openid', 'email']\n * idp: defaults to Okta as an idp\n * prompt: no default. Pass 'none' to throw an error if user is not signed in\n *\n * Forced:\n * display: 'popup'\n *\n * Only common optional params shown. Any OAuth parameters not explicitly forced are available to override\n *\n * @param {Object} oauthOptions\n * @param {String} [oauthOptions.clientId] ID of this client\n * @param {String} [oauthOptions.redirectUri] URI that the iframe or popup will go to once authenticated\n * @param {String[]} [oauthOptions.scopes] OAuth 2.0 scopes to request (openid must be specified)\n * @param {String} [oauthOptions.idp] ID of an external IdP to use for user authentication\n * @param {String} [oauthOptions.sessionToken] Bootstrap Session Token returned by the Okta Authentication API\n * @param {String} [oauthOptions.prompt] Determines whether the Okta login will be displayed on failure.\n * Use 'none' to prevent this behavior\n *\n * @param {Object} options\n * @param {Integer} [options.timeout] Time in ms before the flow is automatically terminated. Defaults to 120000\n * @param {String} [options.popupTitle] Title dispayed in the popup.\n * Defaults to 'External Identity Provider User Authentication'\n */\nexport function getToken(sdk: OktaAuthOAuthInterface, options: TokenParams & PopupParams) {\n if (arguments.length > 2) {\n return Promise.reject(new AuthSdkError('As of version 3.0, \"getToken\" takes only a single set of options'));\n }\n\n options = options || {};\n\n // window object cannot be serialized, save for later use\n // TODO: move popup related params into a separate options object\n const popupWindow = options.popupWindow;\n options.popupWindow = undefined;\n\n return prepareTokenParams(sdk, options)\n .then(function (tokenParams: TokenParams) {\n\n // Start overriding any options that don't make sense\n var sessionTokenOverrides = {\n prompt: 'none',\n responseMode: 'okta_post_message',\n display: null\n };\n\n var idpOverrides = {\n display: 'popup'\n };\n\n if (options.sessionToken) {\n Object.assign(tokenParams, sessionTokenOverrides);\n } else if (options.idp) {\n Object.assign(tokenParams, idpOverrides);\n }\n\n // Use the query params to build the authorize url\n var requestUrl,\n endpoint,\n urls;\n\n // Get authorizeUrl and issuer\n urls = getOAuthUrls(sdk, tokenParams);\n endpoint = options.codeVerifier ? urls.tokenUrl : urls.authorizeUrl;\n requestUrl = endpoint + buildAuthorizeParams(tokenParams);\n\n // Determine the flow type\n var flowType;\n if (tokenParams.sessionToken || tokenParams.display === null) {\n flowType = 'IFRAME';\n } else if (tokenParams.display === 'popup') {\n flowType = 'POPUP';\n } else {\n flowType = 'IMPLICIT';\n }\n\n // Execute the flow type\n switch (flowType) {\n case 'IFRAME':\n var iframePromise = addPostMessageListener(sdk, options.timeout, tokenParams.state);\n var iframeEl = loadFrame(requestUrl);\n return iframePromise\n .then(function (res) {\n return handleOAuthResponse(sdk, tokenParams, res as OAuthResponse, urls);\n })\n .finally(function () {\n if (document.body.contains(iframeEl)) {\n iframeEl.parentElement?.removeChild(iframeEl);\n }\n });\n\n case 'POPUP':\n var oauthPromise; // resolves with OAuth response\n\n // Add listener on postMessage before window creation, so\n // postMessage isn't triggered before we're listening\n if (tokenParams.responseMode === 'okta_post_message') {\n if (!sdk.features.isPopupPostMessageSupported()) {\n throw new AuthSdkError('This browser doesn\\'t have full postMessage support');\n }\n oauthPromise = addPostMessageListener(sdk, options.timeout, tokenParams.state);\n }\n\n // Redirect for authorization\n // popupWindown can be null when popup is blocked\n if (popupWindow) { \n popupWindow.location.assign(requestUrl);\n }\n\n // The popup may be closed without receiving an OAuth response. Setup a poller to monitor the window.\n var popupPromise = new Promise(function (resolve, reject) {\n var closePoller = setInterval(function () {\n if (!popupWindow || popupWindow.closed) {\n clearInterval(closePoller);\n reject(new AuthSdkError('Unable to parse OAuth flow response'));\n }\n }, 100);\n\n // Proxy the OAuth promise results\n oauthPromise\n .then(function (res) {\n clearInterval(closePoller);\n resolve(res);\n })\n .catch(function (err) {\n clearInterval(closePoller);\n reject(err);\n });\n });\n\n return popupPromise\n .then(function (res) {\n return handleOAuthResponse(sdk, tokenParams, res as OAuthResponse, urls);\n })\n .finally(function () {\n if (popupWindow && !popupWindow.closed) {\n popupWindow.close();\n }\n });\n\n default:\n throw new AuthSdkError('The full page redirect flow is not supported');\n }\n });\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 */\nimport { AuthSdkError } from '../errors';\nimport { OktaAuthOAuthInterface, TokenParams, TokenResponse } from './types';\nimport { clone } from '../util';\nimport { getToken } from './getToken';\n\nexport function getWithoutPrompt(sdk: OktaAuthOAuthInterface, options: TokenParams): Promise {\n if (arguments.length > 2) {\n return Promise.reject(new AuthSdkError('As of version 3.0, \"getWithoutPrompt\" takes only a single set of options'));\n }\n \n options = clone(options) || {};\n Object.assign(options, {\n prompt: 'none',\n responseMode: 'okta_post_message',\n display: null\n });\n return getToken(sdk, options);\n}\n\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 */\nimport { AuthSdkError } from '../errors';\nimport { OktaAuthOAuthInterface, TokenParams, TokenResponse } from './types';\nimport { clone } from '../util';\nimport { getToken } from './getToken';\nimport { loadPopup } from './util';\n\nexport function getWithPopup(sdk: OktaAuthOAuthInterface, options: TokenParams): Promise {\n if (arguments.length > 2) {\n return Promise.reject(new AuthSdkError('As of version 3.0, \"getWithPopup\" takes only a single set of options'));\n }\n\n // some browsers (safari, firefox) block popup if it's initialed from an async process\n // here we create the popup window immediately after user interaction\n // then redirect to the /authorize endpoint when the requestUrl is available\n const popupWindow = loadPopup('/', options);\n options = clone(options) || {};\n Object.assign(options, {\n display: 'popup',\n responseMode: 'okta_post_message',\n popupWindow\n });\n return getToken(sdk, options);\n}\n","/* 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 */\nimport { AuthSdkError } from '../errors';\nimport { OktaAuthOAuthInterface, TokenParams } from './types';\nimport { clone } from '../util';\nimport { prepareTokenParams, createOAuthMeta } from './util';\nimport { buildAuthorizeParams } from './endpoints/authorize';\n\nexport async function getWithRedirect(sdk: OktaAuthOAuthInterface, options?: TokenParams): Promise {\n if (arguments.length > 2) {\n return Promise.reject(new AuthSdkError('As of version 3.0, \"getWithRedirect\" takes only a single set of options'));\n }\n\n options = clone(options) || {};\n\n const tokenParams = await prepareTokenParams(sdk, options);\n const meta = createOAuthMeta(sdk, tokenParams);\n const requestUrl = meta.urls.authorizeUrl + buildAuthorizeParams(tokenParams);\n sdk.transactionManager.save(meta);\n if (sdk.options.setLocation) {\n sdk.options.setLocation(requestUrl);\n } else {\n window.location.assign(requestUrl);\n }\n}\n","/* eslint-disable complexity */\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 */\nimport { AuthSdkError } from '../errors';\nimport { isInteractionRequiredError, urlParamsToObject } from './util';\nimport {\n ParseFromUrlOptions,\n TokenResponse,\n CustomUrls,\n TransactionMeta,\n OAuthResponse\n} from './types';\nimport { isString } from '../util';\nimport { handleOAuthResponse } from './handleOAuthResponse';\n\nfunction removeHash(sdk) {\n var nativeHistory = sdk.token.parseFromUrl._getHistory();\n var nativeDoc = sdk.token.parseFromUrl._getDocument();\n var nativeLoc = sdk.token.parseFromUrl._getLocation();\n if (nativeHistory && nativeHistory.replaceState) {\n nativeHistory.replaceState(null, nativeDoc.title, nativeLoc.pathname + nativeLoc.search);\n } else {\n nativeLoc.hash = '';\n }\n}\n\nfunction removeSearch(sdk) {\n var nativeHistory = sdk.token.parseFromUrl._getHistory();\n var nativeDoc = sdk.token.parseFromUrl._getDocument();\n var nativeLoc = sdk.token.parseFromUrl._getLocation();\n if (nativeHistory && nativeHistory.replaceState) {\n nativeHistory.replaceState(null, nativeDoc.title, nativeLoc.pathname + nativeLoc.hash);\n } else {\n nativeLoc.search = '';\n }\n}\n\nexport function getResponseMode(sdk): 'query' | 'fragment' {\n // https://openid.net/specs/openid-connect-core-1_0.html#Authentication\n var defaultResponseMode = sdk.options.pkce ? 'query' : 'fragment';\n var responseMode = sdk.options.responseMode || defaultResponseMode;\n return responseMode;\n}\n\nexport function parseOAuthResponseFromUrl(sdk, options: string | ParseFromUrlOptions): OAuthResponse {\n options = options || {};\n if (isString(options)) {\n options = { url: options } as ParseFromUrlOptions;\n } else {\n options = options as ParseFromUrlOptions;\n }\n\n var url = options.url;\n var responseMode = options.responseMode || getResponseMode(sdk);\n var nativeLoc = sdk.token.parseFromUrl._getLocation();\n var paramStr;\n\n if (responseMode === 'query') {\n paramStr = url ? url.substring(url.indexOf('?')) : nativeLoc.search;\n } else {\n paramStr = url ? url.substring(url.indexOf('#')) : nativeLoc.hash;\n }\n\n if (!paramStr) {\n throw new AuthSdkError('Unable to parse a token from the url');\n }\n\n return urlParamsToObject(paramStr);\n}\n\nexport function cleanOAuthResponseFromUrl(sdk, options: ParseFromUrlOptions) {\n // Clean hash or search from the url\n const responseMode = options.responseMode || getResponseMode(sdk);\n responseMode === 'query' ? removeSearch(sdk) : removeHash(sdk);\n}\n\nexport async function parseFromUrl(sdk, options?: string | ParseFromUrlOptions): Promise {\n options = options || {};\n if (isString(options)) {\n options = { url: options } as ParseFromUrlOptions;\n } else {\n options = options as ParseFromUrlOptions;\n }\n\n const res: OAuthResponse = parseOAuthResponseFromUrl(sdk, options);\n const state = res.state;\n const oauthParams: TransactionMeta = sdk.transactionManager.load({\n state\n });\n if (!oauthParams) {\n if (sdk.options.pkce) {\n // eslint-disable-next-line max-len\n throw new AuthSdkError('Could not load PKCE codeVerifier from storage. This may indicate the auth flow has already completed or multiple auth flows are executing concurrently.', undefined);\n }\n throw new AuthSdkError('Unable to retrieve OAuth redirect params from storage');\n }\n const urls: CustomUrls = oauthParams.urls as CustomUrls;\n delete oauthParams.urls;\n\n if (!options.url) {\n // Clean hash or search from the url\n cleanOAuthResponseFromUrl(sdk, options);\n }\n\n return handleOAuthResponse(sdk, oauthParams, res, urls)\n .catch(err => {\n if (!isInteractionRequiredError(err)) {\n sdk.transactionManager.clear({\n state\n });\n }\n throw err;\n })\n .then(res => {\n sdk.transactionManager.clear({\n state\n });\n return res;\n });\n\n}\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 */\nimport { AuthSdkError } from '../errors';\nimport { getOAuthUrls } from './util/oauth';\nimport { isSameRefreshToken } from './util/refreshToken';\nimport { OktaAuthOAuthInterface, TokenParams, RefreshToken, Tokens } from './types';\nimport { handleOAuthResponse } from './handleOAuthResponse';\nimport { postRefreshToken } from './endpoints/token';\nimport { isRefreshTokenInvalidError } from './util/errors';\n\nexport async function renewTokensWithRefresh(\n sdk: OktaAuthOAuthInterface,\n tokenParams: TokenParams,\n refreshTokenObject: RefreshToken\n): Promise {\n const { clientId } = sdk.options;\n if (!clientId) {\n throw new AuthSdkError('A clientId must be specified in the OktaAuth constructor to renew tokens');\n }\n\n try {\n const renewTokenParams: TokenParams = Object.assign({}, tokenParams, {\n clientId,\n });\n const tokenResponse = await postRefreshToken(sdk, renewTokenParams, refreshTokenObject);\n const urls = getOAuthUrls(sdk, tokenParams);\n const { tokens } = await handleOAuthResponse(sdk, renewTokenParams, tokenResponse, urls);\n\n // Support rotating refresh tokens\n const { refreshToken } = tokens;\n if (refreshToken && !isSameRefreshToken(refreshToken, refreshTokenObject)) {\n sdk.tokenManager.updateRefreshToken(refreshToken);\n }\n\n return tokens;\n }\n catch (err) {\n if (isRefreshTokenInvalidError(err)) {\n // if the refresh token is invalid, remove it from storage\n sdk.tokenManager.removeRefreshToken();\n }\n throw err;\n }\n}\n","import { RefreshToken } from '../types';\nimport { isAuthApiError } from '../../errors';\n\nexport function isSameRefreshToken(a: RefreshToken, b: RefreshToken) {\n return (a.refreshToken === b.refreshToken);\n}\n\nexport function isRefreshTokenError(err: Error) {\n if (!isAuthApiError(err)) {\n return false;\n }\n\n if (!err.xhr || !err.xhr.responseJSON) {\n return false;\n }\n\n const { responseJSON } = err.xhr;\n if (responseJSON.error === 'invalid_grant') {\n return true;\n }\n\n return false;\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 */\nimport { AuthSdkError } from '../errors';\nimport { OktaAuthOAuthInterface, Token, Tokens, isAccessToken, AccessToken, IDToken, isIDToken } from './types';\nimport { getWithoutPrompt } from './getWithoutPrompt';\nimport { renewTokensWithRefresh } from './renewTokensWithRefresh';\n\nfunction throwInvalidTokenError() {\n throw new AuthSdkError(\n 'Renew must be passed a token with an array of scopes and an accessToken or idToken'\n );\n}\n\n// Multiple tokens may have come back. Return only the token which was requested.\nfunction getSingleToken(originalToken: Token, tokens: Tokens) {\n if (isIDToken(originalToken)) {\n return tokens.idToken;\n }\n if (isAccessToken(originalToken)) {\n return tokens.accessToken;\n }\n throwInvalidTokenError();\n}\n\n// If we have a refresh token, renew using that, otherwise getWithoutPrompt\nexport async function renewToken(sdk: OktaAuthOAuthInterface, token: Token): Promise {\n if (!isIDToken(token) && !isAccessToken(token)) {\n throwInvalidTokenError();\n }\n\n let tokens = sdk.tokenManager.getTokensSync();\n if (tokens.refreshToken) {\n tokens = await renewTokensWithRefresh(sdk, {\n scopes: token.scopes,\n }, tokens.refreshToken);\n return getSingleToken(token, tokens);\n }\n\n var responseType;\n if (sdk.options.pkce) {\n responseType = 'code';\n } else if (isAccessToken(token)) {\n responseType = 'token';\n } else {\n responseType = 'id_token';\n }\n\n const { scopes, authorizeUrl, userinfoUrl, issuer } = token as (AccessToken & IDToken);\n return getWithoutPrompt(sdk, {\n responseType,\n scopes,\n authorizeUrl,\n userinfoUrl,\n issuer\n })\n .then(function (res) {\n return getSingleToken(token, res.tokens);\n });\n}\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 */\nimport { AuthSdkError } from '../errors';\nimport { RenewTokensParams, Tokens } from './types';\nimport { getWithoutPrompt } from './getWithoutPrompt';\nimport { renewTokensWithRefresh } from './renewTokensWithRefresh';\nimport { getDefaultTokenParams } from './util';\n\n// If we have a refresh token, renew using that, otherwise getWithoutPrompt\n// eslint-disable-next-line complexity\nexport async function renewTokens(sdk, options?: RenewTokensParams): Promise {\n const tokens = options?.tokens ?? sdk.tokenManager.getTokensSync();\n if (tokens.refreshToken) {\n return renewTokensWithRefresh(sdk, options || {}, tokens.refreshToken);\n }\n\n if (!tokens.accessToken && !tokens.idToken) {\n throw new AuthSdkError('renewTokens() was called but there is no existing token');\n }\n\n const accessToken = tokens.accessToken || {};\n const idToken = tokens.idToken || {};\n const scopes = accessToken.scopes || idToken.scopes;\n if (!scopes) {\n throw new AuthSdkError('renewTokens: invalid tokens: could not read scopes');\n }\n const authorizeUrl = accessToken.authorizeUrl || idToken.authorizeUrl;\n if (!authorizeUrl) {\n throw new AuthSdkError('renewTokens: invalid tokens: could not read authorizeUrl');\n }\n const userinfoUrl = accessToken.userinfoUrl || sdk.options.userinfoUrl;\n const issuer = idToken.issuer || sdk.options.issuer;\n\n // Get tokens using the SSO cookie\n options = Object.assign({\n scopes,\n authorizeUrl,\n userinfoUrl,\n issuer\n }, options);\n\n if (sdk.options.pkce) {\n options.responseType = 'code';\n } else {\n const { responseType } = getDefaultTokenParams(sdk);\n options.responseType = responseType;\n }\n\n return getWithoutPrompt(sdk, options)\n .then(res => res.tokens);\n \n}\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 complexity:[0,8] */\nimport { post } from '../http';\nimport { toQueryString } from '../util';\nimport {\n getOAuthUrls,\n} from './util/oauth';\nimport { btoa } from '../crypto';\nimport AuthSdkError from '../errors/AuthSdkError';\nimport {\n OktaAuthOAuthInterface,\n RevocableToken,\n AccessToken,\n RefreshToken\n} from './types';\n\n// refresh tokens have precedence to be revoked if no token is specified\nexport async function revokeToken(sdk: OktaAuthOAuthInterface, token: RevocableToken): Promise {\n let accessToken = '';\n let refreshToken = '';\n if (token) { \n accessToken = (token as AccessToken).accessToken;\n refreshToken = (token as RefreshToken).refreshToken; \n }\n if(!accessToken && !refreshToken) { \n throw new AuthSdkError('A valid access or refresh token object is required');\n }\n var clientId = sdk.options.clientId;\n var clientSecret = sdk.options.clientSecret;\n if (!clientId) {\n throw new AuthSdkError('A clientId must be specified in the OktaAuth constructor to revoke a token');\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n var revokeUrl = getOAuthUrls(sdk).revokeUrl!;\n var args = toQueryString({\n // eslint-disable-next-line camelcase\n token_type_hint: refreshToken ? 'refresh_token' : 'access_token', \n token: refreshToken || accessToken,\n }).slice(1);\n var creds = clientSecret ? btoa(`${clientId}:${clientSecret}`) : btoa(clientId);\n return post(sdk, revokeUrl, args, {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'Authorization': 'Basic ' + creds\n }\n });\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\nimport { AuthSdkError } from '../errors';\nimport { getWellKnown } from './endpoints/well-known';\nimport { post } from '../http';\nimport { toQueryString } from '../util';\nimport { btoa } from '../crypto';\nimport { Token, TokenKind } from './types';\n\nconst hintMap = {\n accessToken: 'access_token',\n idToken: 'id_token',\n refreshToken: 'refresh_token'\n};\n\n/* eslint complexity: [2, 9] */\nexport async function oidcIntrospect (sdk, kind: TokenKind, token?: Token) {\n let issuer: string;\n let clientId: string = sdk.options.clientId;\n let clientSecret: string | undefined = sdk.options.clientSecret;\n\n if (!token) {\n token = sdk.tokenManager.getTokens()[kind];\n }\n\n if (!token) {\n throw new AuthSdkError(`unable to find ${kind} in storage or fn params`);\n }\n\n if (kind !== TokenKind.ACCESS) {\n issuer = (token as any)?.issuer;\n }\n else {\n issuer = (token as any)?.claims?.iss;\n }\n issuer = issuer || sdk.options.issuer;\n\n if (!clientId) {\n throw new AuthSdkError('A clientId must be specified in the OktaAuth constructor to introspect a token');\n }\n if (!issuer) {\n throw new AuthSdkError('Unable to find issuer');\n }\n\n const { introspection_endpoint: introspectUrl } = await getWellKnown(sdk, issuer);\n const authHeader = clientSecret ? btoa(`${clientId}:${clientSecret}`) : btoa(clientId);\n const args = toQueryString({\n // eslint-disable-next-line camelcase\n token_type_hint: hintMap[kind],\n token: token[kind] // extract raw token string from token object\n }).slice(1);\n return post(sdk, introspectUrl, args, {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'Authorization': 'Basic ' + authHeader\n }\n });\n}\n","/* eslint-disable complexity */\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 */\nimport { AuthSdkError } from '../../errors';\nimport { OktaAuthOAuthInterface, EnrollAuthenticatorOptions } from '../types';\nimport { getDefaultEnrollAuthenticatorParams } from './defaultEnrollAuthenticatorParams';\n\nfunction prepareParams(\n params: EnrollAuthenticatorOptions\n): EnrollAuthenticatorOptions {\n params = {\n ...params,\n // forced params:\n responseType: 'none',\n prompt: 'enroll_authenticator',\n maxAge: 0,\n };\n\n if (!params.enrollAmrValues) {\n throw new AuthSdkError('enroll_amr_values must be specified');\n }\n if (!params.acrValues) {\n // `acr_values` is required and should equal 'urn:okta:2fa:any:ifpossible'\n // But this can be changed in future\n throw new AuthSdkError('acr_values must be specified');\n }\n\n // `scope`, `nonce` must be omitted\n delete params.scopes;\n delete params.nonce;\n\n return params;\n}\n\n// Prepares params for a call to /authorize\nexport function prepareEnrollAuthenticatorParams(\n sdk: OktaAuthOAuthInterface,\n options: EnrollAuthenticatorOptions\n): EnrollAuthenticatorOptions {\n return prepareParams({\n ...getDefaultEnrollAuthenticatorParams(sdk),\n ...options\n });\n}\n","\n/* global window */\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 */\nimport { generateState } from './oauth';\nimport { OktaAuthOAuthInterface, TokenParams } from '../types';\nimport { isBrowser } from '../../features';\nimport { removeNils } from '../../util';\n\nexport function getDefaultEnrollAuthenticatorParams(sdk: OktaAuthOAuthInterface): TokenParams {\n const {\n clientId,\n redirectUri,\n responseMode,\n state,\n } = sdk.options;\n const defaultRedirectUri = isBrowser() ? window.location.href : undefined;\n return removeNils({\n clientId,\n redirectUri: redirectUri || defaultRedirectUri,\n responseMode,\n state: state || generateState(),\n responseType: 'none',\n prompt: 'enroll_authenticator',\n });\n}","/* 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 */\nimport { OktaAuthOAuthInterface, EnrollAuthenticatorOptions } from './types';\nimport { clone } from '../util';\nimport { prepareEnrollAuthenticatorParams, createEnrollAuthenticatorMeta } from './util';\nimport { buildAuthorizeParams } from './endpoints/authorize';\n\nexport function enrollAuthenticator(\n sdk: OktaAuthOAuthInterface, \n options: EnrollAuthenticatorOptions\n): void {\n options = clone(options) || {};\n\n const params = prepareEnrollAuthenticatorParams(sdk, options);\n const meta = createEnrollAuthenticatorMeta(sdk, params);\n const requestUrl = meta.urls.authorizeUrl + buildAuthorizeParams(params);\n sdk.transactionManager.save(meta);\n if (sdk.options.setLocation) {\n sdk.options.setLocation(requestUrl);\n } else {\n window.location.assign(requestUrl);\n }\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { OAuthTransactionMeta, OktaAuthOAuthInterface, EnrollAuthenticatorOptions } from '../types';\nimport { getOAuthUrls } from './oauth';\n\nexport function createEnrollAuthenticatorMeta(\n sdk: OktaAuthOAuthInterface, \n params: EnrollAuthenticatorOptions\n): OAuthTransactionMeta {\n const issuer = sdk.options.issuer!;\n const urls = getOAuthUrls(sdk, params);\n const oauthMeta: OAuthTransactionMeta = {\n issuer,\n urls,\n clientId: params.clientId!,\n redirectUri: params.redirectUri!,\n responseType: params.responseType!,\n responseMode: params.responseMode!,\n state: params.state!,\n acrValues: params.acrValues,\n enrollAmrValues: params.enrollAmrValues,\n };\n\n return oauthMeta;\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\nimport { PromiseQueue } from '../../util';\nimport { decodeToken } from '../decodeToken';\nimport { exchangeCodeForTokens } from '../exchangeCodeForTokens';\nimport { getUserInfo } from '../getUserInfo';\nimport { getWithoutPrompt } from '../getWithoutPrompt';\nimport { getWithPopup } from '../getWithPopup';\nimport { getWithRedirect } from '../getWithRedirect';\nimport { parseFromUrl } from '../parseFromUrl';\nimport { renewToken } from '../renewToken';\nimport { renewTokens } from '../renewTokens';\nimport { renewTokensWithRefresh } from '../renewTokensWithRefresh';\nimport { revokeToken } from '../revokeToken';\nimport { oidcIntrospect } from '../introspect';\nimport {\n AccessToken,\n CustomUserClaims,\n GetWithRedirectFunction,\n IDToken,\n OktaAuthOAuthInterface,\n ParseFromUrlInterface,\n TokenAPI,\n UserClaims,\n Endpoints,\n} from '../types';\nimport { isLoginRedirect, prepareTokenParams } from '../util';\nimport { verifyToken } from '../verifyToken';\nimport { enrollAuthenticator } from '../enrollAuthenticator';\n\n// Factory\nexport function createTokenAPI(sdk: OktaAuthOAuthInterface, queue: PromiseQueue): TokenAPI {\n const useQueue = (method) => {\n return PromiseQueue.prototype.push.bind(queue, method, null);\n };\n\n const getWithRedirectFn = useQueue(getWithRedirect.bind(null, sdk)) as GetWithRedirectFunction;\n\n // eslint-disable-next-line max-len\n const parseFromUrlFn = useQueue(parseFromUrl.bind(null, sdk)) as ParseFromUrlInterface;\n const parseFromUrlApi: ParseFromUrlInterface = Object.assign(parseFromUrlFn, {\n // This is exposed so we can mock getting window.history in our tests\n _getHistory: function() {\n return window.history;\n },\n\n // This is exposed so we can mock getting window.location in our tests\n _getLocation: function() {\n return window.location;\n },\n\n // This is exposed so we can mock getting window.document in our tests\n _getDocument: function() {\n return window.document;\n }\n });\n\n const token: TokenAPI ={\n prepareTokenParams: prepareTokenParams.bind(null, sdk),\n exchangeCodeForTokens: exchangeCodeForTokens.bind(null, sdk),\n getWithoutPrompt: getWithoutPrompt.bind(null, sdk),\n getWithPopup: getWithPopup.bind(null, sdk),\n getWithRedirect: getWithRedirectFn,\n parseFromUrl: parseFromUrlApi,\n decode: decodeToken,\n revoke: revokeToken.bind(null, sdk),\n renew: renewToken.bind(null, sdk),\n renewTokensWithRefresh: renewTokensWithRefresh.bind(null, sdk),\n renewTokens: renewTokens.bind(null, sdk),\n getUserInfo: (\n accessTokenObject: AccessToken,\n idTokenObject: IDToken\n ): Promise> => {\n return getUserInfo(sdk, accessTokenObject, idTokenObject);\n },\n verify: verifyToken.bind(null, sdk),\n isLoginRedirect: isLoginRedirect.bind(null, sdk),\n introspect: oidcIntrospect.bind(null, sdk),\n };\n\n // Wrap certain async token API methods using PromiseQueue to avoid issues with concurrency\n // 'getWithRedirect' and 'parseFromUrl' are already wrapped\n const toWrap = [\n 'getWithoutPrompt',\n 'getWithPopup',\n 'revoke',\n 'renew',\n 'renewTokensWithRefresh',\n 'renewTokens'\n ];\n toWrap.forEach(key => {\n token[key] = useQueue(token[key]);\n });\n\n return token;\n}\n\nexport function createEndpoints(sdk: OktaAuthOAuthInterface): Endpoints {\n return {\n authorize: {\n enrollAuthenticator: enrollAuthenticator.bind(null, sdk),\n }\n };\n}\n","/* eslint-disable complexity */\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 */\nimport { isFunction } from '../util';\nimport { AuthSdkError, OAuthError } from '../errors';\nimport { httpRequest } from '../http';\nimport { AccessToken, IDToken, UserClaims, isAccessToken, isIDToken, CustomUserClaims } from './types';\n\nexport async function getUserInfo(\n sdk, accessTokenObject: AccessToken,\n idTokenObject: IDToken\n): Promise> {\n // If token objects were not passed, attempt to read from the TokenManager\n if (!accessTokenObject) {\n accessTokenObject = (await sdk.tokenManager.getTokens()).accessToken as AccessToken;\n }\n if (!idTokenObject) {\n idTokenObject = (await sdk.tokenManager.getTokens()).idToken as IDToken;\n }\n\n if (!accessTokenObject || !isAccessToken(accessTokenObject)) {\n return Promise.reject(new AuthSdkError('getUserInfo requires an access token object'));\n }\n\n if (!idTokenObject || !isIDToken(idTokenObject)) {\n return Promise.reject(new AuthSdkError('getUserInfo requires an ID token object'));\n }\n\n return httpRequest(sdk, {\n url: accessTokenObject.userinfoUrl,\n method: 'GET',\n accessToken: accessTokenObject.accessToken\n })\n .then(userInfo => {\n // Only return the userinfo response if subjects match to mitigate token substitution attacks\n if (userInfo.sub === idTokenObject.claims.sub) {\n return userInfo;\n }\n return Promise.reject(new AuthSdkError('getUserInfo request was rejected due to token mismatch'));\n })\n .catch(function (err) {\n if (err.xhr && (err.xhr.status === 401 || err.xhr.status === 403)) {\n var authenticateHeader;\n if (err.xhr.headers && isFunction(err.xhr.headers.get) && err.xhr.headers.get('WWW-Authenticate')) {\n authenticateHeader = err.xhr.headers.get('WWW-Authenticate');\n } else if (isFunction(err.xhr.getResponseHeader)) {\n authenticateHeader = err.xhr.getResponseHeader('WWW-Authenticate');\n }\n if (authenticateHeader) {\n var errorMatches = authenticateHeader.match(/error=\"(.*?)\"/) || [];\n var errorDescriptionMatches = authenticateHeader.match(/error_description=\"(.*?)\"/) || [];\n var error = errorMatches[1];\n var errorDescription = errorDescriptionMatches[1];\n if (error && errorDescription) {\n err = new OAuthError(error, errorDescription);\n }\n }\n }\n throw err;\n });\n}\n","/* eslint-disable complexity */\n\nimport { AuthSdkError } from '../../errors';\nimport { isAccessToken, isIDToken, isRefreshToken, Token, TokenType } from '../../oidc/types';\n\nexport function validateToken(token: Token, type?: TokenType) {\n if (!isIDToken(token) && !isAccessToken(token) && !isRefreshToken(token)) {\n throw new AuthSdkError(\n 'Token must be an Object with scopes, expiresAt, and one of: an idToken, accessToken, or refreshToken property'\n );\n }\n \n if (type === 'accessToken' && !isAccessToken(token)) {\n throw new AuthSdkError('invalid accessToken');\n } \n if (type === 'idToken' && !isIDToken(token)) {\n throw new AuthSdkError('invalid idToken');\n }\n\n if (type === 'refreshToken' && !isRefreshToken(token)) {\n throw new AuthSdkError('invalid refreshToken');\n }\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\nexport default class SdkClock {\n localOffset: number;\n\n constructor(localOffset) {\n // Calculated local clock offset from server time (in milliseconds). Can be positive or negative.\n this.localOffset = parseInt(localOffset || 0);\n }\n\n // factory method. Create an instance of a clock from current context.\n static create(/* sdk, options */): SdkClock {\n // TODO: calculate localOffset\n var localOffset = 0;\n return new SdkClock(localOffset);\n }\n\n // Return the current time (in seconds)\n now() {\n var now = (Date.now() + this.localOffset) / 1000;\n return now;\n }\n}\n","/* eslint-disable max-len */\nimport { StorageProvider } from '../../storage/types';\nimport { TokenManagerOptions } from './options';\nimport { AccessToken, IDToken, RefreshToken, Token, Tokens, TokenType } from './Token';\n\nexport interface TokenManagerError {\n errorSummary: string;\n errorCode: string;\n message: string;\n name: string;\n tokenKey: string;\n}\n\nexport declare type AccessTokenCallback = (key: string, token: AccessToken) => void;\nexport declare type IDTokenCallback = (key: string, token: IDToken) => void;\nexport declare type RefreshTokenCallback = (key: string, token: RefreshToken) => void;\n\nexport const EVENT_EXPIRED = 'expired';\nexport const EVENT_RENEWED = 'renewed';\nexport const EVENT_ADDED = 'added';\nexport const EVENT_REMOVED = 'removed';\nexport const EVENT_ERROR = 'error';\nexport const EVENT_SET_STORAGE = 'set_storage';\n\nexport declare type TokenManagerErrorEventHandler = (error: TokenManagerError) => void;\nexport declare type TokenManagerEventHandler = (key: string, token: Token) => void;\nexport declare type TokenManagerRenewEventHandler = (key: string, token: Token, oldtoken: Token) => void;\nexport declare type TokenManagerSetStorageEventHandler = (storage: Tokens) => void;\n\nexport declare type TokenManagerAnyEventHandler = TokenManagerErrorEventHandler | TokenManagerRenewEventHandler | TokenManagerSetStorageEventHandler | TokenManagerEventHandler;\nexport declare type TokenManagerAnyEvent = typeof EVENT_RENEWED | typeof EVENT_ERROR | typeof EVENT_SET_STORAGE | typeof EVENT_EXPIRED | typeof EVENT_ADDED | typeof EVENT_REMOVED;\n\n// only add methods needed internally\nexport interface TokenManagerInterface {\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, handler: TokenManagerEventHandler, context?: object): void;\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, handler?: TokenManagerEventHandler): void;\n\n clear(): void;\n setExpireEventTimeout(key: string, token: Token): void;\n clearExpireEventTimeout(key: string): void;\n clearExpireEventTimeoutAll(): void;\n emitAdded(key: string, token: Token): void;\n emitError(error: Error): void;\n emitRemoved(key: string, token: Token): void;\n emitRenewed(key: string, token: Token, oldToken?: Token): void;\n renew(key: string): Promise;\n remove(key: string): void;\n hasExpired(token: Token): boolean;\n getExpireTime(token: Token): number;\n\n get(key): Promise;\n getSync(key): Token | undefined;\n getTokens(): Promise;\n getTokensSync(): Tokens;\n setTokens({ accessToken, idToken, refreshToken }: Tokens, accessTokenCb?: AccessTokenCallback, idTokenCb?: IDTokenCallback, refreshTokenCb?: RefreshTokenCallback): void;\n getStorageKeyByType(type: TokenType): string;\n add(key: any, token: Token): void;\n updateRefreshToken(token: RefreshToken);\n removeRefreshToken(): void;\n clearPendingRemoveTokens(): void;\n\n getOptions(): TokenManagerOptions;\n getStorage(): StorageProvider;\n\n start();\n stop();\n isStarted(): boolean;\n}\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 */\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;\n renewPromise: Promise | null;\n started?: boolean;\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 this.state.started = true;\n }\n \n stop() {\n this.clearExpireEventTimeoutAll();\n this.state.started = false;\n }\n\n isStarted() {\n return !!this.state.started;\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 | undefined {\n var tokenStorage = this.storage.getStorage();\n return tokenStorage[key];\n }\n \n async get(key): Promise {\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 {\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 {\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 (err) {\n this.emitError(err);\n return Promise.reject(err);\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","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\nimport Cookies from 'js-cookie';\nimport AuthSdkError from '../errors/AuthSdkError';\nimport {\n StorageOptions,\n CookieOptions,\n SimpleStorage,\n StorageType,\n StorageUtil,\n} from '../storage/types';\nimport { warn } from '../util';\nimport { isIE11OrLess } from '../features';\n\nexport interface CookieStorage extends SimpleStorage {\n setItem(key: string, value: any, expiresAt?: string | null): void; // can customize expiresAt\n getItem(key?: string): any; // if no key is passed, all cookies are returned\n removeItem(key: string); // remove a cookie\n}\n\nexport interface BrowserStorageUtil extends StorageUtil {\n browserHasLocalStorage(): boolean;\n browserHasSessionStorage(): boolean;\n getStorageByType(storageType: StorageType, options: StorageOptions): SimpleStorage;\n getLocalStorage(): Storage;\n getSessionStorage(): Storage;\n getInMemoryStorage(): SimpleStorage;\n getCookieStorage(options?: StorageOptions): CookieStorage;\n testStorage(storage: any): boolean;\n storage: Cookies;\n inMemoryStore: Record;\n}\n\n// Building this as an object allows us to mock the functions in our tests\nvar storageUtil: BrowserStorageUtil = {\n\n // IE11 bug that Microsoft doesn't plan to fix\n // https://connect.microsoft.com/IE/Feedback/Details/1496040\n browserHasLocalStorage: function() {\n try {\n var storage = this.getLocalStorage();\n return this.testStorage(storage);\n } catch (e) {\n return false;\n }\n },\n\n browserHasSessionStorage: function() {\n try {\n var storage = this.getSessionStorage();\n return this.testStorage(storage);\n } catch (e) {\n return false;\n }\n },\n\n testStorageType: function(storageType: StorageType): boolean {\n var supported = false;\n switch (storageType) {\n case 'sessionStorage':\n supported = this.browserHasSessionStorage();\n break;\n case 'localStorage':\n supported = this.browserHasLocalStorage();\n break;\n case 'cookie':\n case 'memory':\n supported = true;\n break;\n default:\n supported = false;\n break;\n }\n return supported;\n },\n\n getStorageByType: function(storageType: StorageType, options?: StorageOptions): SimpleStorage {\n let storageProvider;\n switch (storageType) {\n case 'sessionStorage':\n storageProvider = this.getSessionStorage();\n break;\n case 'localStorage':\n storageProvider = this.getLocalStorage();\n break;\n case 'cookie':\n storageProvider = this.getCookieStorage(options);\n break;\n case 'memory':\n storageProvider = this.getInMemoryStorage();\n break;\n default:\n throw new AuthSdkError(`Unrecognized storage option: ${storageType}`);\n break;\n }\n return storageProvider;\n },\n\n findStorageType: function(types: StorageType[]) {\n let curType;\n let nextType;\n \n types = types.slice(); // copy array\n curType = types.shift();\n nextType = types.length ? types[0] : null;\n if (!nextType) {\n return curType;\n }\n\n if (this.testStorageType(curType)) {\n return curType;\n }\n\n // preferred type was unsupported.\n warn(`This browser doesn't support ${curType}. Switching to ${nextType}.`);\n\n // fallback to the next type. this is a recursive call\n return this.findStorageType(types);\n },\n\n getLocalStorage: function() {\n // Workaound for synchronization issue of LocalStorage cross tabs in IE11\n if (isIE11OrLess() && !window.onstorage) {\n window.onstorage = function() {};\n }\n \n return localStorage;\n },\n\n getSessionStorage: function() {\n return sessionStorage;\n },\n\n // Provides webStorage-like interface for cookies\n getCookieStorage: function(options): CookieStorage {\n const secure = options!.secure;\n const sameSite = options!.sameSite;\n const sessionCookie = options!.sessionCookie;\n if (typeof secure === 'undefined' || typeof sameSite === 'undefined') {\n throw new AuthSdkError('getCookieStorage: \"secure\" and \"sameSite\" options must be provided');\n }\n const storage: CookieStorage = {\n getItem: this.storage.get,\n setItem: (key, value, expiresAt = '2200-01-01T00:00:00.000Z') => {\n // By defauilt, cookie shouldn't expire\n expiresAt = (sessionCookie ? null : expiresAt) as string;\n this.storage.set(key, value, expiresAt, {\n secure: secure, \n sameSite: sameSite,\n });\n },\n removeItem: (key) => {\n this.storage.delete(key);\n },\n };\n\n if (!options!.useSeparateCookies) {\n return storage;\n }\n\n // Tokens are stored separately because cookies have size limits.\n // Can only be used when storing an object value. Object properties will be saved to separate cookies.\n // Each property of the object must also be an object.\n return {\n getItem: function(key) {\n var data = storage.getItem(); // read all cookies\n var value = {};\n Object.keys(data).forEach(k => {\n if (k.indexOf(key!) === 0) { // filter out unrelated cookies\n value[k.replace(`${key}_`, '')] = JSON.parse(data[k]); // populate with cookie data\n }\n });\n return JSON.stringify(value);\n },\n setItem: function(key, value) {\n var existingValues = JSON.parse(this.getItem(key));\n value = JSON.parse(value);\n // Set key-value pairs from input to cookies\n Object.keys(value).forEach(k => {\n var storageKey = key + '_' + k;\n var valueToStore = JSON.stringify(value[k]);\n storage.setItem(storageKey, valueToStore);\n delete existingValues[k];\n });\n // Delete unmatched keys from existing cookies\n Object.keys(existingValues).forEach(k => {\n storage.removeItem(key + '_' + k);\n });\n },\n removeItem: function(key) {\n var existingValues = JSON.parse(this.getItem(key));\n Object.keys(existingValues).forEach(k => {\n storage.removeItem(key + '_' + k);\n });\n },\n };\n },\n\n // Provides an in-memory solution\n inMemoryStore: {}, // override this for a unique memory store per instance\n getInMemoryStorage: function() {\n return {\n getItem: (key) => {\n return this.inMemoryStore[key];\n },\n setItem: (key, value) => {\n this.inMemoryStore[key] = value;\n },\n };\n },\n\n testStorage: function(storage) {\n var key = 'okta-test-storage';\n try {\n storage.setItem(key, key);\n storage.removeItem(key);\n return true;\n } catch (e) {\n return false;\n }\n },\n\n storage: {\n set: function(name: string, value: string, expiresAt: string, options: CookieOptions): string {\n const { sameSite, secure } = options;\n if (typeof secure === 'undefined' || typeof sameSite === 'undefined') {\n throw new AuthSdkError('storage.set: \"secure\" and \"sameSite\" options must be provided');\n }\n var cookieOptions: CookieOptions = {\n path: options.path || '/',\n secure,\n sameSite\n };\n\n // eslint-disable-next-line no-extra-boolean-cast\n if (!!(Date.parse(expiresAt))) {\n // Expires value can be converted to a Date object.\n //\n // If the 'expiresAt' value is not provided, or the value cannot be\n // parsed as a Date object, the cookie will set as a session cookie.\n cookieOptions.expires = new Date(expiresAt);\n }\n\n Cookies.set(name, value, cookieOptions);\n return this.get(name);\n },\n\n get: function(name?: string): string {\n // return all cookies when no args is provided\n if (!arguments.length) {\n return Cookies.get();\n }\n return Cookies.get(name);\n },\n\n delete: function(name: string): string {\n return Cookies.remove(name, { path: '/' });\n }\n }\n};\n\nexport default storageUtil;\n","import { httpRequest, RequestOptions } from '../../http';\nimport { OktaAuthConstructor } from '../../base/types';\nimport { \n PromiseQueue,\n} from '../../util';\nimport { CryptoAPI } from '../../crypto/types';\nimport * as crypto from '../../crypto';\nimport {\n AccessToken,\n CustomUserClaims,\n IDToken,\n IsAuthenticatedOptions,\n OAuthResponseType,\n OAuthStorageManagerInterface,\n OAuthTransactionMeta,\n OktaAuthOAuthInterface,\n OktaAuthOAuthOptions,\n PkceAPI,\n PKCETransactionMeta,\n RefreshToken,\n SigninWithRedirectOptions,\n SignoutOptions,\n SignoutRedirectUrlOptions,\n TokenAPI,\n TransactionManagerInterface,\n TransactionManagerConstructor,\n UserClaims,\n Endpoints,\n} from '../types';\nimport PKCE from '../util/pkce';\nimport { createEndpoints, createTokenAPI } from '../factory/api';\nimport { TokenManager } from '../TokenManager';\nimport { getOAuthUrls, isLoginRedirect, hasResponseType } from '../util';\n\nimport { OktaAuthSessionInterface } from '../../session/types';\nimport { provideOriginalUri } from './node';\nexport function mixinOAuth\n<\n M extends OAuthTransactionMeta = PKCETransactionMeta,\n S extends OAuthStorageManagerInterface = OAuthStorageManagerInterface,\n O extends OktaAuthOAuthOptions = OktaAuthOAuthOptions,\n TM extends TransactionManagerInterface = TransactionManagerInterface,\n TBase extends OktaAuthConstructor>\n = OktaAuthConstructor>\n>\n(\n Base: TBase,\n TransactionManagerConstructor: TransactionManagerConstructor,\n): TBase & OktaAuthConstructor>\n{\n const WithOriginalUri = provideOriginalUri(Base);\n return class OktaAuthOAuth extends WithOriginalUri\n implements OktaAuthOAuthInterface\n {\n static crypto: CryptoAPI = crypto;\n token: TokenAPI;\n tokenManager: TokenManager;\n transactionManager: TM;\n pkce: PkceAPI;\n endpoints: Endpoints;\n\n _pending: { handleLogin: boolean };\n _tokenQueue: PromiseQueue;\n \n constructor(...args: any[]) {\n super(...args);\n\n this.transactionManager = new TransactionManagerConstructor(Object.assign({\n storageManager: this.storageManager,\n }, this.options.transactionManager));\n \n this.pkce = {\n DEFAULT_CODE_CHALLENGE_METHOD: PKCE.DEFAULT_CODE_CHALLENGE_METHOD,\n generateVerifier: PKCE.generateVerifier,\n computeChallenge: PKCE.computeChallenge\n };\n \n this._pending = { handleLogin: false };\n\n this._tokenQueue = new PromiseQueue();\n\n this.token = createTokenAPI(this, this._tokenQueue);\n\n // TokenManager\n this.tokenManager = new TokenManager(this, this.options.tokenManager);\n\n this.endpoints = createEndpoints(this);\n }\n\n // inherited from subclass\n clearStorage(): void {\n super.clearStorage();\n \n // Clear all local tokens\n this.tokenManager.clear();\n }\n\n // Returns true if both accessToken and idToken are not expired\n // If `autoRenew` option is set, will attempt to renew expired tokens before returning.\n // eslint-disable-next-line complexity\n async isAuthenticated(options: IsAuthenticatedOptions = {}): Promise {\n // TODO: remove dependency on tokenManager options in next major version - OKTA-473815\n const { autoRenew, autoRemove } = this.tokenManager.getOptions();\n\n const shouldRenew = options.onExpiredToken ? options.onExpiredToken === 'renew' : autoRenew;\n const shouldRemove = options.onExpiredToken ? options.onExpiredToken === 'remove' : autoRemove;\n\n let { accessToken } = this.tokenManager.getTokensSync();\n if (accessToken && this.tokenManager.hasExpired(accessToken)) {\n accessToken = undefined;\n if (shouldRenew) {\n try {\n accessToken = await this.tokenManager.renew('accessToken') as AccessToken;\n } catch {\n // Renew errors will emit an \"error\" event \n }\n } else if (shouldRemove) {\n this.tokenManager.remove('accessToken');\n }\n }\n\n let { idToken } = this.tokenManager.getTokensSync();\n if (idToken && this.tokenManager.hasExpired(idToken)) {\n idToken = undefined;\n if (shouldRenew) {\n try {\n idToken = await this.tokenManager.renew('idToken') as IDToken;\n } catch {\n // Renew errors will emit an \"error\" event \n }\n } else if (shouldRemove) {\n this.tokenManager.remove('idToken');\n }\n }\n\n return !!(accessToken && idToken);\n }\n\n\n async signInWithRedirect(opts: SigninWithRedirectOptions = {}) {\n const { originalUri, ...additionalParams } = opts;\n if(this._pending.handleLogin) { \n // Don't trigger second round\n return;\n }\n\n this._pending.handleLogin = true;\n try {\n // Trigger default signIn redirect flow\n if (originalUri) {\n this.setOriginalUri(originalUri);\n }\n const params = Object.assign({\n // TODO: remove this line when default scopes are changed OKTA-343294\n scopes: this.options.scopes || ['openid', 'email', 'profile']\n }, additionalParams);\n await this.token.getWithRedirect(params);\n } finally {\n this._pending.handleLogin = false;\n }\n }\n\n async getUser(): Promise> {\n const { idToken, accessToken } = this.tokenManager.getTokensSync();\n return this.token.getUserInfo(accessToken, idToken);\n }\n \n getIdToken(): string | undefined {\n const { idToken } = this.tokenManager.getTokensSync();\n return idToken ? idToken.idToken : undefined;\n }\n \n getAccessToken(): string | undefined {\n const { accessToken } = this.tokenManager.getTokensSync();\n return accessToken ? accessToken.accessToken : undefined;\n }\n \n getRefreshToken(): string | undefined {\n const { refreshToken } = this.tokenManager.getTokensSync();\n return refreshToken ? refreshToken.refreshToken : undefined;\n }\n \n /**\n * Store parsed tokens from redirect url\n */\n async storeTokensFromRedirect(): Promise {\n const { tokens, responseType } = await this.token.parseFromUrl();\n if (responseType !== 'none') {\n this.tokenManager.setTokens(tokens);\n }\n }\n \n isLoginRedirect(): boolean {\n return isLoginRedirect(this);\n }\n\n isPKCE(): boolean {\n return !!this.options.pkce;\n }\n\n hasResponseType(responseType: OAuthResponseType): boolean {\n return hasResponseType(responseType, this.options);\n }\n \n isAuthorizationCodeFlow(): boolean {\n return this.hasResponseType('code');\n }\n\n // Escape hatch method to make arbitrary OKTA API call\n async invokeApiMethod(options: RequestOptions): Promise {\n if (!options.accessToken) {\n const accessToken = (await this.tokenManager.getTokens()).accessToken as AccessToken;\n options.accessToken = accessToken?.accessToken;\n }\n return httpRequest(this, options);\n }\n \n // Revokes the access token for the application session\n async revokeAccessToken(accessToken?: AccessToken): Promise {\n if (!accessToken) {\n accessToken = (await this.tokenManager.getTokens()).accessToken as AccessToken;\n const accessTokenKey = this.tokenManager.getStorageKeyByType('accessToken');\n this.tokenManager.remove(accessTokenKey);\n }\n // Access token may have been removed. In this case, we will silently succeed.\n if (!accessToken) {\n return Promise.resolve(null);\n }\n return this.token.revoke(accessToken);\n }\n\n // Revokes the refresh token for the application session\n async revokeRefreshToken(refreshToken?: RefreshToken): Promise {\n if (!refreshToken) {\n refreshToken = (await this.tokenManager.getTokens()).refreshToken as RefreshToken;\n const refreshTokenKey = this.tokenManager.getStorageKeyByType('refreshToken');\n this.tokenManager.remove(refreshTokenKey);\n }\n // Refresh token may have been removed. In this case, we will silently succeed.\n if (!refreshToken) {\n return Promise.resolve(null);\n }\n return this.token.revoke(refreshToken);\n }\n\n getSignOutRedirectUrl(options: SignoutRedirectUrlOptions = {}) {\n let {\n idToken,\n postLogoutRedirectUri,\n state,\n } = options;\n if (!idToken) {\n idToken = this.tokenManager.getTokensSync().idToken as IDToken;\n }\n if (!idToken) {\n return '';\n }\n if (postLogoutRedirectUri === undefined) {\n postLogoutRedirectUri = this.options.postLogoutRedirectUri;\n }\n\n const logoutUrl = getOAuthUrls(this).logoutUrl;\n const idTokenHint = idToken.idToken; // a string\n let logoutUri = logoutUrl + '?id_token_hint=' + encodeURIComponent(idTokenHint);\n if (postLogoutRedirectUri) {\n logoutUri += '&post_logout_redirect_uri=' + encodeURIComponent(postLogoutRedirectUri);\n } \n // State allows option parameters to be passed to logout redirect uri\n if (state) {\n logoutUri += '&state=' + encodeURIComponent(state);\n }\n\n return logoutUri;\n }\n\n // Revokes refreshToken or accessToken, clears all local tokens, then redirects to Okta to end the SSO session.\n // eslint-disable-next-line complexity, max-statements\n async signOut(options?: SignoutOptions): Promise {\n options = Object.assign({}, options);\n \n // postLogoutRedirectUri must be whitelisted in Okta Admin UI\n const defaultUri = window.location.origin;\n const currentUri = window.location.href;\n // Fix for issue/1410 - allow for no postLogoutRedirectUri to be passed, resulting in /logout default behavior\n // \"If no Okta session exists, this endpoint has no effect and the browser is redirected immediately to the\n // Okta sign-in page or the post_logout_redirect_uri (if specified).\"\n // - https://developer.okta.com/docs/reference/api/oidc/#logout\n const postLogoutRedirectUri = options.postLogoutRedirectUri === null ? null :\n (options.postLogoutRedirectUri\n || this.options.postLogoutRedirectUri\n || defaultUri);\n const state = options?.state;\n \n \n let accessToken = options.accessToken;\n let refreshToken = options.refreshToken;\n const revokeAccessToken = options.revokeAccessToken !== false;\n const revokeRefreshToken = options.revokeRefreshToken !== false;\n \n if (revokeRefreshToken && typeof refreshToken === 'undefined') {\n refreshToken = this.tokenManager.getTokensSync().refreshToken as RefreshToken;\n }\n\n if (revokeAccessToken && typeof accessToken === 'undefined') {\n accessToken = this.tokenManager.getTokensSync().accessToken as AccessToken;\n }\n \n if (!options.idToken) {\n options.idToken = this.tokenManager.getTokensSync().idToken as IDToken;\n }\n\n if (revokeRefreshToken && refreshToken) {\n await this.revokeRefreshToken(refreshToken);\n }\n\n if (revokeAccessToken && accessToken) {\n await this.revokeAccessToken(accessToken);\n }\n\n const logoutUri = this.getSignOutRedirectUrl({ ...options, postLogoutRedirectUri });\n // No logoutUri? This can happen if the storage was cleared.\n // Fallback to XHR signOut, then simulate a redirect to the post logout uri\n if (!logoutUri) {\n // local tokens are cleared once session is closed\n const sessionClosed = await this.closeSession(); // can throw if the user cannot be signed out\n const redirectUri = new URL(postLogoutRedirectUri || defaultUri); // during fallback, redirectUri cannot be null\n if (state) {\n redirectUri.searchParams.append('state', state);\n }\n if (postLogoutRedirectUri === currentUri) {\n // window.location.reload(); // force a hard reload if URI is not changing\n window.location.href = redirectUri.href;\n } else {\n window.location.assign(redirectUri.href);\n }\n return sessionClosed;\n } else {\n if (options.clearTokensBeforeRedirect) {\n // Clear all local tokens\n this.tokenManager.clear();\n } else {\n this.tokenManager.addPendingRemoveFlags();\n }\n // Flow ends with logout redirect\n window.location.assign(logoutUri);\n return true;\n }\n }\n\n };\n\n}\n","import { REFERRER_PATH_STORAGE_KEY } from '../../constants';\nimport browserStorage from '../../browser/browserStorage';\nimport { OktaAuthStorageInterface } from '../../storage';\nimport { OktaAuthConstructor } from '../../base';\nimport {\n OAuthStorageManagerInterface,\n OAuthTransactionMeta,\n OktaAuthOAuthOptions,\n OriginalUriApi,\n PKCETransactionMeta,\n} from '../types';\n\nexport function provideOriginalUri\n<\n M extends OAuthTransactionMeta = PKCETransactionMeta,\n S extends OAuthStorageManagerInterface = OAuthStorageManagerInterface,\n O extends OktaAuthOAuthOptions = OktaAuthOAuthOptions,\n TBase extends OktaAuthConstructor>\n = OktaAuthConstructor> \n>\n(BaseClass: TBase) {\n return class WithOriginalUri extends BaseClass implements OriginalUriApi {\n setOriginalUri(originalUri: string, state?: string): void {\n // always store in session storage\n const sessionStorage = browserStorage.getSessionStorage();\n sessionStorage.setItem(REFERRER_PATH_STORAGE_KEY, originalUri);\n \n // to support multi-tab flows, set a state in constructor or pass as param\n state = state || this.options.state;\n if (state) {\n const sharedStorage = this.storageManager.getOriginalUriStorage();\n sharedStorage.setItem(state, originalUri);\n }\n }\n \n getOriginalUri(state?: string): string | undefined {\n // Prefer shared storage (if state is available)\n state = state || this.options.state;\n if (state) {\n const sharedStorage = this.storageManager.getOriginalUriStorage();\n const originalUri = sharedStorage.getItem(state);\n if (originalUri) {\n return originalUri;\n }\n }\n \n // Try to load from session storage\n const storage = browserStorage.getSessionStorage();\n return storage ? storage.getItem(REFERRER_PATH_STORAGE_KEY) || undefined : undefined;\n }\n \n removeOriginalUri(state?: string): void {\n // Remove from sessionStorage\n const storage = browserStorage.getSessionStorage();\n storage.removeItem(REFERRER_PATH_STORAGE_KEY);\n \n // Also remove from shared storage\n state = state || this.options.state;\n if (state) {\n const sharedStorage = this.storageManager.getOriginalUriStorage();\n sharedStorage.removeItem && sharedStorage.removeItem(state);\n }\n }\n };\n}\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// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore \n// Do not use this type in code, so it won't be emitted in the declaration output\nimport PCancelable from 'p-cancelable';\nimport { AuthSdkError } from '../errors';\nimport {\n EVENT_ADDED,\n EVENT_REMOVED,\n OAuthStorageManagerInterface,\n OAuthTransactionMeta,\n OktaAuthOAuthInterface\n} from '../oidc';\nimport {\n AuthState,\n AuthStateLogOptions,\n OktaAuthCoreOptions,\n} from './types';\nimport { PromiseQueue, getConsole } from '../util';\n\nexport const INITIAL_AUTH_STATE = null;\nconst DEFAULT_PENDING = {\n updateAuthStatePromise: null,\n canceledTimes: 0\n};\nconst EVENT_AUTH_STATE_CHANGE = 'authStateChange';\nconst MAX_PROMISE_CANCEL_TIMES = 10;\n\n// only compare first level of authState\nconst isSameAuthState = (prevState: AuthState | null, state: AuthState) => {\n // initial state is null\n if (!prevState) {\n return false;\n }\n\n return prevState.isAuthenticated === state.isAuthenticated \n && JSON.stringify(prevState.idToken) === JSON.stringify(state.idToken)\n && JSON.stringify(prevState.accessToken) === JSON.stringify(state.accessToken)\n && prevState.error === state.error;\n};\n\n\nexport class AuthStateManager\n<\n M extends OAuthTransactionMeta,\n S extends OAuthStorageManagerInterface,\n O extends OktaAuthCoreOptions\n>\n{\n _sdk: OktaAuthOAuthInterface;\n _pending: { \n updateAuthStatePromise: any;\n canceledTimes: number; \n };\n _authState: AuthState | null;\n _prevAuthState: AuthState | null;\n _logOptions: AuthStateLogOptions;\n _transformQueue: PromiseQueue;\n\n constructor(sdk: OktaAuthOAuthInterface) {\n if (!sdk.emitter) {\n throw new AuthSdkError('Emitter should be initialized before AuthStateManager');\n }\n\n this._sdk = sdk;\n this._pending = { ...DEFAULT_PENDING };\n this._authState = INITIAL_AUTH_STATE;\n this._logOptions = {};\n this._prevAuthState = null;\n this._transformQueue = new PromiseQueue({\n quiet: true\n });\n\n // Listen on tokenManager events to start updateState process\n // \"added\" event is emitted in both add and renew process\n // Only listen on \"added\" event to update auth state\n sdk.tokenManager.on(EVENT_ADDED, (key, token) => {\n this._setLogOptions({ event: EVENT_ADDED, key, token });\n this.updateAuthState();\n });\n sdk.tokenManager.on(EVENT_REMOVED, (key, token) => {\n this._setLogOptions({ event: EVENT_REMOVED, key, token });\n this.updateAuthState();\n });\n }\n\n _setLogOptions(options) {\n this._logOptions = options;\n }\n\n getAuthState(): AuthState | null {\n return this._authState;\n }\n\n getPreviousAuthState(): AuthState | null {\n return this._prevAuthState;\n }\n\n async updateAuthState(): Promise {\n const { transformAuthState, devMode } = this._sdk.options;\n\n const log = (status) => {\n const { event, key, token } = this._logOptions;\n getConsole().group(`OKTA-AUTH-JS:updateAuthState: Event:${event} Status:${status}`);\n getConsole().log(key, token);\n getConsole().log('Current authState', this._authState);\n getConsole().groupEnd();\n \n // clear log options after logging\n this._logOptions = {};\n };\n\n const emitAuthStateChange = (authState) => {\n if (isSameAuthState(this._authState, authState)) {\n devMode && log('unchanged'); \n return;\n }\n this._prevAuthState = this._authState;\n this._authState = authState;\n // emit new authState object\n this._sdk.emitter.emit(EVENT_AUTH_STATE_CHANGE, { ...authState });\n devMode && log('emitted');\n };\n\n const finalPromise = (origPromise) => { \n return this._pending.updateAuthStatePromise.then(() => {\n const curPromise = this._pending.updateAuthStatePromise;\n if (curPromise && curPromise !== origPromise) {\n return finalPromise(curPromise);\n }\n return this.getAuthState();\n });\n };\n\n if (this._pending.updateAuthStatePromise) {\n if (this._pending.canceledTimes >= MAX_PROMISE_CANCEL_TIMES) {\n // stop canceling then starting a new promise\n // let existing promise finish to prevent running into loops\n devMode && log('terminated');\n return finalPromise(this._pending.updateAuthStatePromise);\n } else {\n this._pending.updateAuthStatePromise.cancel();\n }\n }\n\n /* eslint-disable complexity */\n const cancelablePromise = new PCancelable((resolve, _, onCancel) => {\n onCancel.shouldReject = false;\n onCancel(() => {\n this._pending.updateAuthStatePromise = null;\n this._pending.canceledTimes = this._pending.canceledTimes + 1;\n devMode && log('canceled');\n });\n\n const emitAndResolve = (authState) => {\n if (cancelablePromise.isCanceled) {\n resolve();\n return;\n }\n // emit event and resolve promise \n emitAuthStateChange(authState);\n resolve();\n\n // clear pending states after resolve\n this._pending = { ...DEFAULT_PENDING };\n };\n\n this._sdk.isAuthenticated()\n .then(() => {\n if (cancelablePromise.isCanceled) {\n resolve();\n return;\n }\n\n const { accessToken, idToken, refreshToken } = this._sdk.tokenManager.getTokensSync();\n const authState = {\n accessToken,\n idToken,\n refreshToken,\n isAuthenticated: !!(accessToken && idToken)\n };\n\n // Enqueue transformAuthState so that it does not run concurrently\n const promise: Promise = transformAuthState\n ? this._transformQueue.push(transformAuthState, null, this._sdk, authState) as Promise\n : Promise.resolve(authState);\n\n promise\n .then(authState => emitAndResolve(authState))\n .catch(error => emitAndResolve({\n accessToken, \n idToken, \n refreshToken,\n isAuthenticated: false, \n error\n }));\n });\n });\n /* eslint-enable complexity */\n this._pending.updateAuthStatePromise = cancelablePromise;\n\n return finalPromise(cancelablePromise);\n }\n\n subscribe(handler): void {\n this._sdk.emitter.on(EVENT_AUTH_STATE_CHANGE, handler);\n }\n\n unsubscribe(handler?): void {\n this._sdk.emitter.off(EVENT_AUTH_STATE_CHANGE, handler);\n }\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { AuthSdkError } from '../errors';\nimport { ServiceInterface, ServiceManagerOptions } from '../core/types';\nimport { EVENT_EXPIRED, TokenManagerInterface, isRefreshToken } from '../oidc/types';\nimport { isBrowser } from '../features';\n\nexport class AutoRenewService implements ServiceInterface {\n private tokenManager: TokenManagerInterface;\n private options: ServiceManagerOptions;\n private renewTimeQueue: Array;\n private started = false;\n\n constructor(tokenManager: TokenManagerInterface, options: ServiceManagerOptions = {}) {\n this.tokenManager = tokenManager;\n this.options = options;\n this.renewTimeQueue = [];\n this.onTokenExpiredHandler = this.onTokenExpiredHandler.bind(this);\n }\n \n private shouldThrottleRenew(): boolean {\n let res = false;\n this.renewTimeQueue.push(Date.now());\n if (this.renewTimeQueue.length >= 10) {\n // get and remove first item from queue\n const firstTime = this.renewTimeQueue.shift() as number;\n const lastTime = this.renewTimeQueue[this.renewTimeQueue.length - 1];\n res = (lastTime - firstTime) < 30 * 1000;\n }\n return res;\n }\n\n requiresLeadership() {\n // If tokens sync storage is enabled, handle tokens expiration only in 1 leader tab\n return !!this.options.syncStorage && isBrowser();\n }\n\n private processExpiredTokens() {\n const tokenStorage = this.tokenManager.getStorage();\n const tokens = tokenStorage.getStorage();\n Object.keys(tokens).forEach(key => {\n const token = tokens[key];\n if (!isRefreshToken(token) && this.tokenManager.hasExpired(token)) {\n this.onTokenExpiredHandler(key);\n }\n });\n }\n\n private onTokenExpiredHandler(key: string) {\n if (this.options.autoRenew) {\n if (this.shouldThrottleRenew()) {\n const error = new AuthSdkError('Too many token renew requests');\n this.tokenManager.emitError(error);\n } else {\n this.tokenManager.renew(key).catch(() => {}); // Renew errors will emit an \"error\" event \n }\n } else if (this.options.autoRemove) {\n this.tokenManager.remove(key);\n }\n }\n\n canStart() {\n return (!!this.options.autoRenew || !!this.options.autoRemove) && !this.started;\n }\n\n async start() {\n if (this.canStart()) {\n this.tokenManager.on(EVENT_EXPIRED, this.onTokenExpiredHandler);\n if (this.tokenManager.isStarted()) {\n // If token manager has been already started, we could miss token expire events,\n // so need to process expired tokens manually.\n this.processExpiredTokens();\n }\n this.started = true;\n }\n }\n\n async stop() {\n if (this.started) {\n this.tokenManager.off(EVENT_EXPIRED, this.onTokenExpiredHandler);\n this.renewTimeQueue = [];\n this.started = false;\n }\n }\n\n isStarted() {\n return this.started;\n }\n}\n","/**\n * returns true if the given object is a promise\n */\nexport function isPromise(obj) {\n return obj && typeof obj.then === 'function';\n}\nexport var PROMISE_RESOLVED_FALSE = Promise.resolve(false);\nexport var PROMISE_RESOLVED_TRUE = Promise.resolve(true);\nexport var PROMISE_RESOLVED_VOID = Promise.resolve();\nexport function sleep(time, resolveWith) {\n if (!time) time = 0;\n return new Promise(function (res) {\n return setTimeout(function () {\n return res(resolveWith);\n }, time);\n });\n}\nexport function randomInt(min, max) {\n return Math.floor(Math.random() * (max - min + 1) + min);\n}\n\n/**\n * https://stackoverflow.com/a/8084248\n */\nexport function randomToken() {\n return Math.random().toString(36).substring(2);\n}\nvar lastMs = 0;\nvar additional = 0;\n\n/**\n * returns the current time in micro-seconds,\n * WARNING: This is a pseudo-function\n * Performance.now is not reliable in webworkers, so we just make sure to never return the same time.\n * This is enough in browsers, and this function will not be used in nodejs.\n * The main reason for this hack is to ensure that BroadcastChannel behaves equal to production when it is used in fast-running unit tests.\n */\nexport function microSeconds() {\n var ms = new Date().getTime();\n if (ms === lastMs) {\n additional++;\n return ms * 1000 + additional;\n } else {\n lastMs = ms;\n additional = 0;\n return ms * 1000;\n }\n}\n\n/**\n * Check if WebLock API is supported.\n * @link https://developer.mozilla.org/en-US/docs/Web/API/Web_Locks_API\n */\nexport function supportsWebLockAPI() {\n if (typeof navigator !== 'undefined' && typeof navigator.locks !== 'undefined' && typeof navigator.locks.request === 'function') {\n return true;\n } else {\n return false;\n }\n}","import { microSeconds as micro, PROMISE_RESOLVED_VOID } from '../util.js';\nexport var microSeconds = micro;\nexport var type = 'native';\nexport function create(channelName) {\n var state = {\n messagesCallback: null,\n bc: new BroadcastChannel(channelName),\n subFns: [] // subscriberFunctions\n };\n\n state.bc.onmessage = function (msg) {\n if (state.messagesCallback) {\n state.messagesCallback(msg.data);\n }\n };\n return state;\n}\nexport function close(channelState) {\n channelState.bc.close();\n channelState.subFns = [];\n}\nexport function postMessage(channelState, messageJson) {\n try {\n channelState.bc.postMessage(messageJson, false);\n return PROMISE_RESOLVED_VOID;\n } catch (err) {\n return Promise.reject(err);\n }\n}\nexport function onMessage(channelState, fn) {\n channelState.messagesCallback = fn;\n}\nexport function canBeUsed() {\n if ((typeof window !== 'undefined' || typeof self !== 'undefined') && typeof BroadcastChannel === 'function') {\n if (BroadcastChannel._pubkey) {\n throw new Error('BroadcastChannel: Do not overwrite window.BroadcastChannel with this module, this is not a polyfill');\n }\n return true;\n } else {\n return false;\n }\n}\nexport function averageResponseTime() {\n return 150;\n}\nexport var NativeMethod = {\n create: create,\n close: close,\n onMessage: onMessage,\n postMessage: postMessage,\n canBeUsed: canBeUsed,\n type: type,\n averageResponseTime: averageResponseTime,\n microSeconds: microSeconds\n};","\n/**\n * this is a set which automatically forgets\n * a given entry when a new entry is set and the ttl\n * of the old one is over\n */\nexport class ObliviousSet {\n public readonly map = new Map();\n\n /**\n * Creating calls to setTimeout() is expensive,\n * so we only do that if there is not timeout already open.\n */\n public _to: boolean = false;\n constructor(\n public readonly ttl: number\n ) { }\n\n has(value: T): boolean {\n return this.map.has(value);\n }\n\n add(value: T): void {\n this.map.set(value, now());\n\n /**\n * When a new value is added,\n * start the cleanup at the next tick\n * to not block the cpu for more important stuff\n * that might happen.\n */\n if (!this._to) {\n this._to = true;\n setTimeout(() => {\n this._to = false;\n removeTooOldValues(this);\n }, 0);\n }\n }\n\n clear() {\n this.map.clear();\n }\n}\n\n\n/**\n * Removes all entries from the set\n * where the TTL has expired\n */\nexport function removeTooOldValues(\n obliviousSet: ObliviousSet\n) {\n const olderThen = now() - obliviousSet.ttl;\n const iterator = obliviousSet.map[Symbol.iterator]();\n\n /**\n * Because we can assume the new values are added at the bottom,\n * we start from the top and stop as soon as we reach a non-too-old value.\n */\n while (true) {\n\n const next = iterator.next().value;\n\n if (!next) {\n return; // no more elements\n }\n const value = next[0];\n const time = next[1];\n if (time < olderThen) {\n obliviousSet.map.delete(value);\n } else {\n // We reached a value that is not old enough\n return;\n }\n }\n}\n\nexport function now(): number {\n return new Date().getTime();\n}\n\n\n","export function fillOptionsWithDefaults() {\n var originalOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var options = JSON.parse(JSON.stringify(originalOptions));\n\n // main\n if (typeof options.webWorkerSupport === 'undefined') options.webWorkerSupport = true;\n\n // indexed-db\n if (!options.idb) options.idb = {};\n // after this time the messages get deleted\n if (!options.idb.ttl) options.idb.ttl = 1000 * 45;\n if (!options.idb.fallbackInterval) options.idb.fallbackInterval = 150;\n // handles abrupt db onclose events.\n if (originalOptions.idb && typeof originalOptions.idb.onclose === 'function') options.idb.onclose = originalOptions.idb.onclose;\n\n // localstorage\n if (!options.localstorage) options.localstorage = {};\n if (!options.localstorage.removeTimeout) options.localstorage.removeTimeout = 1000 * 60;\n\n // custom methods\n if (originalOptions.methods) options.methods = originalOptions.methods;\n\n // node\n if (!options.node) options.node = {};\n if (!options.node.ttl) options.node.ttl = 1000 * 60 * 2; // 2 minutes;\n /**\n * On linux use 'ulimit -Hn' to get the limit of open files.\n * On ubuntu this was 4096 for me, so we use half of that as maxParallelWrites default.\n */\n if (!options.node.maxParallelWrites) options.node.maxParallelWrites = 2048;\n if (typeof options.node.useFastPath === 'undefined') options.node.useFastPath = true;\n return options;\n}","/**\n * this method uses indexeddb to store the messages\n * There is currently no observerAPI for idb\n * @link https://github.com/w3c/IndexedDB/issues/51\n * \n * When working on this, ensure to use these performance optimizations:\n * @link https://rxdb.info/slow-indexeddb.html\n */\n\nimport { sleep, randomInt, randomToken, microSeconds as micro, PROMISE_RESOLVED_VOID } from '../util.js';\nexport var microSeconds = micro;\nimport { ObliviousSet } from 'oblivious-set';\nimport { fillOptionsWithDefaults } from '../options.js';\nvar DB_PREFIX = 'pubkey.broadcast-channel-0-';\nvar OBJECT_STORE_ID = 'messages';\n\n/**\n * Use relaxed durability for faster performance on all transactions.\n * @link https://nolanlawson.com/2021/08/22/speeding-up-indexeddb-reads-and-writes/\n */\nexport var TRANSACTION_SETTINGS = {\n durability: 'relaxed'\n};\nexport var type = 'idb';\nexport function getIdb() {\n if (typeof indexedDB !== 'undefined') return indexedDB;\n if (typeof window !== 'undefined') {\n if (typeof window.mozIndexedDB !== 'undefined') return window.mozIndexedDB;\n if (typeof window.webkitIndexedDB !== 'undefined') return window.webkitIndexedDB;\n if (typeof window.msIndexedDB !== 'undefined') return window.msIndexedDB;\n }\n return false;\n}\n\n/**\n * If possible, we should explicitly commit IndexedDB transactions\n * for better performance.\n * @link https://nolanlawson.com/2021/08/22/speeding-up-indexeddb-reads-and-writes/\n */\nexport function commitIndexedDBTransaction(tx) {\n if (tx.commit) {\n tx.commit();\n }\n}\nexport function createDatabase(channelName) {\n var IndexedDB = getIdb();\n\n // create table\n var dbName = DB_PREFIX + channelName;\n\n /**\n * All IndexedDB databases are opened without version\n * because it is a bit faster, especially on firefox\n * @link http://nparashuram.com/IndexedDB/perf/#Open%20Database%20with%20version\n */\n var openRequest = IndexedDB.open(dbName);\n openRequest.onupgradeneeded = function (ev) {\n var db = ev.target.result;\n db.createObjectStore(OBJECT_STORE_ID, {\n keyPath: 'id',\n autoIncrement: true\n });\n };\n return new Promise(function (res, rej) {\n openRequest.onerror = function (ev) {\n return rej(ev);\n };\n openRequest.onsuccess = function () {\n res(openRequest.result);\n };\n });\n}\n\n/**\n * writes the new message to the database\n * so other readers can find it\n */\nexport function writeMessage(db, readerUuid, messageJson) {\n var time = new Date().getTime();\n var writeObject = {\n uuid: readerUuid,\n time: time,\n data: messageJson\n };\n var tx = db.transaction([OBJECT_STORE_ID], 'readwrite', TRANSACTION_SETTINGS);\n return new Promise(function (res, rej) {\n tx.oncomplete = function () {\n return res();\n };\n tx.onerror = function (ev) {\n return rej(ev);\n };\n var objectStore = tx.objectStore(OBJECT_STORE_ID);\n objectStore.add(writeObject);\n commitIndexedDBTransaction(tx);\n });\n}\nexport function getAllMessages(db) {\n var tx = db.transaction(OBJECT_STORE_ID, 'readonly', TRANSACTION_SETTINGS);\n var objectStore = tx.objectStore(OBJECT_STORE_ID);\n var ret = [];\n return new Promise(function (res) {\n objectStore.openCursor().onsuccess = function (ev) {\n var cursor = ev.target.result;\n if (cursor) {\n ret.push(cursor.value);\n //alert(\"Name for SSN \" + cursor.key + \" is \" + cursor.value.name);\n cursor[\"continue\"]();\n } else {\n commitIndexedDBTransaction(tx);\n res(ret);\n }\n };\n });\n}\nexport function getMessagesHigherThan(db, lastCursorId) {\n var tx = db.transaction(OBJECT_STORE_ID, 'readonly', TRANSACTION_SETTINGS);\n var objectStore = tx.objectStore(OBJECT_STORE_ID);\n var ret = [];\n var keyRangeValue = IDBKeyRange.bound(lastCursorId + 1, Infinity);\n\n /**\n * Optimization shortcut,\n * if getAll() can be used, do not use a cursor.\n * @link https://rxdb.info/slow-indexeddb.html\n */\n if (objectStore.getAll) {\n var getAllRequest = objectStore.getAll(keyRangeValue);\n return new Promise(function (res, rej) {\n getAllRequest.onerror = function (err) {\n return rej(err);\n };\n getAllRequest.onsuccess = function (e) {\n res(e.target.result);\n };\n });\n }\n function openCursor() {\n // Occasionally Safari will fail on IDBKeyRange.bound, this\n // catches that error, having it open the cursor to the first\n // item. When it gets data it will advance to the desired key.\n try {\n keyRangeValue = IDBKeyRange.bound(lastCursorId + 1, Infinity);\n return objectStore.openCursor(keyRangeValue);\n } catch (e) {\n return objectStore.openCursor();\n }\n }\n return new Promise(function (res, rej) {\n var openCursorRequest = openCursor();\n openCursorRequest.onerror = function (err) {\n return rej(err);\n };\n openCursorRequest.onsuccess = function (ev) {\n var cursor = ev.target.result;\n if (cursor) {\n if (cursor.value.id < lastCursorId + 1) {\n cursor[\"continue\"](lastCursorId + 1);\n } else {\n ret.push(cursor.value);\n cursor[\"continue\"]();\n }\n } else {\n commitIndexedDBTransaction(tx);\n res(ret);\n }\n };\n });\n}\nexport function removeMessagesById(channelState, ids) {\n if (channelState.closed) {\n return Promise.resolve([]);\n }\n var tx = channelState.db.transaction(OBJECT_STORE_ID, 'readwrite', TRANSACTION_SETTINGS);\n var objectStore = tx.objectStore(OBJECT_STORE_ID);\n return Promise.all(ids.map(function (id) {\n var deleteRequest = objectStore[\"delete\"](id);\n return new Promise(function (res) {\n deleteRequest.onsuccess = function () {\n return res();\n };\n });\n }));\n}\nexport function getOldMessages(db, ttl) {\n var olderThen = new Date().getTime() - ttl;\n var tx = db.transaction(OBJECT_STORE_ID, 'readonly', TRANSACTION_SETTINGS);\n var objectStore = tx.objectStore(OBJECT_STORE_ID);\n var ret = [];\n return new Promise(function (res) {\n objectStore.openCursor().onsuccess = function (ev) {\n var cursor = ev.target.result;\n if (cursor) {\n var msgObk = cursor.value;\n if (msgObk.time < olderThen) {\n ret.push(msgObk);\n //alert(\"Name for SSN \" + cursor.key + \" is \" + cursor.value.name);\n cursor[\"continue\"]();\n } else {\n // no more old messages,\n commitIndexedDBTransaction(tx);\n res(ret);\n }\n } else {\n res(ret);\n }\n };\n });\n}\nexport function cleanOldMessages(channelState) {\n return getOldMessages(channelState.db, channelState.options.idb.ttl).then(function (tooOld) {\n return removeMessagesById(channelState, tooOld.map(function (msg) {\n return msg.id;\n }));\n });\n}\nexport function create(channelName, options) {\n options = fillOptionsWithDefaults(options);\n return createDatabase(channelName).then(function (db) {\n var state = {\n closed: false,\n lastCursorId: 0,\n channelName: channelName,\n options: options,\n uuid: randomToken(),\n /**\n * emittedMessagesIds\n * contains all messages that have been emitted before\n * @type {ObliviousSet}\n */\n eMIs: new ObliviousSet(options.idb.ttl * 2),\n // ensures we do not read messages in parallel\n writeBlockPromise: PROMISE_RESOLVED_VOID,\n messagesCallback: null,\n readQueuePromises: [],\n db: db\n };\n\n /**\n * Handle abrupt closes that do not originate from db.close().\n * This could happen, for example, if the underlying storage is\n * removed or if the user clears the database in the browser's\n * history preferences.\n */\n db.onclose = function () {\n state.closed = true;\n if (options.idb.onclose) options.idb.onclose();\n };\n\n /**\n * if service-workers are used,\n * we have no 'storage'-event if they post a message,\n * therefore we also have to set an interval\n */\n _readLoop(state);\n return state;\n });\n}\nfunction _readLoop(state) {\n if (state.closed) return;\n readNewMessages(state).then(function () {\n return sleep(state.options.idb.fallbackInterval);\n }).then(function () {\n return _readLoop(state);\n });\n}\nfunction _filterMessage(msgObj, state) {\n if (msgObj.uuid === state.uuid) return false; // send by own\n if (state.eMIs.has(msgObj.id)) return false; // already emitted\n if (msgObj.data.time < state.messagesCallbackTime) return false; // older then onMessageCallback\n return true;\n}\n\n/**\n * reads all new messages from the database and emits them\n */\nfunction readNewMessages(state) {\n // channel already closed\n if (state.closed) return PROMISE_RESOLVED_VOID;\n\n // if no one is listening, we do not need to scan for new messages\n if (!state.messagesCallback) return PROMISE_RESOLVED_VOID;\n return getMessagesHigherThan(state.db, state.lastCursorId).then(function (newerMessages) {\n var useMessages = newerMessages\n /**\n * there is a bug in iOS where the msgObj can be undefined sometimes\n * so we filter them out\n * @link https://github.com/pubkey/broadcast-channel/issues/19\n */.filter(function (msgObj) {\n return !!msgObj;\n }).map(function (msgObj) {\n if (msgObj.id > state.lastCursorId) {\n state.lastCursorId = msgObj.id;\n }\n return msgObj;\n }).filter(function (msgObj) {\n return _filterMessage(msgObj, state);\n }).sort(function (msgObjA, msgObjB) {\n return msgObjA.time - msgObjB.time;\n }); // sort by time\n useMessages.forEach(function (msgObj) {\n if (state.messagesCallback) {\n state.eMIs.add(msgObj.id);\n state.messagesCallback(msgObj.data);\n }\n });\n return PROMISE_RESOLVED_VOID;\n });\n}\nexport function close(channelState) {\n channelState.closed = true;\n channelState.db.close();\n}\nexport function postMessage(channelState, messageJson) {\n channelState.writeBlockPromise = channelState.writeBlockPromise.then(function () {\n return writeMessage(channelState.db, channelState.uuid, messageJson);\n }).then(function () {\n if (randomInt(0, 10) === 0) {\n /* await (do not await) */\n cleanOldMessages(channelState);\n }\n });\n return channelState.writeBlockPromise;\n}\nexport function onMessage(channelState, fn, time) {\n channelState.messagesCallbackTime = time;\n channelState.messagesCallback = fn;\n readNewMessages(channelState);\n}\nexport function canBeUsed() {\n return !!getIdb();\n}\nexport function averageResponseTime(options) {\n return options.idb.fallbackInterval * 2;\n}\nexport var IndexedDBMethod = {\n create: create,\n close: close,\n onMessage: onMessage,\n postMessage: postMessage,\n canBeUsed: canBeUsed,\n type: type,\n averageResponseTime: averageResponseTime,\n microSeconds: microSeconds\n};","/**\n * A localStorage-only method which uses localstorage and its 'storage'-event\n * This does not work inside webworkers because they have no access to localstorage\n * This is basically implemented to support IE9 or your grandmother's toaster.\n * @link https://caniuse.com/#feat=namevalue-storage\n * @link https://caniuse.com/#feat=indexeddb\n */\n\nimport { ObliviousSet } from 'oblivious-set';\nimport { fillOptionsWithDefaults } from '../options.js';\nimport { sleep, randomToken, microSeconds as micro } from '../util.js';\nexport var microSeconds = micro;\nvar KEY_PREFIX = 'pubkey.broadcastChannel-';\nexport var type = 'localstorage';\n\n/**\n * copied from crosstab\n * @link https://github.com/tejacques/crosstab/blob/master/src/crosstab.js#L32\n */\nexport function getLocalStorage() {\n var localStorage;\n if (typeof window === 'undefined') return null;\n try {\n localStorage = window.localStorage;\n localStorage = window['ie8-eventlistener/storage'] || window.localStorage;\n } catch (e) {\n // New versions of Firefox throw a Security exception\n // if cookies are disabled. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1028153\n }\n return localStorage;\n}\nexport function storageKey(channelName) {\n return KEY_PREFIX + channelName;\n}\n\n/**\n* writes the new message to the storage\n* and fires the storage-event so other readers can find it\n*/\nexport function postMessage(channelState, messageJson) {\n return new Promise(function (res) {\n sleep().then(function () {\n var key = storageKey(channelState.channelName);\n var writeObj = {\n token: randomToken(),\n time: new Date().getTime(),\n data: messageJson,\n uuid: channelState.uuid\n };\n var value = JSON.stringify(writeObj);\n getLocalStorage().setItem(key, value);\n\n /**\n * StorageEvent does not fire the 'storage' event\n * in the window that changes the state of the local storage.\n * So we fire it manually\n */\n var ev = document.createEvent('Event');\n ev.initEvent('storage', true, true);\n ev.key = key;\n ev.newValue = value;\n window.dispatchEvent(ev);\n res();\n });\n });\n}\nexport function addStorageEventListener(channelName, fn) {\n var key = storageKey(channelName);\n var listener = function listener(ev) {\n if (ev.key === key) {\n fn(JSON.parse(ev.newValue));\n }\n };\n window.addEventListener('storage', listener);\n return listener;\n}\nexport function removeStorageEventListener(listener) {\n window.removeEventListener('storage', listener);\n}\nexport function create(channelName, options) {\n options = fillOptionsWithDefaults(options);\n if (!canBeUsed()) {\n throw new Error('BroadcastChannel: localstorage cannot be used');\n }\n var uuid = randomToken();\n\n /**\n * eMIs\n * contains all messages that have been emitted before\n * @type {ObliviousSet}\n */\n var eMIs = new ObliviousSet(options.localstorage.removeTimeout);\n var state = {\n channelName: channelName,\n uuid: uuid,\n eMIs: eMIs // emittedMessagesIds\n };\n\n state.listener = addStorageEventListener(channelName, function (msgObj) {\n if (!state.messagesCallback) return; // no listener\n if (msgObj.uuid === uuid) return; // own message\n if (!msgObj.token || eMIs.has(msgObj.token)) return; // already emitted\n if (msgObj.data.time && msgObj.data.time < state.messagesCallbackTime) return; // too old\n\n eMIs.add(msgObj.token);\n state.messagesCallback(msgObj.data);\n });\n return state;\n}\nexport function close(channelState) {\n removeStorageEventListener(channelState.listener);\n}\nexport function onMessage(channelState, fn, time) {\n channelState.messagesCallbackTime = time;\n channelState.messagesCallback = fn;\n}\nexport function canBeUsed() {\n var ls = getLocalStorage();\n if (!ls) return false;\n try {\n var key = '__broadcastchannel_check';\n ls.setItem(key, 'works');\n ls.removeItem(key);\n } catch (e) {\n // Safari 10 in private mode will not allow write access to local\n // storage and fail with a QuotaExceededError. See\n // https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API#Private_Browsing_Incognito_modes\n return false;\n }\n return true;\n}\nexport function averageResponseTime() {\n var defaultTime = 120;\n var userAgent = navigator.userAgent.toLowerCase();\n if (userAgent.includes('safari') && !userAgent.includes('chrome')) {\n // safari is much slower so this time is higher\n return defaultTime * 2;\n }\n return defaultTime;\n}\nexport var LocalstorageMethod = {\n create: create,\n close: close,\n onMessage: onMessage,\n postMessage: postMessage,\n canBeUsed: canBeUsed,\n type: type,\n averageResponseTime: averageResponseTime,\n microSeconds: microSeconds\n};","import { microSeconds as micro } from '../util.js';\nexport var microSeconds = micro;\nexport var type = 'simulate';\nvar SIMULATE_CHANNELS = new Set();\nexport function create(channelName) {\n var state = {\n name: channelName,\n messagesCallback: null\n };\n SIMULATE_CHANNELS.add(state);\n return state;\n}\nexport function close(channelState) {\n SIMULATE_CHANNELS[\"delete\"](channelState);\n}\nexport function postMessage(channelState, messageJson) {\n return new Promise(function (res) {\n return setTimeout(function () {\n var channelArray = Array.from(SIMULATE_CHANNELS);\n channelArray.filter(function (channel) {\n return channel.name === channelState.name;\n }).filter(function (channel) {\n return channel !== channelState;\n }).filter(function (channel) {\n return !!channel.messagesCallback;\n }).forEach(function (channel) {\n return channel.messagesCallback(messageJson);\n });\n res();\n }, 5);\n });\n}\nexport function onMessage(channelState, fn) {\n channelState.messagesCallback = fn;\n}\nexport function canBeUsed() {\n return true;\n}\nexport function averageResponseTime() {\n return 5;\n}\nexport var SimulateMethod = {\n create: create,\n close: close,\n onMessage: onMessage,\n postMessage: postMessage,\n canBeUsed: canBeUsed,\n type: type,\n averageResponseTime: averageResponseTime,\n microSeconds: microSeconds\n};","import { NativeMethod } from './methods/native.js';\nimport { IndexedDBMethod } from './methods/indexed-db.js';\nimport { LocalstorageMethod } from './methods/localstorage.js';\nimport { SimulateMethod } from './methods/simulate.js';\n// the line below will be removed from es5/browser builds\n\n// order is important\nvar METHODS = [NativeMethod,\n// fastest\nIndexedDBMethod, LocalstorageMethod];\nexport function chooseMethod(options) {\n var chooseMethods = [].concat(options.methods, METHODS).filter(Boolean);\n\n // the line below will be removed from es5/browser builds\n\n // directly chosen\n if (options.type) {\n if (options.type === 'simulate') {\n // only use simulate-method if directly chosen\n return SimulateMethod;\n }\n var ret = chooseMethods.find(function (m) {\n return m.type === options.type;\n });\n if (!ret) throw new Error('method-type ' + options.type + ' not found');else return ret;\n }\n\n /**\n * if no webworker support is needed,\n * remove idb from the list so that localstorage will be chosen\n */\n if (!options.webWorkerSupport) {\n chooseMethods = chooseMethods.filter(function (m) {\n return m.type !== 'idb';\n });\n }\n var useMethod = chooseMethods.find(function (method) {\n return method.canBeUsed();\n });\n if (!useMethod) {\n throw new Error(\"No usable method found in \" + JSON.stringify(METHODS.map(function (m) {\n return m.type;\n })));\n } else {\n return useMethod;\n }\n}","import { isPromise, PROMISE_RESOLVED_FALSE, PROMISE_RESOLVED_VOID } from './util.js';\nimport { chooseMethod } from './method-chooser.js';\nimport { fillOptionsWithDefaults } from './options.js';\n\n/**\n * Contains all open channels,\n * used in tests to ensure everything is closed.\n */\nexport var OPEN_BROADCAST_CHANNELS = new Set();\nvar lastId = 0;\nexport var BroadcastChannel = function BroadcastChannel(name, options) {\n // identifier of the channel to debug stuff\n this.id = lastId++;\n OPEN_BROADCAST_CHANNELS.add(this);\n this.name = name;\n if (ENFORCED_OPTIONS) {\n options = ENFORCED_OPTIONS;\n }\n this.options = fillOptionsWithDefaults(options);\n this.method = chooseMethod(this.options);\n\n // isListening\n this._iL = false;\n\n /**\n * _onMessageListener\n * setting onmessage twice,\n * will overwrite the first listener\n */\n this._onML = null;\n\n /**\n * _addEventListeners\n */\n this._addEL = {\n message: [],\n internal: []\n };\n\n /**\n * Unsent message promises\n * where the sending is still in progress\n * @type {Set}\n */\n this._uMP = new Set();\n\n /**\n * _beforeClose\n * array of promises that will be awaited\n * before the channel is closed\n */\n this._befC = [];\n\n /**\n * _preparePromise\n */\n this._prepP = null;\n _prepareChannel(this);\n};\n\n// STATICS\n\n/**\n * used to identify if someone overwrites\n * window.BroadcastChannel with this\n * See methods/native.js\n */\nBroadcastChannel._pubkey = true;\n\n/**\n * clears the tmp-folder if is node\n * @return {Promise} true if has run, false if not node\n */\nexport function clearNodeFolder(options) {\n options = fillOptionsWithDefaults(options);\n var method = chooseMethod(options);\n if (method.type === 'node') {\n return method.clearNodeFolder().then(function () {\n return true;\n });\n } else {\n return PROMISE_RESOLVED_FALSE;\n }\n}\n\n/**\n * if set, this method is enforced,\n * no mather what the options are\n */\nvar ENFORCED_OPTIONS;\nexport function enforceOptions(options) {\n ENFORCED_OPTIONS = options;\n}\n\n// PROTOTYPE\nBroadcastChannel.prototype = {\n postMessage: function postMessage(msg) {\n if (this.closed) {\n throw new Error('BroadcastChannel.postMessage(): ' + 'Cannot post message after channel has closed ' +\n /**\n * In the past when this error appeared, it was really hard to debug.\n * So now we log the msg together with the error so it at least\n * gives some clue about where in your application this happens.\n */\n JSON.stringify(msg));\n }\n return _post(this, 'message', msg);\n },\n postInternal: function postInternal(msg) {\n return _post(this, 'internal', msg);\n },\n set onmessage(fn) {\n var time = this.method.microSeconds();\n var listenObj = {\n time: time,\n fn: fn\n };\n _removeListenerObject(this, 'message', this._onML);\n if (fn && typeof fn === 'function') {\n this._onML = listenObj;\n _addListenerObject(this, 'message', listenObj);\n } else {\n this._onML = null;\n }\n },\n addEventListener: function addEventListener(type, fn) {\n var time = this.method.microSeconds();\n var listenObj = {\n time: time,\n fn: fn\n };\n _addListenerObject(this, type, listenObj);\n },\n removeEventListener: function removeEventListener(type, fn) {\n var obj = this._addEL[type].find(function (obj) {\n return obj.fn === fn;\n });\n _removeListenerObject(this, type, obj);\n },\n close: function close() {\n var _this = this;\n if (this.closed) {\n return;\n }\n OPEN_BROADCAST_CHANNELS[\"delete\"](this);\n this.closed = true;\n var awaitPrepare = this._prepP ? this._prepP : PROMISE_RESOLVED_VOID;\n this._onML = null;\n this._addEL.message = [];\n return awaitPrepare\n // wait until all current sending are processed\n .then(function () {\n return Promise.all(Array.from(_this._uMP));\n })\n // run before-close hooks\n .then(function () {\n return Promise.all(_this._befC.map(function (fn) {\n return fn();\n }));\n })\n // close the channel\n .then(function () {\n return _this.method.close(_this._state);\n });\n },\n get type() {\n return this.method.type;\n },\n get isClosed() {\n return this.closed;\n }\n};\n\n/**\n * Post a message over the channel\n * @returns {Promise} that resolved when the message sending is done\n */\nfunction _post(broadcastChannel, type, msg) {\n var time = broadcastChannel.method.microSeconds();\n var msgObj = {\n time: time,\n type: type,\n data: msg\n };\n var awaitPrepare = broadcastChannel._prepP ? broadcastChannel._prepP : PROMISE_RESOLVED_VOID;\n return awaitPrepare.then(function () {\n var sendPromise = broadcastChannel.method.postMessage(broadcastChannel._state, msgObj);\n\n // add/remove to unsent messages list\n broadcastChannel._uMP.add(sendPromise);\n sendPromise[\"catch\"]().then(function () {\n return broadcastChannel._uMP[\"delete\"](sendPromise);\n });\n return sendPromise;\n });\n}\nfunction _prepareChannel(channel) {\n var maybePromise = channel.method.create(channel.name, channel.options);\n if (isPromise(maybePromise)) {\n channel._prepP = maybePromise;\n maybePromise.then(function (s) {\n // used in tests to simulate slow runtime\n /*if (channel.options.prepareDelay) {\n await new Promise(res => setTimeout(res, this.options.prepareDelay));\n }*/\n channel._state = s;\n });\n } else {\n channel._state = maybePromise;\n }\n}\nfunction _hasMessageListeners(channel) {\n if (channel._addEL.message.length > 0) return true;\n if (channel._addEL.internal.length > 0) return true;\n return false;\n}\nfunction _addListenerObject(channel, type, obj) {\n channel._addEL[type].push(obj);\n _startListening(channel);\n}\nfunction _removeListenerObject(channel, type, obj) {\n channel._addEL[type] = channel._addEL[type].filter(function (o) {\n return o !== obj;\n });\n _stopListening(channel);\n}\nfunction _startListening(channel) {\n if (!channel._iL && _hasMessageListeners(channel)) {\n // someone is listening, start subscribing\n\n var listenerFn = function listenerFn(msgObj) {\n channel._addEL[msgObj.type].forEach(function (listenerObject) {\n /**\n * Getting the current time in JavaScript has no good precision.\n * So instead of only listening to events that happened 'after' the listener\n * was added, we also listen to events that happened 100ms before it.\n * This ensures that when another process, like a WebWorker, sends events\n * we do not miss them out because their timestamp is a bit off compared to the main process.\n * Not doing this would make messages missing when we send data directly after subscribing and awaiting a response.\n * @link https://johnresig.com/blog/accuracy-of-javascript-time/\n */\n var hundredMsInMicro = 100 * 1000;\n var minMessageTime = listenerObject.time - hundredMsInMicro;\n if (msgObj.time >= minMessageTime) {\n listenerObject.fn(msgObj.data);\n }\n });\n };\n var time = channel.method.microSeconds();\n if (channel._prepP) {\n channel._prepP.then(function () {\n channel._iL = true;\n channel.method.onMessage(channel._state, listenerFn, time);\n });\n } else {\n channel._iL = true;\n channel.method.onMessage(channel._state, listenerFn, time);\n }\n }\n}\nfunction _stopListening(channel) {\n if (channel._iL && !_hasMessageListeners(channel)) {\n // no one is listening, stop subscribing\n channel._iL = false;\n var time = channel.method.microSeconds();\n channel.method.onMessage(channel._state, null, time);\n }\n}","import { addBrowser } from './browser.js';\nimport { addNode } from './node.js';\n\n/**\n * Use the code directly to prevent import problems\n * with the detect-node package.\n * @link https://github.com/iliakan/detect-node/blob/master/index.js\n */\nvar isNode = Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';\nvar USE_METHOD = isNode ? addNode : addBrowser;\nvar LISTENERS = new Set();\nvar startedListening = false;\nfunction startListening() {\n if (startedListening) {\n return;\n }\n startedListening = true;\n USE_METHOD(runAll);\n}\nexport function add(fn) {\n startListening();\n if (typeof fn !== 'function') {\n throw new Error('Listener is no function');\n }\n LISTENERS.add(fn);\n var addReturn = {\n remove: function remove() {\n return LISTENERS[\"delete\"](fn);\n },\n run: function run() {\n LISTENERS[\"delete\"](fn);\n return fn();\n }\n };\n return addReturn;\n}\nexport function runAll() {\n var promises = [];\n LISTENERS.forEach(function (fn) {\n promises.push(fn());\n LISTENERS[\"delete\"](fn);\n });\n return Promise.all(promises);\n}\nexport function removeAll() {\n LISTENERS.clear();\n}\nexport function getSize() {\n return LISTENERS.size;\n}","export function addNode(fn) {\n process.on('exit', function () {\n return fn();\n });\n\n /**\n * on the following events,\n * the process will not end if there are\n * event-handlers attached,\n * therefore we have to call process.exit()\n */\n process.on('beforeExit', function () {\n return fn().then(function () {\n return process.exit();\n });\n });\n // catches ctrl+c event\n process.on('SIGINT', function () {\n return fn().then(function () {\n return process.exit();\n });\n });\n // catches uncaught exceptions\n process.on('uncaughtException', function (err) {\n return fn().then(function () {\n console.trace(err);\n process.exit(101);\n });\n });\n}","/* global WorkerGlobalScope */\n\nexport function addBrowser(fn) {\n if (typeof WorkerGlobalScope === 'function' && self instanceof WorkerGlobalScope) {\n /**\n * Because killing a worker does directly stop the excution\n * of the code, our only chance is to overwrite the close function\n * which could work some times.\n * @link https://stackoverflow.com/q/72903255/3443137\n */\n var oldClose = self.close.bind(self);\n self.close = function () {\n fn();\n return oldClose();\n };\n } else {\n /**\n * if we are on react-native, there is no window.addEventListener\n * @link https://github.com/pubkey/unload/issues/6\n */\n if (typeof window.addEventListener !== 'function') {\n return;\n }\n\n /**\n * for normal browser-windows, we use the beforeunload-event\n */\n window.addEventListener('beforeunload', function () {\n fn();\n }, true);\n\n /**\n * for iframes, we have to use the unload-event\n * @link https://stackoverflow.com/q/47533670/3443137\n */\n window.addEventListener('unload', function () {\n fn();\n }, true);\n }\n\n /**\n * TODO add fallback for safari-mobile\n * @link https://stackoverflow.com/a/26193516/3443137\n */\n}","import { add as unloadAdd } from 'unload';\n\n/**\n * sends and internal message over the broadcast-channel\n */\nexport function sendLeaderMessage(leaderElector, action) {\n var msgJson = {\n context: 'leader',\n action: action,\n token: leaderElector.token\n };\n return leaderElector.broadcastChannel.postInternal(msgJson);\n}\nexport function beLeader(leaderElector) {\n leaderElector.isLeader = true;\n leaderElector._hasLeader = true;\n var unloadFn = unloadAdd(function () {\n return leaderElector.die();\n });\n leaderElector._unl.push(unloadFn);\n var isLeaderListener = function isLeaderListener(msg) {\n if (msg.context === 'leader' && msg.action === 'apply') {\n sendLeaderMessage(leaderElector, 'tell');\n }\n if (msg.context === 'leader' && msg.action === 'tell' && !leaderElector._dpLC) {\n /**\n * another instance is also leader!\n * This can happen on rare events\n * like when the CPU is at 100% for long time\n * or the tabs are open very long and the browser throttles them.\n * @link https://github.com/pubkey/broadcast-channel/issues/414\n * @link https://github.com/pubkey/broadcast-channel/issues/385\n */\n leaderElector._dpLC = true;\n leaderElector._dpL(); // message the lib user so the app can handle the problem\n sendLeaderMessage(leaderElector, 'tell'); // ensure other leader also knows the problem\n }\n };\n\n leaderElector.broadcastChannel.addEventListener('internal', isLeaderListener);\n leaderElector._lstns.push(isLeaderListener);\n return sendLeaderMessage(leaderElector, 'tell');\n}","import { randomToken } from './util.js';\nimport { sendLeaderMessage, beLeader } from './leader-election-util.js';\n\n/**\n * A faster version of the leader elector that uses the WebLock API\n * @link https://developer.mozilla.org/en-US/docs/Web/API/Web_Locks_API\n */\nexport var LeaderElectionWebLock = function LeaderElectionWebLock(broadcastChannel, options) {\n var _this = this;\n this.broadcastChannel = broadcastChannel;\n broadcastChannel._befC.push(function () {\n return _this.die();\n });\n this._options = options;\n this.isLeader = false;\n this.isDead = false;\n this.token = randomToken();\n this._lstns = [];\n this._unl = [];\n this._dpL = function () {}; // onduplicate listener\n this._dpLC = false; // true when onduplicate called\n\n this._wKMC = {}; // stuff for cleanup\n\n // lock name\n this.lN = 'pubkey-bc||' + broadcastChannel.method.type + '||' + broadcastChannel.name;\n};\nLeaderElectionWebLock.prototype = {\n hasLeader: function hasLeader() {\n var _this2 = this;\n return navigator.locks.query().then(function (locks) {\n var relevantLocks = locks.held ? locks.held.filter(function (lock) {\n return lock.name === _this2.lN;\n }) : [];\n if (relevantLocks && relevantLocks.length > 0) {\n return true;\n } else {\n return false;\n }\n });\n },\n awaitLeadership: function awaitLeadership() {\n var _this3 = this;\n if (!this._wLMP) {\n this._wKMC.c = new AbortController();\n var returnPromise = new Promise(function (res, rej) {\n _this3._wKMC.res = res;\n _this3._wKMC.rej = rej;\n });\n this._wLMP = new Promise(function (res) {\n navigator.locks.request(_this3.lN, {\n signal: _this3._wKMC.c.signal\n }, function () {\n // if the lock resolved, we can drop the abort controller\n _this3._wKMC.c = undefined;\n beLeader(_this3);\n res();\n return returnPromise;\n })[\"catch\"](function () {});\n });\n }\n return this._wLMP;\n },\n set onduplicate(_fn) {\n // Do nothing because there are no duplicates in the WebLock version\n },\n die: function die() {\n var _this4 = this;\n this._lstns.forEach(function (listener) {\n return _this4.broadcastChannel.removeEventListener('internal', listener);\n });\n this._lstns = [];\n this._unl.forEach(function (uFn) {\n return uFn.remove();\n });\n this._unl = [];\n if (this.isLeader) {\n this.isLeader = false;\n }\n this.isDead = true;\n if (this._wKMC.res) {\n this._wKMC.res();\n }\n if (this._wKMC.c) {\n this._wKMC.c.abort('LeaderElectionWebLock.die() called');\n }\n return sendLeaderMessage(this, 'death');\n }\n};","import { sleep, randomToken, PROMISE_RESOLVED_VOID, PROMISE_RESOLVED_TRUE, supportsWebLockAPI } from './util.js';\nimport { sendLeaderMessage, beLeader } from './leader-election-util.js';\nimport { LeaderElectionWebLock } from './leader-election-web-lock.js';\nvar LeaderElection = function LeaderElection(broadcastChannel, options) {\n var _this = this;\n this.broadcastChannel = broadcastChannel;\n this._options = options;\n this.isLeader = false;\n this._hasLeader = false;\n this.isDead = false;\n this.token = randomToken();\n\n /**\n * Apply Queue,\n * used to ensure we do not run applyOnce()\n * in parallel.\n */\n this._aplQ = PROMISE_RESOLVED_VOID;\n // amount of unfinished applyOnce() calls\n this._aplQC = 0;\n\n // things to clean up\n this._unl = []; // _unloads\n this._lstns = []; // _listeners\n this._dpL = function () {}; // onduplicate listener\n this._dpLC = false; // true when onduplicate called\n\n /**\n * Even when the own instance is not applying,\n * we still listen to messages to ensure the hasLeader flag\n * is set correctly.\n */\n var hasLeaderListener = function hasLeaderListener(msg) {\n if (msg.context === 'leader') {\n if (msg.action === 'death') {\n _this._hasLeader = false;\n }\n if (msg.action === 'tell') {\n _this._hasLeader = true;\n }\n }\n };\n this.broadcastChannel.addEventListener('internal', hasLeaderListener);\n this._lstns.push(hasLeaderListener);\n};\nLeaderElection.prototype = {\n hasLeader: function hasLeader() {\n return Promise.resolve(this._hasLeader);\n },\n /**\n * Returns true if the instance is leader,\n * false if not.\n * @async\n */\n applyOnce: function applyOnce(\n // true if the applyOnce() call came from the fallbackInterval cycle\n isFromFallbackInterval) {\n var _this2 = this;\n if (this.isLeader) {\n return sleep(0, true);\n }\n if (this.isDead) {\n return sleep(0, false);\n }\n\n /**\n * Already applying more than once,\n * -> wait for the apply queue to be finished.\n */\n if (this._aplQC > 1) {\n return this._aplQ;\n }\n\n /**\n * Add a new apply-run\n */\n var applyRun = function applyRun() {\n /**\n * Optimization shortcuts.\n * Directly return if a previous run\n * has already elected a leader.\n */\n if (_this2.isLeader) {\n return PROMISE_RESOLVED_TRUE;\n }\n var stopCriteria = false;\n var stopCriteriaPromiseResolve;\n /**\n * Resolves when a stop criteria is reached.\n * Uses as a performance shortcut so we do not\n * have to await the responseTime when it is already clear\n * that the election failed.\n */\n var stopCriteriaPromise = new Promise(function (res) {\n stopCriteriaPromiseResolve = function stopCriteriaPromiseResolve() {\n stopCriteria = true;\n res();\n };\n });\n var handleMessage = function handleMessage(msg) {\n if (msg.context === 'leader' && msg.token != _this2.token) {\n if (msg.action === 'apply') {\n // other is applying\n if (msg.token > _this2.token) {\n /**\n * other has higher token\n * -> stop applying and let other become leader.\n */\n stopCriteriaPromiseResolve();\n }\n }\n if (msg.action === 'tell') {\n // other is already leader\n stopCriteriaPromiseResolve();\n _this2._hasLeader = true;\n }\n }\n };\n _this2.broadcastChannel.addEventListener('internal', handleMessage);\n\n /**\n * If the applyOnce() call came from the fallbackInterval,\n * we can assume that the election runs in the background and\n * not critical process is waiting for it.\n * When this is true, we give the other instances\n * more time to answer to messages in the election cycle.\n * This makes it less likely to elect duplicate leaders.\n * But also it takes longer which is not a problem because we anyway\n * run in the background.\n */\n var waitForAnswerTime = isFromFallbackInterval ? _this2._options.responseTime * 4 : _this2._options.responseTime;\n return sendLeaderMessage(_this2, 'apply') // send out that this one is applying\n .then(function () {\n return Promise.race([sleep(waitForAnswerTime), stopCriteriaPromise.then(function () {\n return Promise.reject(new Error());\n })]);\n })\n // send again in case another instance was just created\n .then(function () {\n return sendLeaderMessage(_this2, 'apply');\n })\n // let others time to respond\n .then(function () {\n return Promise.race([sleep(waitForAnswerTime), stopCriteriaPromise.then(function () {\n return Promise.reject(new Error());\n })]);\n })[\"catch\"](function () {}).then(function () {\n _this2.broadcastChannel.removeEventListener('internal', handleMessage);\n if (!stopCriteria) {\n // no stop criteria -> own is leader\n return beLeader(_this2).then(function () {\n return true;\n });\n } else {\n // other is leader\n return false;\n }\n });\n };\n this._aplQC = this._aplQC + 1;\n this._aplQ = this._aplQ.then(function () {\n return applyRun();\n }).then(function () {\n _this2._aplQC = _this2._aplQC - 1;\n });\n return this._aplQ.then(function () {\n return _this2.isLeader;\n });\n },\n awaitLeadership: function awaitLeadership() {\n if ( /* _awaitLeadershipPromise */\n !this._aLP) {\n this._aLP = _awaitLeadershipOnce(this);\n }\n return this._aLP;\n },\n set onduplicate(fn) {\n this._dpL = fn;\n },\n die: function die() {\n var _this3 = this;\n this._lstns.forEach(function (listener) {\n return _this3.broadcastChannel.removeEventListener('internal', listener);\n });\n this._lstns = [];\n this._unl.forEach(function (uFn) {\n return uFn.remove();\n });\n this._unl = [];\n if (this.isLeader) {\n this._hasLeader = false;\n this.isLeader = false;\n }\n this.isDead = true;\n return sendLeaderMessage(this, 'death');\n }\n};\n\n/**\n * @param leaderElector {LeaderElector}\n */\nfunction _awaitLeadershipOnce(leaderElector) {\n if (leaderElector.isLeader) {\n return PROMISE_RESOLVED_VOID;\n }\n return new Promise(function (res) {\n var resolved = false;\n function finish() {\n if (resolved) {\n return;\n }\n resolved = true;\n leaderElector.broadcastChannel.removeEventListener('internal', whenDeathListener);\n res(true);\n }\n\n // try once now\n leaderElector.applyOnce().then(function () {\n if (leaderElector.isLeader) {\n finish();\n }\n });\n\n /**\n * Try on fallbackInterval\n * @recursive\n */\n var tryOnFallBack = function tryOnFallBack() {\n return sleep(leaderElector._options.fallbackInterval).then(function () {\n if (leaderElector.isDead || resolved) {\n return;\n }\n if (leaderElector.isLeader) {\n finish();\n } else {\n return leaderElector.applyOnce(true).then(function () {\n if (leaderElector.isLeader) {\n finish();\n } else {\n tryOnFallBack();\n }\n });\n }\n });\n };\n tryOnFallBack();\n\n // try when other leader dies\n var whenDeathListener = function whenDeathListener(msg) {\n if (msg.context === 'leader' && msg.action === 'death') {\n leaderElector._hasLeader = false;\n leaderElector.applyOnce().then(function () {\n if (leaderElector.isLeader) {\n finish();\n }\n });\n }\n };\n leaderElector.broadcastChannel.addEventListener('internal', whenDeathListener);\n leaderElector._lstns.push(whenDeathListener);\n });\n}\nfunction fillOptionsWithDefaults(options, channel) {\n if (!options) options = {};\n options = JSON.parse(JSON.stringify(options));\n if (!options.fallbackInterval) {\n options.fallbackInterval = 3000;\n }\n if (!options.responseTime) {\n options.responseTime = channel.method.averageResponseTime(channel.options);\n }\n return options;\n}\nexport function createLeaderElection(channel, options) {\n if (channel._leaderElector) {\n throw new Error('BroadcastChannel already has a leader-elector');\n }\n options = fillOptionsWithDefaults(options, channel);\n var elector = supportsWebLockAPI() ? new LeaderElectionWebLock(channel, options) : new LeaderElection(channel, options);\n channel._befC.push(function () {\n return elector.die();\n });\n channel._leaderElector = elector;\n return elector;\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\nimport { BroadcastChannel } from 'broadcast-channel';\nimport { isBrowser } from '../features';\nimport {\n ServiceManagerOptions, ServiceInterface\n} from '../core/types';\nimport {\n Token, Tokens, \n EVENT_ADDED, EVENT_REMOVED, EVENT_RENEWED, EVENT_SET_STORAGE, TokenManagerInterface\n} from '../oidc/types';\nimport { AuthSdkError } from '../errors';\n\nexport type SyncMessage = {\n type: string;\n key?: string;\n token?: Token;\n oldToken?: Token;\n storage?: Tokens;\n};\nexport class SyncStorageService implements ServiceInterface {\n private tokenManager: TokenManagerInterface;\n private options: ServiceManagerOptions;\n private channel?: BroadcastChannel;\n private started = false;\n private enablePostMessage = true;\n\n constructor(tokenManager: TokenManagerInterface, options: ServiceManagerOptions = {}) {\n this.tokenManager = tokenManager;\n this.options = options;\n this.onTokenAddedHandler = this.onTokenAddedHandler.bind(this);\n this.onTokenRemovedHandler = this.onTokenRemovedHandler.bind(this);\n this.onTokenRenewedHandler = this.onTokenRenewedHandler.bind(this);\n this.onSetStorageHandler = this.onSetStorageHandler.bind(this);\n this.onSyncMessageHandler = this.onSyncMessageHandler.bind(this);\n }\n\n requiresLeadership() {\n return false;\n }\n\n isStarted() {\n return this.started;\n }\n\n canStart() {\n return !!this.options.syncStorage && isBrowser() && !this.started;\n }\n\n async start() {\n if (!this.canStart()) {\n return;\n }\n \n const { syncChannelName } = this.options;\n try {\n // BroadcastChannel throws if no supported method can be found\n this.channel = new BroadcastChannel(syncChannelName as string);\n } catch (err) {\n throw new AuthSdkError('SyncStorageService is not supported in current browser.');\n }\n\n this.tokenManager.on(EVENT_ADDED, this.onTokenAddedHandler);\n this.tokenManager.on(EVENT_REMOVED, this.onTokenRemovedHandler);\n this.tokenManager.on(EVENT_RENEWED, this.onTokenRenewedHandler);\n this.tokenManager.on(EVENT_SET_STORAGE, this.onSetStorageHandler);\n this.channel.addEventListener('message', this.onSyncMessageHandler);\n this.started = true;\n }\n\n async stop() {\n if (this.started) {\n this.tokenManager.off(EVENT_ADDED, this.onTokenAddedHandler);\n this.tokenManager.off(EVENT_REMOVED, this.onTokenRemovedHandler);\n this.tokenManager.off(EVENT_RENEWED, this.onTokenRenewedHandler);\n this.tokenManager.off(EVENT_SET_STORAGE, this.onSetStorageHandler);\n this.channel?.removeEventListener('message', this.onSyncMessageHandler);\n await this.channel?.close();\n this.channel = undefined;\n this.started = false;\n }\n }\n\n private onTokenAddedHandler(key: string, token: Token) {\n if (!this.enablePostMessage) {\n return;\n }\n this.channel?.postMessage({\n type: EVENT_ADDED,\n key,\n token\n });\n }\n\n private onTokenRemovedHandler(key: string, token: Token) {\n if (!this.enablePostMessage) {\n return;\n }\n this.channel?.postMessage({\n type: EVENT_REMOVED,\n key,\n token\n });\n }\n\n private onTokenRenewedHandler(key: string, token: Token, oldToken?: Token) {\n if (!this.enablePostMessage) {\n return;\n }\n this.channel?.postMessage({\n type: EVENT_RENEWED,\n key,\n token,\n oldToken\n });\n }\n\n private onSetStorageHandler(storage: Tokens) {\n this.channel?.postMessage({\n type: EVENT_SET_STORAGE,\n storage\n });\n }\n\n /* eslint-disable complexity */\n private onSyncMessageHandler(msg: SyncMessage) {\n // Notes:\n // 1. Using `enablePostMessage` flag here to prevent sync message loop.\n // If this flag is on, tokenManager event handlers do not post sync message.\n // 2. IE11 has known issue with synchronization of LocalStorage cross tabs.\n // One workaround is to set empty event handler for `window.onstorage`.\n // But it's not 100% working, sometimes you still get old value from LocalStorage.\n // Better approch is to explicitly udpate LocalStorage with `setStorage`.\n\n this.enablePostMessage = false;\n switch (msg.type) {\n case EVENT_SET_STORAGE:\n this.tokenManager.getStorage().setStorage(msg.storage);\n break;\n case EVENT_ADDED:\n this.tokenManager.emitAdded(msg.key!, msg.token!);\n this.tokenManager.setExpireEventTimeout(msg.key!, msg.token!);\n break;\n case EVENT_REMOVED:\n this.tokenManager.clearExpireEventTimeout(msg.key!);\n this.tokenManager.emitRemoved(msg.key!, msg.token!);\n break;\n case EVENT_RENEWED:\n this.tokenManager.emitRenewed(msg.key!, msg.token!, msg.oldToken);\n break;\n default:\n break;\n }\n this.enablePostMessage = true;\n }\n} ","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { ServiceInterface, ServiceManagerOptions } from '../core/types';\nimport {\n BroadcastChannel,\n createLeaderElection,\n LeaderElector\n} from 'broadcast-channel';\nimport { isBrowser } from '../features';\n\ndeclare type OnLeaderHandler = (() => Promise);\ndeclare type ServiceOptions = ServiceManagerOptions & {\n onLeader?: OnLeaderHandler;\n};\n\nexport class LeaderElectionService implements ServiceInterface {\n private options: ServiceOptions;\n private channel?: BroadcastChannel;\n private elector?: LeaderElector;\n private started = false;\n\n constructor(options: ServiceOptions = {}) {\n this.options = options;\n this.onLeaderDuplicate = this.onLeaderDuplicate.bind(this);\n this.onLeader = this.onLeader.bind(this);\n }\n\n private onLeaderDuplicate() {\n }\n\n private async onLeader() {\n await this.options.onLeader?.();\n }\n\n isLeader() {\n return !!this.elector?.isLeader;\n }\n\n hasLeader() {\n return !!this.elector?.hasLeader;\n }\n\n async start() {\n if (this.canStart()) {\n const { electionChannelName } = this.options;\n this.channel = new BroadcastChannel(electionChannelName as string);\n this.elector = createLeaderElection(this.channel);\n this.elector.onduplicate = this.onLeaderDuplicate;\n this.elector.awaitLeadership().then(this.onLeader);\n this.started = true;\n }\n }\n\n async stop() {\n if (this.started) {\n if (this.elector) {\n await this.elector.die();\n this.elector = undefined;\n }\n if (this.channel) {\n // Workaround to fix error `Failed to execute 'postMessage' on 'BroadcastChannel': Channel is closed`\n (this.channel as any).postInternal = () => Promise.resolve();\n await this.channel.close();\n this.channel = undefined;\n }\n this.started = false;\n }\n }\n\n requiresLeadership() {\n return false;\n }\n\n isStarted() {\n return this.started;\n }\n\n canStart() {\n return isBrowser() && !this.started;\n }\n\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport {\n OAuthTransactionMeta,\n OAuthStorageManagerInterface,\n} from '../../oidc';\n\nimport {\n ServiceManagerInterface,\n ServiceInterface,\n ServiceManagerOptions,\n OktaAuthCoreInterface,\n OktaAuthCoreOptions\n} from '../types';\nimport { AutoRenewService, SyncStorageService, LeaderElectionService } from '../../services';\nimport { removeNils } from '../../util';\n\nconst AUTO_RENEW = 'autoRenew';\nconst SYNC_STORAGE = 'syncStorage';\nconst LEADER_ELECTION = 'leaderElection';\n\nexport class ServiceManager\n<\n M extends OAuthTransactionMeta,\n S extends OAuthStorageManagerInterface,\n O extends OktaAuthCoreOptions\n>\nimplements ServiceManagerInterface \n{\n private sdk: OktaAuthCoreInterface;\n private options: ServiceManagerOptions;\n private services: Map;\n private started: boolean;\n\n private static knownServices = [AUTO_RENEW, SYNC_STORAGE, LEADER_ELECTION];\n\n private static defaultOptions = {\n autoRenew: true,\n autoRemove: true,\n syncStorage: true\n };\n\n constructor(sdk: OktaAuthCoreInterface, options: ServiceManagerOptions = {}) {\n this.sdk = sdk;\n this.onLeader = this.onLeader.bind(this);\n\n // TODO: backwards compatibility, remove in next major version - OKTA-473815\n const { autoRenew, autoRemove, syncStorage } = sdk.tokenManager.getOptions();\n options.electionChannelName = options.electionChannelName || options.broadcastChannelName;\n this.options = Object.assign({}, \n ServiceManager.defaultOptions,\n { autoRenew, autoRemove, syncStorage }, \n {\n electionChannelName: `${sdk.options.clientId}-election`,\n syncChannelName: `${sdk.options.clientId}-sync`,\n },\n removeNils(options)\n );\n\n this.started = false;\n this.services = new Map();\n\n ServiceManager.knownServices.forEach(name => {\n const svc = this.createService(name);\n if (svc) {\n this.services.set(name, svc);\n }\n });\n }\n\n private async onLeader() {\n if (this.started) {\n // Start services that requires leadership\n await this.startServices();\n }\n }\n\n isLeader() {\n return (this.getService(LEADER_ELECTION) as LeaderElectionService)?.isLeader();\n }\n\n isLeaderRequired() {\n return [...this.services.values()].some(srv => srv.canStart() && srv.requiresLeadership());\n }\n\n async start() {\n if (this.started) {\n return; // noop if services have already started\n }\n await this.startServices();\n this.started = true;\n }\n \n async stop() {\n await this.stopServices();\n this.started = false;\n }\n\n getService(name: string): ServiceInterface | undefined {\n return this.services.get(name);\n }\n\n private async startServices() {\n for (const [name, srv] of this.services.entries()) {\n if (this.canStartService(name, srv)) {\n await srv.start();\n }\n }\n }\n\n private async stopServices() {\n for (const srv of this.services.values()) {\n await srv.stop();\n }\n }\n\n // eslint-disable-next-line complexity\n private canStartService(name: string, srv: ServiceInterface): boolean {\n let canStart = srv.canStart() && !srv.isStarted();\n // only start election if a leader is required\n if (name === LEADER_ELECTION) {\n canStart &&= this.isLeaderRequired();\n } else if (srv.requiresLeadership()) {\n canStart &&= this.isLeader();\n }\n return canStart;\n }\n\n private createService(name: string): ServiceInterface {\n const tokenManager = this.sdk.tokenManager;\n\n let service: ServiceInterface;\n switch (name) {\n case LEADER_ELECTION:\n service = new LeaderElectionService({...this.options, onLeader: this.onLeader});\n break;\n case AUTO_RENEW:\n service = new AutoRenewService(tokenManager, {...this.options});\n break;\n case SYNC_STORAGE:\n service = new SyncStorageService(tokenManager, {...this.options});\n break;\n default:\n throw new Error(`Unknown service ${name}`);\n }\n return service;\n }\n\n}\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/* global window */\nimport { omit, getLink, toQueryString } from '../util';\nimport { get, post, httpRequest } from '../http';\n\nfunction sessionExists(sdk) {\n return sdk.session.get()\n .then(function(res) {\n if (res.status === 'ACTIVE') {\n return true;\n }\n return false;\n })\n .catch(function() {\n return false;\n });\n}\n\nfunction getSession(sdk) { \n return get(sdk, '/api/v1/sessions/me', { withCredentials: true })\n .then(function(session) {\n var res = omit(session, '_links');\n\n res.refresh = function() {\n return post(sdk, getLink(session, 'refresh').href, {}, { withCredentials: true });\n };\n\n res.user = function() {\n return get(sdk, getLink(session, 'user').href, { withCredentials: true });\n };\n\n return res;\n })\n .catch(function() {\n // Return INACTIVE status on failure\n return {status: 'INACTIVE'};\n });\n}\n\nfunction closeSession(sdk) {\n return httpRequest(sdk, {\n url: sdk.getIssuerOrigin() + '/api/v1/sessions/me',\n method: 'DELETE',\n withCredentials: true\n });\n}\n\nfunction refreshSession(sdk) {\n return post(sdk, '/api/v1/sessions/me/lifecycle/refresh', {}, { withCredentials: true });\n}\n\nfunction setCookieAndRedirect(sdk, sessionToken, redirectUrl) {\n redirectUrl = redirectUrl || window.location.href;\n window.location.assign(sdk.getIssuerOrigin() + '/login/sessionCookieRedirect' +\n toQueryString({\n checkAccountSetupComplete: true,\n token: sessionToken,\n redirectUrl: redirectUrl\n }));\n}\n\nexport {\n sessionExists,\n getSession,\n closeSession,\n refreshSession,\n setCookieAndRedirect\n};\n","import { OktaAuthHttpInterface, OktaAuthHttpOptions } from '../http/types';\nimport { OktaAuthConstructor } from '../base/types';\nimport { createSessionApi } from './factory';\nimport {\n OktaAuthSessionInterface, SessionAPI,\n} from './types';\nimport { StorageManagerInterface } from '../storage/types';\n\nexport function mixinSession\n<\n S extends StorageManagerInterface = StorageManagerInterface,\n O extends OktaAuthHttpOptions = OktaAuthHttpOptions,\n TBase extends OktaAuthConstructor>\n = OktaAuthConstructor>\n>\n(Base: TBase): TBase & OktaAuthConstructor>\n{\n return class OktaAuthSession extends Base implements OktaAuthSessionInterface\n {\n session: SessionAPI;\n\n constructor(...args: any[]) {\n super(...args);\n\n this.session = createSessionApi(this);\n }\n\n // Ends the current Okta SSO session without redirecting to Okta.\n closeSession(): Promise {\n return this.session.close() // DELETE /api/v1/sessions/me\n .then(async () => {\n // Clear all local tokens\n this.clearStorage();\n return true;\n })\n .catch(function(e) {\n if (e.name === 'AuthApiError' && e.errorCode === 'E0000007') {\n // Session does not exist or has already been closed\n return false;\n }\n throw e;\n });\n }\n };\n}\n","import { SessionAPI } from './types';\nimport { closeSession, getSession, refreshSession, sessionExists, setCookieAndRedirect } from './api';\nimport { OktaAuthBaseInterface } from '../base/types';\n\nexport function createSessionApi(sdk: OktaAuthBaseInterface): SessionAPI {\n const session = {\n close: closeSession.bind(null, sdk),\n exists: sessionExists.bind(null, sdk),\n get: getSession.bind(null, sdk),\n refresh: refreshSession.bind(null, sdk),\n setCookieAndRedirect: setCookieAndRedirect.bind(null, sdk)\n };\n return session;\n}\n","import { StorageManagerConstructor } from '../storage/types';\nimport { OktaAuthConstructor, OktaAuthOptionsConstructor } from '../base/types';\n\nimport { OktaAuthCoreInterface, OktaAuthCoreOptions } from './types';\nimport { createOktaAuthBase } from '../base';\nimport { mixinStorage } from '../storage/mixin';\nimport { mixinHttp } from '../http/mixin';\nimport { mixinOAuth } from '../oidc/mixin';\nimport {\n OAuthStorageManagerInterface,\n PKCETransactionMeta,\n TransactionManagerConstructor,\n TransactionManagerInterface\n} from '../oidc/types';\nimport { mixinCore } from './mixin';\nimport { mixinSession } from '../session/mixin';\n\nexport function createOktaAuthCore<\n M extends PKCETransactionMeta = PKCETransactionMeta,\n S extends OAuthStorageManagerInterface = OAuthStorageManagerInterface,\n O extends OktaAuthCoreOptions = OktaAuthCoreOptions,\n TM extends TransactionManagerInterface = TransactionManagerInterface\n>(\n StorageManagerConstructor: StorageManagerConstructor,\n OptionsConstructor: OktaAuthOptionsConstructor,\n TransactionManagerConstructor: TransactionManagerConstructor\n): OktaAuthConstructor>\n{\n const Base = createOktaAuthBase(OptionsConstructor);\n const WithStorage = mixinStorage(Base, StorageManagerConstructor);\n const WithHttp = mixinHttp(WithStorage);\n const WithSession = mixinSession(WithHttp);\n const WithOAuth = mixinOAuth(WithSession, TransactionManagerConstructor);\n const Core = mixinCore(WithOAuth);\n return Core;\n}\n","\n\n// Do not use this type in code, so it won't be emitted in the declaration output\nimport { removeNils } from '../util';\n\nimport * as features from '../features';\nimport * as constants from '../constants';\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore \n// Do not use this type in code, so it won't be emitted in the declaration output\nimport Emitter from 'tiny-emitter';\n\nimport {\n EventEmitter,\n OktaAuthConstructor,\n OktaAuthBaseInterface,\n OktaAuthBaseOptions,\n OktaAuthOptionsConstructor, \n FeaturesAPI,\n} from './types';\n\nexport function createOktaAuthBase\n<\n O extends OktaAuthBaseOptions = OktaAuthBaseOptions,\n>\n(\n OptionsConstructor: OktaAuthOptionsConstructor\n): OktaAuthConstructor>\n{\n class OktaAuthBase implements OktaAuthBaseInterface\n {\n options: O;\n emitter: EventEmitter;\n features: FeaturesAPI;\n static features: FeaturesAPI = features;\n static constants = constants;\n \n constructor(...args: any[]) {\n const options = new OptionsConstructor(args.length ? args[0] || {} : {});\n this.options = removeNils(options) as O; // clear out undefined values\n this.emitter = new Emitter();\n this.features = features;\n }\n }\n\n // Hoist feature detection functions to prototype & static type\n OktaAuthBase.features = OktaAuthBase.prototype.features = features;\n\n // Also hoist constants for CommonJS users\n Object.assign(OktaAuthBase, {\n constants\n });\n\n return OktaAuthBase;\n}\n","import { OktaAuthBaseInterface, OktaAuthConstructor } from '../base/types';\nimport {\n OktaAuthStorageInterface,\n OktaAuthStorageOptions,\n StorageManagerConstructor,\n StorageManagerInterface,\n} from './types';\n\nexport function mixinStorage\n<\n S extends StorageManagerInterface = StorageManagerInterface,\n O extends OktaAuthStorageOptions = OktaAuthStorageOptions,\n TBase extends OktaAuthConstructor> = OktaAuthConstructor>\n>\n(\n Base: TBase, StorageManager: StorageManagerConstructor\n): TBase & OktaAuthConstructor>\n{\n return class OktaAuthStorage extends Base implements OktaAuthStorageInterface\n {\n storageManager: S;\n constructor(...args: any[]) {\n super(...args);\n const { storageManager, cookies, storageUtil } = this.options;\n this.storageManager = new StorageManager(storageManager!, cookies!, storageUtil!);\n }\n clearStorage(): void {\n // override in subclass\n }\n };\n}\n","import { OktaAuthStorageInterface, StorageManagerInterface } from '../storage/types';\nimport { OktaAuthConstructor } from '../base/types';\nimport {\n HttpAPI,\n OktaAuthHttpInterface,\n OktaAuthHttpOptions,\n} from './types';\nimport { OktaUserAgent } from './OktaUserAgent';\nimport { setRequestHeader } from './headers';\nimport { toQueryString } from '../util';\nimport { get } from './request';\n\nexport function mixinHttp\n<\n S extends StorageManagerInterface = StorageManagerInterface,\n O extends OktaAuthHttpOptions = OktaAuthHttpOptions,\n TBase extends OktaAuthConstructor>\n = OktaAuthConstructor>\n>\n(Base: TBase): TBase & OktaAuthConstructor>\n{\n return class OktaAuthHttp extends Base implements OktaAuthHttpInterface\n {\n _oktaUserAgent: OktaUserAgent;\n http: HttpAPI;\n \n constructor(...args: any[]) {\n super(...args);\n\n this._oktaUserAgent = new OktaUserAgent();\n\n // HTTP\n this.http = {\n setRequestHeader: setRequestHeader.bind(null, this)\n };\n }\n\n setHeaders(headers) {\n this.options.headers = Object.assign({}, this.options.headers, headers);\n }\n \n getIssuerOrigin(): string {\n // Infer the URL from the issuer URL, omitting the /oauth2/{authServerId}\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.options.issuer!.split('/oauth2/')[0];\n }\n \n webfinger(opts): Promise {\n var url = '/.well-known/webfinger' + toQueryString(opts);\n var options = {\n headers: {\n 'Accept': 'application/jrd+json'\n }\n };\n return get(this, url, options);\n }\n };\n}\n","import { parseOAuthResponseFromUrl } from '../oidc/parseFromUrl';\nimport { OktaAuthConstructor } from '../base/types';\nimport {\n OAuthStorageManagerInterface,\n OAuthTransactionMeta,\n OktaAuthOAuthInterface,\n PKCETransactionMeta,\n Tokens,\n TransactionManagerInterface,\n} from '../oidc/types';\nimport { AuthStateManager } from './AuthStateManager';\nimport { ServiceManager } from './ServiceManager';\nimport { OktaAuthCoreInterface, OktaAuthCoreOptions } from './types';\n\nexport function mixinCore\n<\n M extends OAuthTransactionMeta = PKCETransactionMeta,\n S extends OAuthStorageManagerInterface = OAuthStorageManagerInterface,\n O extends OktaAuthCoreOptions = OktaAuthCoreOptions,\n TM extends TransactionManagerInterface = TransactionManagerInterface,\n TBase extends OktaAuthConstructor>\n = OktaAuthConstructor>\n>\n(Base: TBase): TBase & OktaAuthConstructor>\n{\n return class OktaAuthCore extends Base implements OktaAuthCoreInterface\n {\n authStateManager: AuthStateManager;\n serviceManager: ServiceManager;\n \n constructor(...args: any[]) {\n super(...args);\n\n // AuthStateManager\n this.authStateManager = new AuthStateManager(this);\n\n // ServiceManager\n this.serviceManager = new ServiceManager(this, this.options.services);\n }\n\n async start() {\n await this.serviceManager.start();\n // TODO: review tokenManager.start\n this.tokenManager.start();\n if (!this.token.isLoginRedirect()) {\n await this.authStateManager.updateAuthState();\n }\n }\n \n async stop() {\n // TODO: review tokenManager.stop\n this.tokenManager.stop();\n await this.serviceManager.stop();\n }\n\n async handleRedirect(originalUri?: string): Promise {\n await this.handleLoginRedirect(undefined, originalUri);\n }\n\n // eslint-disable-next-line complexity\n async handleLoginRedirect(tokens?: Tokens, originalUri?: string): Promise {\n let state = this.options.state;\n \n // Store tokens and update AuthState by the emitted events\n if (tokens) {\n this.tokenManager.setTokens(tokens);\n originalUri = originalUri || this.getOriginalUri(this.options.state);\n } else if (this.isLoginRedirect()) {\n try {\n // For redirect flow, get state from the URL and use it to retrieve the originalUri\n const oAuthResponse = await parseOAuthResponseFromUrl(this, {});\n state = oAuthResponse.state;\n originalUri = originalUri || this.getOriginalUri(state);\n await this.storeTokensFromRedirect();\n } catch(e) {\n // auth state should be updated\n await this.authStateManager.updateAuthState();\n throw e;\n }\n } else {\n return; // nothing to do\n }\n \n // ensure auth state has been updated\n await this.authStateManager.updateAuthState();\n \n // clear originalUri from storage\n this.removeOriginalUri(state);\n \n // Redirect to originalUri\n const { restoreOriginalUri } = this.options;\n if (restoreOriginalUri) {\n await restoreOriginalUri(this, originalUri);\n } else if (originalUri) {\n window.location.replace(originalUri);\n }\n }\n };\n}\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\nimport { base64UrlToBuffer, bufferToBase64Url } from '../crypto/base64';\nimport {\n ActivationData,\n ChallengeData,\n IdxAuthenticator,\n} from './types';\n\n\n// Get known credentials from list of enrolled authenticators\nconst getEnrolledCredentials = (authenticatorEnrollments: IdxAuthenticator[] = []) => {\n const credentials: PublicKeyCredentialDescriptor[] = [];\n authenticatorEnrollments.forEach((enrollement) => {\n if (enrollement.key === 'webauthn') {\n credentials.push({\n type: 'public-key',\n id: base64UrlToBuffer(enrollement.credentialId),\n });\n }\n });\n return credentials;\n};\n\n// Build options for navigator.credentials.create\n// https://developer.mozilla.org/en-US/docs/Web/API/CredentialsContainer/create\nexport const buildCredentialCreationOptions = (\n activationData: ActivationData, authenticatorEnrollments: IdxAuthenticator[]\n) => {\n return {\n publicKey: {\n rp: activationData.rp,\n user: {\n id: base64UrlToBuffer(activationData.user.id),\n name: activationData.user.name,\n displayName: activationData.user.displayName\n },\n challenge: base64UrlToBuffer(activationData.challenge),\n pubKeyCredParams: activationData.pubKeyCredParams,\n attestation: activationData.attestation,\n authenticatorSelection: activationData.authenticatorSelection,\n excludeCredentials: getEnrolledCredentials(authenticatorEnrollments),\n }\n } as CredentialCreationOptions;\n};\n\n\n// Build options for navigator.credentials.get\n// https://developer.mozilla.org/en-US/docs/Web/API/CredentialsContainer/get\nexport const buildCredentialRequestOptions = (\n challengeData: ChallengeData, authenticatorEnrollments: IdxAuthenticator[]\n) => {\n return {\n publicKey: {\n challenge: base64UrlToBuffer(challengeData.challenge),\n userVerification: challengeData.userVerification,\n allowCredentials: getEnrolledCredentials(authenticatorEnrollments),\n }\n } as CredentialRequestOptions;\n};\n\n// Build attestation for webauthn enroll\n// https://developer.mozilla.org/en-US/docs/Web/API/AuthenticatorAttestationResponse\nexport const getAttestation = (credential: PublicKeyCredential) => {\n const response = credential.response as AuthenticatorAttestationResponse;\n const id = credential.id;\n const clientData = bufferToBase64Url(response.clientDataJSON);\n const attestation = bufferToBase64Url(response.attestationObject);\n return {\n id,\n clientData,\n attestation\n };\n};\n\n// Build assertion for webauthn verification\n// https://developer.mozilla.org/en-US/docs/Web/API/AuthenticatorAssertionResponse\nexport const getAssertion = (credential: PublicKeyCredential) => {\n const response = credential.response as AuthenticatorAssertionResponse;\n const id = credential.id;\n const clientData = bufferToBase64Url(response.clientDataJSON);\n const authenticatorData = bufferToBase64Url(response.authenticatorData);\n const signatureData = bufferToBase64Url(response.signature);\n return {\n id,\n clientData,\n authenticatorData,\n signatureData\n };\n};\n","/*!\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/* eslint-disable complexity */\nimport { StorageManagerOptions, StorageUtil, OktaAuthStorageOptions } from '../types';\nimport { warn } from '../../util';\n\nimport { default as browserStorage } from '../../browser/browserStorage';\n\nexport function getStorage(): StorageUtil {\n const storageUtil = Object.assign({}, browserStorage, {\n inMemoryStore: {} // create unique storage for this instance\n });\n return storageUtil;\n}\n\nexport const STORAGE_MANAGER_OPTIONS: StorageManagerOptions = {\n token: {\n storageTypes: [\n 'localStorage',\n 'sessionStorage',\n 'cookie'\n ]\n },\n cache: {\n storageTypes: [\n 'localStorage',\n 'sessionStorage',\n 'cookie'\n ]\n },\n transaction: {\n storageTypes: [\n 'sessionStorage',\n 'localStorage',\n 'cookie'\n ]\n },\n 'shared-transaction': {\n storageTypes: [\n 'localStorage'\n ]\n },\n 'original-uri': {\n storageTypes: [\n 'localStorage'\n ]\n }\n};\n\nexport function getCookieSettings(args: OktaAuthStorageOptions = {}, isHTTPS: boolean) {\n // Secure cookies will be automatically used on a HTTPS connection\n // Non-secure cookies will be automatically used on a HTTP connection\n // secure option can override the automatic behavior\n var cookieSettings = args.cookies || {};\n if (typeof cookieSettings.secure === 'undefined') {\n cookieSettings.secure = isHTTPS;\n }\n if (typeof cookieSettings.sameSite === 'undefined') {\n cookieSettings.sameSite = cookieSettings.secure ? 'none' : 'lax';\n }\n\n // If secure=true, but the connection is not HTTPS, set secure=false.\n if (cookieSettings.secure && !isHTTPS) {\n // eslint-disable-next-line no-console\n warn(\n 'The current page is not being served with the HTTPS protocol.\\n' +\n 'For security reasons, we strongly recommend using HTTPS.\\n' +\n 'If you cannot use HTTPS, set \"cookies.secure\" option to false.'\n );\n cookieSettings.secure = false;\n }\n\n // Chrome >= 80 will block cookies with SameSite=None unless they are also Secure\n // If sameSite=none, but the connection is not HTTPS, set sameSite=lax.\n if (cookieSettings.sameSite === 'none' && !cookieSettings.secure) {\n cookieSettings.sameSite = 'lax';\n }\n\n return cookieSettings;\n}\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\nimport { createBaseOptionsConstructor } from '../../base';\nimport { CookieOptions, OktaAuthStorageOptions, StorageManagerOptions, StorageUtil } from '../types';\nimport { getStorage, STORAGE_MANAGER_OPTIONS, getCookieSettings } from './node';\nimport { isHTTPS } from '../../features';\n\nexport function createStorageOptionsConstructor() {\n\n const BaseOptionsConstructor = createBaseOptionsConstructor();\n return class StorageOptionsConstructor extends BaseOptionsConstructor implements Required {\n cookies: CookieOptions;\n storageUtil: StorageUtil;\n storageManager: StorageManagerOptions;\n \n constructor(args: any) {\n super(args);\n this.cookies = getCookieSettings(args, isHTTPS())!;\n this.storageUtil = args.storageUtil || getStorage();\n this.storageManager = { ...STORAGE_MANAGER_OPTIONS, ...args.storageManager };\n }\n };\n}\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\nimport { OktaAuthBaseOptions } from './types';\n\nexport function createBaseOptionsConstructor() {\n\n return class BaseOptionsConstructor implements Required {\n devMode: boolean;\n\n constructor(args: any) {\n this.devMode = !!args.devMode;\n }\n };\n\n}\n","/*!\n * Copyright (c) 2018-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 crossFetch from 'cross-fetch';\nimport { FetchOptions, HttpResponse } from '../http/types';\n\n// content-type = application/json OR application/ion+json\nconst appJsonContentTypeRegex = /application\\/\\w*\\+?json/;\n\nfunction readData(response: Response): Promise {\n if (response.headers.get('Content-Type') &&\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n response.headers.get('Content-Type')!.toLowerCase().indexOf('application/json') >= 0) {\n return response.json()\n // JSON parse can fail if response is not a valid object\n .catch(e => {\n return {\n error: e,\n errorSummary: 'Could not parse server response'\n };\n });\n } else {\n return response.text();\n }\n}\n\nfunction formatResult(status: number, data: object | string, response: Response) {\n const isObject = typeof data === 'object';\n const headers = {};\n for (const pair of (response.headers as any).entries()) {\n headers[pair[0]] = pair[1];\n }\n const result: HttpResponse = {\n responseText: isObject ? JSON.stringify(data) : data as string,\n status: status,\n headers\n };\n if (isObject) {\n result.responseType = 'json';\n result.responseJSON = data as object;\n }\n return result;\n}\n\n/* eslint-disable complexity */\nfunction fetchRequest(method: string, url: string, args: FetchOptions) {\n var body = args.data;\n var headers = args.headers || {};\n var contentType = (headers['Content-Type'] || headers['content-type'] || '');\n\n if (body && typeof body !== 'string') {\n // JSON encode body (if appropriate)\n if (appJsonContentTypeRegex.test(contentType)) {\n body = JSON.stringify(body);\n }\n else if (contentType === 'application/x-www-form-urlencoded') {\n body = Object.entries(body)\n .map( ([param, value]) => `${param}=${encodeURIComponent(value)}` )\n .join('&');\n }\n }\n\n var fetch = global.fetch || crossFetch;\n var fetchPromise = fetch(url, {\n method: method,\n headers: args.headers,\n body: body as string,\n credentials: args.withCredentials ? 'include' : 'omit'\n });\n\n if (!fetchPromise.finally) {\n fetchPromise = Promise.resolve(fetchPromise);\n }\n\n return fetchPromise.then(function(response) {\n var error = !response.ok;\n var status = response.status;\n return readData(response)\n .then(data => {\n return formatResult(status, data, response);\n })\n .then(result => {\n if (error || result.responseJSON?.error) {\n // Throwing result object since error handling is done in http.js\n throw result;\n }\n return result;\n });\n });\n}\n\nexport default fetchRequest;\n","export const enableSharedStorage = true;\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\nimport { DEFAULT_MAX_CLOCK_SKEW } from '../../constants';\nimport { removeTrailingSlash, toAbsoluteUrl } from '../../util/url';\nimport { isBrowser } from '../../features';\nimport { createHttpOptionsConstructor } from '../../http/options';\nimport {\n OAuthResponseMode,\n OAuthResponseType,\n OktaAuthOAuthInterface,\n OktaAuthOAuthOptions,\n SetLocationFunction,\n TokenManagerOptions,\n TransactionManagerOptions\n} from '../types';\nimport { enableSharedStorage } from './node';\nimport AuthSdkError from '../../errors/AuthSdkError';\n\nfunction assertValidConfig(args) {\n args = args || {};\n\n var scopes = args.scopes;\n if (scopes && !Array.isArray(scopes)) {\n throw new AuthSdkError('scopes must be a array of strings. ' +\n 'Required usage: new OktaAuth({scopes: [\"openid\", \"email\"]})');\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n var issuer = args.issuer!;\n if (!issuer) {\n throw new AuthSdkError('No issuer passed to constructor. ' + \n 'Required usage: new OktaAuth({issuer: \"https://{yourOktaDomain}.com/oauth2/{authServerId}\"})');\n }\n\n var isUrlRegex = new RegExp('^http?s?://.+');\n if (!isUrlRegex.test(issuer)) {\n throw new AuthSdkError('Issuer must be a valid URL. ' + \n 'Required usage: new OktaAuth({issuer: \"https://{yourOktaDomain}.com/oauth2/{authServerId}\"})');\n }\n\n if (issuer.indexOf('-admin.') !== -1) {\n throw new AuthSdkError('Issuer URL passed to constructor contains \"-admin\" in subdomain. ' +\n 'Required usage: new OktaAuth({issuer: \"https://{yourOktaDomain}.com})');\n }\n}\n\nexport function createOAuthOptionsConstructor() {\n const HttpOptionsConstructor = createHttpOptionsConstructor();\n return class OAuthOptionsConstructor\n extends HttpOptionsConstructor\n implements Required\n {\n // CustomUrls\n issuer: string;\n authorizeUrl: string;\n userinfoUrl: string;\n tokenUrl: string;\n revokeUrl: string;\n logoutUrl: string;\n \n // TokenParams\n pkce: boolean;\n clientId: string;\n redirectUri: string;\n responseType: OAuthResponseType | OAuthResponseType[];\n responseMode: OAuthResponseMode;\n state: string;\n scopes: string[];\n ignoreSignature: boolean;\n codeChallenge: string;\n codeChallengeMethod: string;\n acrValues: string;\n maxAge: string | number;\n\n // Additional options\n tokenManager: TokenManagerOptions;\n postLogoutRedirectUri: string;\n restoreOriginalUri: (oktaAuth: OktaAuthOAuthInterface, originalUri?: string) => Promise;\n transactionManager: TransactionManagerOptions;\n\n // For server-side web applications ONLY!\n clientSecret: string;\n setLocation: SetLocationFunction;\n\n // Workaround for bad client time/clock\n ignoreLifetime: boolean;\n maxClockSkew: number;\n\n\n // eslint-disable-next-line max-statements\n constructor(options: any) {\n super(options);\n \n assertValidConfig(options);\n \n this.issuer = removeTrailingSlash(options.issuer);\n this.tokenUrl = removeTrailingSlash(options.tokenUrl);\n this.authorizeUrl = removeTrailingSlash(options.authorizeUrl);\n this.userinfoUrl = removeTrailingSlash(options.userinfoUrl);\n this.revokeUrl = removeTrailingSlash(options.revokeUrl);\n this.logoutUrl = removeTrailingSlash(options.logoutUrl);\n\n this.pkce = options.pkce === false ? false : true; // PKCE defaults to true\n this.clientId = options.clientId;\n this.redirectUri = options.redirectUri;\n if (isBrowser()) {\n this.redirectUri = toAbsoluteUrl(options.redirectUri, window.location.origin); // allow relative URIs\n }\n this.responseType = options.responseType;\n this.responseMode = options.responseMode;\n this.state = options.state;\n this.scopes = options.scopes;\n // Give the developer the ability to disable token signature validation.\n this.ignoreSignature = !!options.ignoreSignature;\n this.codeChallenge = options.codeChallenge;\n this.codeChallengeMethod = options.codeChallengeMethod;\n this.acrValues = options.acrValues;\n this.maxAge = options.maxAge;\n\n this.tokenManager = options.tokenManager;\n this.postLogoutRedirectUri = options.postLogoutRedirectUri;\n this.restoreOriginalUri = options.restoreOriginalUri;\n this.transactionManager = { enableSharedStorage, ...options.transactionManager };\n \n this.clientSecret = options.clientSecret;\n this.setLocation = options.setLocation;\n \n // As some end user's devices can have their date \n // and time incorrectly set, allow for the disabling\n // of the jwt liftetime validation\n this.ignoreLifetime = !!options.ignoreLifetime;\n\n // Digital clocks will drift over time, so the server\n // can misalign with the time reported by the browser.\n // The maxClockSkew allows relaxing the time-based\n // validation of tokens (in seconds, not milliseconds).\n // It currently defaults to 300, because 5 min is the\n // default maximum tolerance allowed by Kerberos.\n // (https://technet.microsoft.com/en-us/library/cc976357.aspx)\n if (!options.maxClockSkew && options.maxClockSkew !== 0) {\n this.maxClockSkew = DEFAULT_MAX_CLOCK_SKEW;\n } else {\n this.maxClockSkew = options.maxClockSkew;\n }\n\n }\n };\n}\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\nimport { createStorageOptionsConstructor } from '../storage';\nimport { HttpRequestClient, OktaAuthHttpOptions, RequestOptions } from './types';\nimport fetchRequest from '../fetch/fetchRequest';\n\nexport function createHttpOptionsConstructor() {\n const StorageOptionsConstructor = createStorageOptionsConstructor();\n return class HttpOptionsConstructor extends StorageOptionsConstructor implements Required {\n issuer: string;\n transformErrorXHR: (xhr: object) => any;\n headers: object;\n httpRequestClient: HttpRequestClient;\n httpRequestInterceptors: ((request: RequestOptions) => void)[];\n \n constructor(args: any) {\n super(args);\n this.issuer = args.issuer;\n this.transformErrorXHR = args.transformErrorXHR;\n this.headers = args.headers;\n this.httpRequestClient = args.httpRequestClient || fetchRequest;\n this.httpRequestInterceptors = args.httpRequestInterceptors;\n }\n };\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\nimport AuthSdkError from '../errors/AuthSdkError';\nimport { StorageProvider, SimpleStorage } from './types';\n\n// formerly known as \"storageBuilder\". Represents an object saved under a key/name.\nexport class SavedObject implements StorageProvider {\n storageProvider: SimpleStorage;\n storageName: string;\n\n constructor(storage: SimpleStorage, storageName: string) {\n if (!storage) {\n throw new AuthSdkError('\"storage\" is required');\n }\n\n if (typeof storageName !== 'string' || !storageName.length) {\n throw new AuthSdkError('\"storageName\" is required');\n }\n\n this.storageName = storageName;\n this.storageProvider = storage;\n }\n\n //\n // SimpleStorage interface\n //\n\n getItem(key: string) {\n return this.getStorage()[key];\n }\n\n setItem(key: string, value: any) {\n return this.updateStorage(key, value);\n }\n\n removeItem(key: string) {\n return this.clearStorage(key);\n }\n\n //\n // StorageProvider interface\n //\n\n getStorage() {\n var storageString = this.storageProvider.getItem(this.storageName);\n storageString = storageString || '{}';\n try {\n return JSON.parse(storageString);\n } catch(e) {\n throw new AuthSdkError('Unable to parse storage string: ' + this.storageName);\n }\n }\n\n setStorage(obj?: any) {\n try {\n var storageString = obj ? JSON.stringify(obj) : '{}';\n this.storageProvider.setItem(this.storageName, storageString);\n } catch(e) {\n throw new AuthSdkError('Unable to set storage: ' + this.storageName);\n }\n }\n\n clearStorage(key?: string) {\n if (!key) {\n // clear all\n if (this.storageProvider.removeItem) {\n this.storageProvider.removeItem(this.storageName);\n } else {\n this.setStorage();\n }\n return;\n }\n\n var obj = this.getStorage();\n delete obj[key];\n this.setStorage(obj);\n }\n\n updateStorage(key, value) {\n var obj = this.getStorage();\n obj[key] = value;\n this.setStorage(obj);\n }\n}\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\nimport {\n TOKEN_STORAGE_NAME,\n CACHE_STORAGE_NAME,\n} from '../constants';\nimport {\n StorageUtil,\n StorageProvider,\n StorageOptions,\n CookieOptions,\n StorageManagerOptions,\n SimpleStorage,\n StorageManagerInterface\n} from './types';\nimport { SavedObject } from './SavedObject';\nimport { isBrowser } from '../features';\nimport { warn } from '../util';\n\nexport function logServerSideMemoryStorageWarning(options: StorageOptions) {\n if (!isBrowser() && !options.storageProvider && !options.storageKey) {\n // eslint-disable-next-line max-len\n warn('Memory storage can only support simple single user use case on server side, please provide custom storageProvider or storageKey if advanced scenarios need to be supported.');\n }\n}\n\n\nexport class BaseStorageManager implements StorageManagerInterface {\n storageManagerOptions: StorageManagerOptions;\n cookieOptions: CookieOptions;\n storageUtil: StorageUtil;\n\n constructor(storageManagerOptions: StorageManagerOptions, cookieOptions: CookieOptions, storageUtil: StorageUtil) {\n this.storageManagerOptions = storageManagerOptions;\n this.cookieOptions = cookieOptions;\n this.storageUtil = storageUtil;\n }\n\n // combines defaults in order\n getOptionsForSection(sectionName: string, overrideOptions?: StorageOptions) {\n return Object.assign({}, this.storageManagerOptions[sectionName], overrideOptions);\n }\n \n // generic method to get any available storage provider\n // eslint-disable-next-line complexity\n getStorage(options: StorageOptions): SimpleStorage {\n options = Object.assign({}, this.cookieOptions, options); // set defaults\n\n if (options.storageProvider) {\n return options.storageProvider;\n }\n\n let { storageType, storageTypes } = options;\n\n if(storageType === 'sessionStorage') {\n options.sessionCookie = true;\n }\n\n // If both storageType and storageTypes are specified, then storageType will be used first\n // If storageType cannot be used but it matches an entry in storageTypes, subsequent entries may be used as fallback\n // if storageType does not match an entry in storageTypes then storageType is used with no fallback.\n if (storageType && storageTypes) {\n const idx = storageTypes.indexOf(storageType);\n if (idx >= 0) {\n storageTypes = storageTypes.slice(idx);\n storageType = undefined;\n }\n }\n\n if (!storageType) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n storageType = this.storageUtil.findStorageType(storageTypes!);\n }\n return this.storageUtil.getStorageByType(storageType, options);\n }\n\n // access_token, id_token, refresh_token\n getTokenStorage(options?: StorageOptions): StorageProvider {\n options = this.getOptionsForSection('token', options);\n logServerSideMemoryStorageWarning(options);\n const storage = this.getStorage(options);\n const storageKey = options.storageKey || TOKEN_STORAGE_NAME;\n return new SavedObject(storage, storageKey);\n }\n\n // caches well-known response, among others\n getHttpCache(options?: StorageOptions): StorageProvider {\n options = this.getOptionsForSection('cache', options);\n const storage = this.getStorage(options);\n const storageKey = options.storageKey || CACHE_STORAGE_NAME;\n return new SavedObject(storage, storageKey);\n }\n\n}\n","import { createOAuthStorageManager } from '../oidc/storage';\nimport { PKCETransactionMeta } from '../oidc/types';\n\nexport function createCoreStorageManager() {\n return createOAuthStorageManager();\n}\n","import {\n CookieOptions,\n StorageManagerOptions,\n StorageOptions,\n StorageUtil\n} from '../storage/types';\nimport { BaseStorageManager, logServerSideMemoryStorageWarning } from '../storage/BaseStorageManager';\nimport { TransactionStorage, OAuthTransactionMeta, OAuthStorageManagerInterface, PKCETransactionMeta } from './types';\nimport { SavedObject } from '../storage';\nimport { ORIGINAL_URI_STORAGE_NAME, SHARED_TRANSACTION_STORAGE_NAME, TRANSACTION_STORAGE_NAME } from '../constants';\n\n\nexport function createOAuthStorageManager()\n{\n return class OAuthStorageManager\n extends BaseStorageManager\n implements OAuthStorageManagerInterface\n {\n constructor(storageManagerOptions: StorageManagerOptions, cookieOptions: CookieOptions, storageUtil: StorageUtil) {\n super(storageManagerOptions, cookieOptions, storageUtil);\n }\n\n getTransactionStorage(options?: StorageOptions): TransactionStorage {\n options = this.getOptionsForSection('transaction', options);\n logServerSideMemoryStorageWarning(options);\n const storage = this.getStorage(options);\n const storageKey = options.storageKey || TRANSACTION_STORAGE_NAME;\n return new SavedObject(storage, storageKey);\n }\n\n getSharedTansactionStorage(options?: StorageOptions): TransactionStorage {\n options = this.getOptionsForSection('shared-transaction', options);\n logServerSideMemoryStorageWarning(options);\n const storage = this.getStorage(options);\n const storageKey = options.storageKey || SHARED_TRANSACTION_STORAGE_NAME;\n return new SavedObject(storage, storageKey);\n }\n\n getOriginalUriStorage(options?: StorageOptions): TransactionStorage {\n options = this.getOptionsForSection('original-uri', options);\n logServerSideMemoryStorageWarning(options);\n const storage = this.getStorage(options);\n const storageKey = options.storageKey || ORIGINAL_URI_STORAGE_NAME;\n return new SavedObject(storage, storageKey);\n }\n };\n\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { IdxTransactionMeta } from '../../idx/types/meta';\nimport { OAuthTransactionMeta, PKCETransactionMeta } from './meta';\nimport { OAuthStorageManagerInterface } from './storage';\n\nexport interface TransactionManagerOptions\n{\n storageManager?: OAuthStorageManagerInterface;\n enableSharedStorage?: boolean; // default true\n saveNonceCookie?: boolean; // default true\n saveStateCookie?: boolean; // default true\n saveParamsCookie?: boolean; // default true\n saveLastResponse?: boolean; // default true\n}\n\n\nexport type CustomAuthTransactionMeta = Record;\n\nexport type TransactionMeta =\n IdxTransactionMeta |\n PKCETransactionMeta |\n OAuthTransactionMeta |\n CustomAuthTransactionMeta;\n\n\nfunction isObjectWithProperties(obj) {\n if (!obj || typeof obj !== 'object' || Object.values(obj).length === 0) {\n return false;\n }\n return true;\n}\n\nexport function isOAuthTransactionMeta(obj: any): obj is OAuthTransactionMeta {\n if (!isObjectWithProperties(obj)) {\n return false;\n }\n return !!obj.redirectUri || !!obj.responseType;\n}\n\nexport function isPKCETransactionMeta(obj: any): obj is PKCETransactionMeta {\n if (!isOAuthTransactionMeta(obj)) {\n return false;\n }\n return !!(obj as any).codeVerifier;\n}\n\nexport function isIdxTransactionMeta(obj: any): obj is IdxTransactionMeta {\n if (!isPKCETransactionMeta(obj)) {\n return false;\n }\n return !!(obj as any).interactionHandle;\n}\n\nexport function isCustomAuthTransactionMeta(obj: any): obj is CustomAuthTransactionMeta {\n if (!isObjectWithProperties(obj)) {\n return false;\n }\n const isAllStringValues = Object.values(obj).find((value) => (typeof value !== 'string')) === undefined;\n return isAllStringValues;\n}\n\nexport function isTransactionMeta(obj: any): obj is TransactionMeta {\n if (isOAuthTransactionMeta(obj) || isCustomAuthTransactionMeta(obj)) {\n return true;\n }\n return false;\n}\n","import { OAuthStorageManagerInterface, OAuthTransactionMeta, isTransactionMeta } from '../types';\n\nconst MAX_ENTRY_LIFETIME = 30 * 60 * 1000; // 30 minutes\n\nexport function pruneSharedStorage(storageManager: OAuthStorageManagerInterface) {\n const sharedStorage = storageManager.getSharedTansactionStorage();\n const entries = sharedStorage.getStorage();\n Object.keys(entries).forEach(state => {\n const entry = entries[state];\n const age = Date.now() - entry.dateCreated;\n if (age > MAX_ENTRY_LIFETIME) {\n delete entries[state];\n }\n });\n sharedStorage.setStorage(entries);\n}\n\nexport function saveTransactionToSharedStorage(\n storageManager: OAuthStorageManagerInterface, state: string, meta: M\n) {\n const sharedStorage = storageManager.getSharedTansactionStorage();\n const entries = sharedStorage.getStorage();\n entries[state] = {\n dateCreated: Date.now(),\n transaction: meta\n };\n sharedStorage.setStorage(entries);\n}\n\n\nexport function loadTransactionFromSharedStorage(\n storageManager: OAuthStorageManagerInterface, state: string\n) {\n const sharedStorage = storageManager.getSharedTansactionStorage();\n const entries = sharedStorage.getStorage();\n const entry = entries[state];\n if (entry && entry.transaction && isTransactionMeta(entry.transaction)) {\n return entry.transaction;\n }\n return null;\n}\n\nexport function clearTransactionFromSharedStorage(\n storageManager: OAuthStorageManagerInterface, state: string\n) {\n const sharedStorage = storageManager.getSharedTansactionStorage();\n const entries = sharedStorage.getStorage();\n delete entries[state];\n sharedStorage.setStorage(entries);\n}\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\nimport { StorageProvider } from '../storage/types';\nimport {\n TransactionMeta,\n isTransactionMeta,\n TransactionMetaOptions,\n TransactionManagerOptions,\n OAuthTransactionMeta,\n OAuthStorageManagerInterface,\n ClearTransactionMetaOptions,\n TransactionManagerInterface,\n PKCETransactionMeta\n} from './types';\nimport { warn } from '../util';\nimport {\n clearTransactionFromSharedStorage,\n loadTransactionFromSharedStorage,\n pruneSharedStorage,\n saveTransactionToSharedStorage\n} from './util/sharedStorage';\n\n\nexport function createTransactionManager\n<\n M extends OAuthTransactionMeta = PKCETransactionMeta,\n S extends OAuthStorageManagerInterface = OAuthStorageManagerInterface\n>\n()\n{\n return class TransactionManager implements TransactionManagerInterface\n {\n options: TransactionManagerOptions;\n storageManager: S;\n enableSharedStorage: boolean;\n saveLastResponse: boolean;\n\n constructor(options: TransactionManagerOptions) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.storageManager = options.storageManager! as S;\n this.enableSharedStorage = options.enableSharedStorage === false ? false : true;\n this.saveLastResponse = options.saveLastResponse === false ? false : true;\n this.options = options;\n }\n\n // eslint-disable-next-line complexity\n clear(options: ClearTransactionMetaOptions = {}) {\n const transactionStorage: StorageProvider = this.storageManager.getTransactionStorage();\n const meta = transactionStorage.getStorage();\n\n // Clear primary storage (by default, sessionStorage on browser)\n transactionStorage.clearStorage();\n\n // Usually we want to also clear shared storage unless another tab may need it to continue/complete a flow\n if (this.enableSharedStorage && options.clearSharedStorage !== false) {\n const state = options.state || meta?.state;\n if (state) {\n clearTransactionFromSharedStorage(this.storageManager, state);\n }\n }\n }\n\n // eslint-disable-next-line complexity\n save(meta: M, options: TransactionMetaOptions = {}) {\n // There must be only one transaction executing at a time.\n // Before saving, check to see if a transaction is already stored.\n // An existing transaction indicates a concurrency/race/overlap condition\n\n let storage: StorageProvider = this.storageManager.getTransactionStorage();\n const obj = storage.getStorage();\n // oie process may need to update transaction in the middle of process for tracking purpose\n // false alarm might be caused \n // TODO: revisit for a better solution, https://oktainc.atlassian.net/browse/OKTA-430919\n if (isTransactionMeta(obj) && !options.muteWarning) {\n // eslint-disable-next-line max-len\n warn('a saved auth transaction exists in storage. This may indicate another auth flow is already in progress.');\n }\n\n storage.setStorage(meta);\n\n // Shared storage allows continuation of transaction in another tab\n if (this.enableSharedStorage && meta.state) {\n saveTransactionToSharedStorage(this.storageManager, meta.state, meta);\n }\n }\n\n exists(options: TransactionMetaOptions = {}): boolean {\n try {\n const meta = this.load(options);\n return !!meta;\n } catch {\n return false;\n }\n }\n\n // load transaction meta from storage\n // eslint-disable-next-line complexity,max-statements\n load(options: TransactionMetaOptions = {}): TransactionMeta | null {\n\n let meta: TransactionMeta;\n\n // If state was passed, try loading transaction data from shared storage\n if (this.enableSharedStorage && options.state) {\n pruneSharedStorage(this.storageManager); // prune before load\n meta = loadTransactionFromSharedStorage(this.storageManager, options.state);\n if (isTransactionMeta(meta)) {\n return meta;\n }\n }\n\n let storage: StorageProvider = this.storageManager.getTransactionStorage();\n meta = storage.getStorage();\n if (isTransactionMeta(meta)) {\n // if we have meta in the new location, there is no need to go further\n return meta;\n }\n\n return null;\n }\n\n };\n}\n","import { OktaAuthHttpInterface } from '../../http/types';\n\nexport type TransactionLink = {\n href: string;\n hints?: {\n allow?: string[];\n };\n}\n\nexport type TransactionLinks = {\n self: TransactionLink;\n [property: string]: TransactionLink;\n}\n\ntype TransactionOptions = {\n // TODO: move res type to http module\n res: {\n headers: Record;\n _links?: Record;\n [property: string]: unknown;\n };\n accessToken: string;\n};\n\nexport default class BaseTransaction {\n // Deprecated\n headers?: Record;\n\n constructor(oktaAuth: OktaAuthHttpInterface, options: TransactionOptions) {\n const { res } = options;\n const { headers, ...rest } = res;\n \n // assign required fields from res\n if (headers) {\n this.headers = headers;\n }\n\n // add all rest fields from res\n Object.keys(rest).forEach(key => {\n if (key === '_links') {\n return;\n }\n this[key] = rest[key];\n });\n }\n}\n\nexport interface TransactionType extends Function {\n new (oktaAuth: OktaAuthHttpInterface, options: TransactionOptions): T;\n prototype: T;\n}\n","import { \n default as BaseTransaction,\n TransactionType,\n TransactionLinks\n} from './transactions/Base';\nimport { httpRequest } from '../http';\nimport { AuthSdkError } from '../errors';\nimport { MyAccountRequestOptions as RequestOptions } from './types';\nimport { OktaAuthOAuthInterface } from '../oidc/types';\n\ntype SendRequestOptions = RequestOptions & {\n url: string;\n method: string;\n}\n\n/* eslint-disable complexity */\nexport async function sendRequest<\n T extends BaseTransaction = BaseTransaction,\n N extends 'plural' | 'single' = 'single',\n NT = N extends 'plural' ? T[] : T\n> (\n oktaAuth: OktaAuthOAuthInterface, \n options: SendRequestOptions,\n TransactionClass: TransactionType = BaseTransaction as TransactionType,\n): Promise {\n const {\n accessToken: accessTokenObj\n } = oktaAuth.tokenManager.getTokensSync();\n \n const accessToken = options.accessToken || accessTokenObj?.accessToken;\n const issuer = oktaAuth.getIssuerOrigin();\n const { url, method, payload } = options;\n const requestUrl = url.startsWith(issuer!) ? url : `${issuer}${url}`;\n\n if (!accessToken) {\n throw new AuthSdkError('AccessToken is required to request MyAccount API endpoints.');\n }\n \n const res = await httpRequest(oktaAuth, {\n headers: { 'Accept': '*/*;okta-version=1.0.0' },\n accessToken,\n url: requestUrl,\n method,\n ...(payload && { args: payload })\n });\n\n let ret: T | T[];\n if (Array.isArray(res)) {\n ret = res.map(item => new TransactionClass(oktaAuth, { \n res: item, \n accessToken\n }));\n } else {\n ret = new TransactionClass(oktaAuth, { \n res, \n accessToken\n });\n }\n return ret as NT;\n}\n/* eslint-enable complexity */\n\nexport type GenerateRequestFnFromLinksOptions = {\n oktaAuth: OktaAuthOAuthInterface;\n accessToken: string;\n methodName: string;\n links: TransactionLinks;\n}\n\ntype IRequestFnFromLinks = (payload?) => Promise;\n\nexport function generateRequestFnFromLinks(\n {\n oktaAuth, \n accessToken,\n methodName,\n links,\n }: GenerateRequestFnFromLinksOptions,\n TransactionClass: TransactionType = BaseTransaction as TransactionType,\n): IRequestFnFromLinks {\n for (const method of ['GET', 'POST', 'PUT', 'DELETE']) {\n if (method.toLowerCase() === methodName) {\n const link = links.self;\n return (async (payload?) => sendRequest(oktaAuth, {\n accessToken,\n url: link.href,\n method,\n payload,\n }, TransactionClass));\n }\n }\n \n const link = links[methodName];\n if (!link) {\n throw new AuthSdkError(`No link is found with methodName: ${methodName}`);\n }\n\n return (async (payload?) => sendRequest(oktaAuth, {\n accessToken,\n url: link.href,\n method: link.hints!.allow![0],\n payload,\n }, TransactionClass));\n}\n","import BaseTransaction from './Base';\n\nexport default class ProfileTransaction extends BaseTransaction {\n createdAt: string;\n modifiedAt: string;\n profile: Record;\n\n constructor(oktaAuth, options) {\n super(oktaAuth, options);\n\n const { createdAt, modifiedAt, profile } = options.res;\n this.createdAt = createdAt;\n this.modifiedAt = modifiedAt;\n this.profile = profile;\n }\n}\n","import BaseTransaction from './Base';\n\nexport default class ProfileSchemaTransaction extends BaseTransaction {\n properties: Record;\n\n constructor(oktaAuth, options) {\n super(oktaAuth, options);\n\n this.properties = options.res.properties;\n }\n}\n","import {\n OAuthStorageManagerInterface,\n OAuthTransactionMeta,\n OktaAuthOAuthInterface,\n OktaAuthOAuthOptions,\n PKCETransactionMeta\n} from '../oidc/types';\n\nexport type { \n EmailTransaction, \n EmailStatusTransaction,\n EmailChallengeTransaction,\n PhoneTransaction,\n ProfileTransaction,\n ProfileSchemaTransaction,\n PasswordTransaction,\n BaseTransaction\n} from './transactions';\n\nexport enum EmailRole {\n PRIMARY = 'PRIMARY',\n SECONDARY = 'SECONDARY'\n}\n\nexport enum Status {\n VERIFIED = 'VERIFIED',\n UNVERIFIED = 'UNVERIFIED'\n}\n\nexport enum PasswordStatus {\n NOT_ENROLLED = 'NOT_ENROLLED',\n ACTIVE = 'ACTIVE'\n}\n\nexport type EmailProfile = {\n email: string;\n}\n\nexport type AddEmailPayload = {\n profile: {\n email: string;\n };\n sendEmail: boolean;\n role: EmailRole;\n}\n\nexport type PhoneProfile = {\n profile: {\n phoneNumber: string;\n };\n}\n\nexport type AddPhonePayload = {\n profile: {\n phoneNumber: string;\n };\n sendCode: boolean;\n method: string;\n};\n\nexport type ChallengePhonePayload = {\n method: string;\n}\n\nexport type VerificationPayload = {\n verificationCode: string;\n};\n\nexport type EnrollPasswordPayload = {\n profile: {\n password: string;\n }\n}\n\nexport type UpdatePasswordPayload = {\n profile: {\n password: string;\n currentPassword?: string;\n }\n}\n\nexport type UpdateProfilePayload = {\n profile: {\n firstName?: string;\n lastName?: string;\n email?: string;\n login?: string;\n [property: string]: any;\n };\n};\n\nexport type MyAccountRequestOptions = {\n id?: string;\n emailId?: string;\n challengeId?: string;\n payload?: AddEmailPayload \n | AddPhonePayload \n | ChallengePhonePayload\n | VerificationPayload \n | UpdateProfilePayload\n | EnrollPasswordPayload\n | UpdatePasswordPayload;\n accessToken?: string;\n}\n\nexport type IAPIFunction = (\n oktaAuth: OktaAuthOAuthInterface, \n options?: MyAccountRequestOptions\n) => Promise;\n\nexport interface OktaAuthMyAccountInterface\n<\n M extends OAuthTransactionMeta = PKCETransactionMeta,\n S extends OAuthStorageManagerInterface = OAuthStorageManagerInterface,\n O extends OktaAuthOAuthOptions = OktaAuthOAuthOptions\n> \n extends OktaAuthOAuthInterface\n{\n myaccount;\n}\n","import { sendRequest } from './request';\nimport { IAPIFunction } from './types';\nimport {\n ProfileTransaction,\n ProfileSchemaTransaction\n} from './transactions';\n\n/**\n * @scope: okta.myAccount.profile.read\n */\nexport const getProfile: IAPIFunction = async (oktaAuth, options?) => {\n const transaction = await sendRequest(oktaAuth, {\n url: '/idp/myaccount/profile',\n method: 'GET',\n accessToken: options?.accessToken,\n }, ProfileTransaction);\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.profile.manage\n */\nexport const updateProfile: IAPIFunction = async (\n oktaAuth, \n options\n) => {\n const { payload, accessToken } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: '/idp/myaccount/profile',\n method: 'PUT',\n payload,\n accessToken,\n }, ProfileTransaction);\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.profile.read\n */\nexport const getProfileSchema: IAPIFunction = async (\n oktaAuth, \n options?\n): Promise => {\n const transaction = await sendRequest(oktaAuth, {\n url: '/idp/myaccount/profile/schema',\n method: 'GET',\n accessToken: options?.accessToken,\n }, ProfileSchemaTransaction);\n return transaction;\n};\n","import { EmailProfile, Status } from '../types';\nimport BaseTransaction from './Base';\n\nexport default class EmailStatusTransaction extends BaseTransaction {\n id: string;\n expiresAt: string;\n profile: EmailProfile;\n status: Status;\n\n constructor(oktaAuth, options) {\n super(oktaAuth, options);\n\n const { res } = options;\n // assign required fields from res\n const { id, profile, expiresAt, status } = res;\n this.id = id;\n this.expiresAt = expiresAt;\n this.profile = profile;\n this.status = status;\n }\n}\n","import EmailStatusTransaction from './EmailStatusTransaction';\nimport { \n EmailProfile, \n Status,\n VerificationPayload, \n} from '../types';\nimport BaseTransaction from './Base';\nimport { generateRequestFnFromLinks } from '../request';\n\nexport default class EmailChallengeTransaction extends BaseTransaction {\n id: string;\n expiresAt: string;\n profile: EmailProfile;\n status: Status;\n\n poll: () => Promise;\n // eslint-disable-next-line no-use-before-define\n verify: (payload: VerificationPayload) => Promise;\n\n constructor(oktaAuth, options) {\n super(oktaAuth, options);\n\n const { accessToken, res } = options;\n // assign required fields from res\n const { id, expiresAt, profile, status, _links } = res;\n this.id = id;\n this.expiresAt = expiresAt;\n this.profile = profile;\n this.status = status;\n\n // assign transformed fns to transaction\n this.poll = async () => {\n const fn = generateRequestFnFromLinks({ \n oktaAuth, \n accessToken, \n methodName: 'poll', \n links: _links,\n }, EmailStatusTransaction);\n return await fn();\n };\n this.verify = async (payload) => {\n const fn = generateRequestFnFromLinks({ \n oktaAuth, \n accessToken, \n methodName: 'verify', \n links: _links,\n }, EmailChallengeTransaction);\n return await fn(payload);\n };\n }\n}\n","import EmailChallengeTransaction from './EmailChallengeTransaction';\nimport EmailStatusTransaction from './EmailStatusTransaction';\nimport { EmailProfile, EmailRole, Status, VerificationPayload } from '../types';\nimport BaseTransaction from './Base';\nimport { generateRequestFnFromLinks } from '../request';\n\nexport default class EmailTransaction extends BaseTransaction {\n id: string;\n profile: EmailProfile;\n roles: EmailRole[];\n status: Status;\n\n // eslint-disable-next-line no-use-before-define\n get: () => Promise;\n delete: () => Promise;\n challenge: () => Promise;\n poll?: () => Promise;\n verify?: (payload: VerificationPayload) => Promise;\n\n constructor(oktaAuth, options) {\n super(oktaAuth, options);\n\n const { accessToken, res } = options;\n // assign required fields from res\n const { id, profile, roles, status, _links } = res;\n this.id = id;\n this.profile = profile;\n this.roles = roles;\n this.status = status;\n\n // assign transformed fns to transaction\n this.get = async () => {\n const fn = generateRequestFnFromLinks({ \n oktaAuth, \n accessToken, \n methodName: 'get', \n links: _links,\n }, EmailTransaction);\n return await fn();\n };\n this.delete = async () => {\n const fn = generateRequestFnFromLinks({ \n oktaAuth, \n accessToken, \n methodName: 'delete', \n links: _links \n });\n return await fn();\n };\n this.challenge = async () => {\n const fn = generateRequestFnFromLinks({ \n oktaAuth, \n accessToken, \n methodName: 'challenge', \n links: _links,\n }, EmailChallengeTransaction);\n return await fn();\n };\n if (_links.poll) {\n this.poll = async () => {\n const fn = generateRequestFnFromLinks({ \n oktaAuth, \n accessToken, \n methodName: 'poll', \n links: _links,\n }, EmailStatusTransaction);\n return await fn();\n };\n }\n if (_links.verify) {\n this.verify = async (payload: VerificationPayload) => {\n const fn = generateRequestFnFromLinks({ \n oktaAuth, \n accessToken, \n methodName: 'verify', \n links: _links,\n });\n return await fn(payload);\n };\n }\n }\n}\n","import { sendRequest } from './request';\nimport { IAPIFunction } from './types';\nimport {\n BaseTransaction, \n EmailTransaction, \n EmailChallengeTransaction \n} from './transactions';\n\n/**\n * @scope: okta.myAccount.email.read\n */\nexport const getEmails: IAPIFunction = async (\n oktaAuth,\n options?\n) => {\n const transaction = await sendRequest(oktaAuth, {\n url: '/idp/myaccount/emails',\n method: 'GET',\n accessToken: options?.accessToken\n }, EmailTransaction);\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.email.read\n */\nexport const getEmail: IAPIFunction = async (\n oktaAuth, \n options\n) => {\n const { id, accessToken } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/emails/${id}`,\n method: 'GET',\n accessToken,\n }, EmailTransaction);\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.email.manage\n */\nexport const addEmail: IAPIFunction = async (\n oktaAuth, \n options\n): Promise => {\n const { accessToken, payload } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: '/idp/myaccount/emails',\n method: 'POST',\n payload,\n accessToken,\n }, EmailTransaction);\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.email.manage\n */\nexport const deleteEmail: IAPIFunction = async (\n oktaAuth, \n options\n) => {\n const { id, accessToken } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/emails/${id}`,\n method: 'DELETE',\n accessToken\n });\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.email.read\n */\nexport const sendEmailChallenge: IAPIFunction = async (\n oktaAuth, \n options\n) => {\n const { id, accessToken } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/emails/${id}/challenge`,\n method: 'POST',\n accessToken,\n }, EmailChallengeTransaction);\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.email.read\n */\nexport const getEmailChallenge: IAPIFunction = async (\n oktaAuth, \n options\n) => {\n const { emailId, challengeId, accessToken } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/emails/${emailId}/challenge/${challengeId}`,\n method: 'POST',\n accessToken,\n }, EmailChallengeTransaction);\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.email.manage\n */\nexport const verifyEmailChallenge: IAPIFunction = async (\n oktaAuth,\n options\n) => {\n const { emailId, challengeId, payload, accessToken } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/emails/${emailId}/challenge/${challengeId}/verify`,\n method: 'POST',\n payload,\n accessToken\n });\n return transaction;\n};\n","import { ChallengePhonePayload, PhoneProfile, Status, VerificationPayload } from '../types';\nimport BaseTransaction from './Base';\nimport { generateRequestFnFromLinks } from '../request';\n\nexport default class PhoneTransaction extends BaseTransaction {\n id: string;\n profile: PhoneProfile;\n status: Status;\n\n // eslint-disable-next-line no-use-before-define\n get: () => Promise;\n delete: () => Promise;\n challenge: (payload: ChallengePhonePayload) => Promise;\n verify?: (payload: VerificationPayload) => Promise;\n\n constructor(oktaAuth, options) {\n super(oktaAuth, options);\n\n const { res, accessToken } = options;\n // assign required fields from res\n const { id, profile, status, _links } = res;\n this.id = id;\n this.profile = profile;\n this.status = status;\n\n // assign transformed fns to transaction\n this.get = async () => {\n const fn = generateRequestFnFromLinks({ \n oktaAuth, \n accessToken, \n methodName: 'get', \n links: _links,\n }, PhoneTransaction);\n return await fn();\n };\n this.delete = async () => {\n const fn = generateRequestFnFromLinks({ \n oktaAuth, \n accessToken, \n methodName: 'delete', \n links: _links \n });\n return await fn();\n };\n this.challenge = async (payload) => {\n const fn = generateRequestFnFromLinks({ \n oktaAuth, \n accessToken, \n methodName: 'challenge', \n links: _links \n });\n return await fn(payload);\n };\n if (_links.verify) {\n this.verify = async (payload) => {\n const fn = generateRequestFnFromLinks({ \n oktaAuth, \n accessToken, \n methodName: 'verify', \n links: _links \n });\n return await fn(payload);\n } ;\n }\n }\n}\n","import { sendRequest } from './request';\nimport { IAPIFunction } from './types';\nimport {\n BaseTransaction, \n PhoneTransaction\n} from './transactions';\n\n/**\n * @scope: okta.myAccount.phone.read\n */\nexport const getPhones: IAPIFunction = async (\n oktaAuth,\n options?\n) => {\n const transaction = await sendRequest(oktaAuth, {\n url: '/idp/myaccount/phones',\n method: 'GET',\n accessToken: options?.accessToken,\n }, PhoneTransaction);\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.phone.read\n */\nexport const getPhone: IAPIFunction = async (\n oktaAuth,\n options\n) => {\n const { accessToken, id } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/phones/${id}`,\n method: 'GET',\n accessToken,\n }, PhoneTransaction);\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.phone.manage\n */\nexport const addPhone: IAPIFunction = async (\n oktaAuth, \n options\n): Promise => {\n const { accessToken, payload } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: '/idp/myaccount/phones',\n method: 'POST',\n payload,\n accessToken,\n }, PhoneTransaction);\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.phone.manage\n */\nexport const deletePhone: IAPIFunction = async (\n oktaAuth, \n options\n) => {\n const { id, accessToken } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/phones/${id}`,\n method: 'DELETE',\n accessToken,\n });\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.phone.manage\n */\nexport const sendPhoneChallenge: IAPIFunction = async (\n oktaAuth, \n options\n) => {\n const { accessToken, id, payload } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/phones/${id}/challenge`,\n method: 'POST',\n payload,\n accessToken\n });\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.phone.manage\n */\nexport const verifyPhoneChallenge: IAPIFunction = async (\n oktaAuth,\n options\n) => {\n const { id, payload, accessToken } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/phones/${id}/verify`,\n method: 'POST',\n payload,\n accessToken\n });\n return transaction;\n};\n","import { EnrollPasswordPayload, UpdatePasswordPayload, PasswordStatus } from '../types';\nimport BaseTransaction from './Base';\nimport { generateRequestFnFromLinks } from '../request';\n\nexport default class PasswordTransaction extends BaseTransaction {\n id: string;\n created: string;\n lastUpdated: string;\n status: PasswordStatus;\n\n // eslint-disable-next-line no-use-before-define\n get?: () => Promise;\n // eslint-disable-next-line no-use-before-define\n enroll?: (payload: EnrollPasswordPayload) => Promise;\n // eslint-disable-next-line no-use-before-define\n update?: (payload: UpdatePasswordPayload) => Promise;\n delete?: () => Promise;\n\n constructor(oktaAuth, options) {\n super(oktaAuth, options);\n\n const { res, accessToken } = options;\n // assign required fields from res\n const { id, status, created, lastUpdated, _links } = res;\n this.id = id;\n this.status = status;\n this.created = created;\n this.lastUpdated = lastUpdated;\n\n // assign transformed fns to transaction\n if (this.status == PasswordStatus.NOT_ENROLLED) {\n this.enroll = async (payload) => {\n const fn = generateRequestFnFromLinks({ \n oktaAuth, \n accessToken, \n methodName: 'enroll',\n links: _links,\n }, PasswordTransaction);\n return await fn(payload);\n };\n }\n else {\n this.get = async () => {\n const fn = generateRequestFnFromLinks({ \n oktaAuth, \n accessToken, \n methodName: 'get',\n links: _links,\n }, PasswordTransaction);\n return await fn();\n };\n\n this.update = async (payload) => {\n const fn = generateRequestFnFromLinks({ \n oktaAuth, \n accessToken, \n methodName: 'put', \n links: _links,\n }, PasswordTransaction);\n return await fn(payload);\n };\n \n this.delete = async () => {\n const fn = generateRequestFnFromLinks({ \n oktaAuth, \n accessToken, \n methodName: 'delete', \n links: _links \n });\n return await fn();\n };\n }\n }\n}\n","import { sendRequest } from './request';\nimport { IAPIFunction } from './types';\nimport {\n BaseTransaction, \n PasswordTransaction\n} from './transactions';\n\n/**\n * @scope: okta.myAccount.password.read\n */\nexport const getPassword: IAPIFunction = async (\n oktaAuth,\n options\n) => {\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/password`,\n method: 'GET',\n accessToken: options?.accessToken,\n }, PasswordTransaction);\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.password.manage\n */\nexport const enrollPassword: IAPIFunction = async (\n oktaAuth, \n options\n): Promise => {\n const { accessToken, payload } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: '/idp/myaccount/password',\n method: 'POST',\n payload,\n accessToken,\n }, PasswordTransaction);\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.password.manage\n */\nexport const updatePassword: IAPIFunction = async (\n oktaAuth, \n options\n): Promise => {\n const { accessToken, payload } = options!;\n const transaction = await sendRequest(oktaAuth, {\n url: '/idp/myaccount/password',\n method: 'PUT',\n payload,\n accessToken,\n }, PasswordTransaction);\n return transaction;\n};\n\n/**\n * @scope: okta.myAccount.password.manage\n */\nexport const deletePassword: IAPIFunction = async (\n oktaAuth, \n options?\n) => {\n const transaction = await sendRequest(oktaAuth, {\n url: `/idp/myaccount/password`,\n method: 'DELETE',\n accessToken: options?.accessToken,\n });\n return transaction;\n};\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\nimport { AuthnTransactionState } from '../types';\n\nexport function addStateToken(res, options?) {\n var builtArgs = {} as AuthnTransactionState;\n Object.assign(builtArgs, options);\n\n // Add the stateToken if one isn't passed and we have one\n if (!builtArgs.stateToken && res.stateToken) {\n builtArgs.stateToken = res.stateToken;\n }\n\n return builtArgs;\n}\n\nexport function getStateToken(res) {\n return addStateToken(res);\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\n/* eslint-disable complexity, max-statements */\nimport { post } from '../http';\nimport AuthSdkError from '../errors/AuthSdkError';\nimport { STATE_TOKEN_KEY_NAME } from '../constants';\nimport { OktaAuthHttpInterface } from '../http/types';\nimport { OktaAuthStorageOptions } from '../storage/types';\nimport { addStateToken } from './util/stateToken';\nimport { AuthnTransactionAPI } from './types';\nimport { OktaAuthBaseInterface } from '../base/types';\n\nexport function transactionStatus(sdk: OktaAuthHttpInterface, args) {\n args = addStateToken(sdk, args);\n return post(sdk, sdk.getIssuerOrigin() + '/api/v1/authn', args, { withCredentials: true });\n}\n\nexport function resumeTransaction(sdk: OktaAuthHttpInterface, tx: AuthnTransactionAPI, args) {\n if (!args || !args.stateToken) {\n var stateToken = getSavedStateToken(sdk);\n if (stateToken) {\n args = {\n stateToken: stateToken\n };\n } else {\n return Promise.reject(new AuthSdkError('No transaction to resume'));\n }\n }\n return transactionStatus(sdk, args)\n .then(function(res) {\n return tx.createTransaction(res);\n });\n}\n\nexport function introspectAuthn (sdk: OktaAuthHttpInterface, tx: AuthnTransactionAPI, args) {\n if (!args || !args.stateToken) {\n var stateToken = getSavedStateToken(sdk);\n if (stateToken) {\n args = {\n stateToken: stateToken\n };\n } else {\n return Promise.reject(new AuthSdkError('No transaction to evaluate'));\n }\n }\n return transactionStep(sdk, args)\n .then(function (res) {\n return tx.createTransaction(res);\n });\n}\n\nexport function transactionStep(sdk: OktaAuthHttpInterface, args) {\n args = addStateToken(sdk, args);\n // v1 pipeline introspect API\n return post(sdk, sdk.getIssuerOrigin() + '/api/v1/authn/introspect', args, { withCredentials: true });\n}\n\nexport function transactionExists(sdk: OktaAuthBaseInterface) {\n // We have a cookie state token\n return !!getSavedStateToken(sdk);\n}\n\nexport function postToTransaction(sdk: OktaAuthHttpInterface, tx: AuthnTransactionAPI, url: string, args, options?) {\n options = Object.assign({ withCredentials: true }, options);\n return post(sdk, url, args, options)\n .then(function(res) {\n return tx.createTransaction(res);\n });\n}\n\nexport function getSavedStateToken(sdk: OktaAuthBaseInterface) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const storage = sdk.options.storageUtil!.storage;\n return storage.get(STATE_TOKEN_KEY_NAME);\n}\n","import { OktaAuthHttpInterface } from '../../http/types';\nimport { find, omit, toQueryString } from '../../util';\nimport AuthSdkError from '../../errors/AuthSdkError';\nimport { get } from '../../http';\nimport { AuthnTransactionAPI, AuthnTransactionState } from '../types';\nimport { postToTransaction } from '../api';\nimport { addStateToken } from './stateToken';\n\n\n// query parameters to post url\ninterface PostToTransactionParams {\n autoPush?: boolean;\n rememberDevice?: boolean;\n updatePhone?: boolean;\n}\n\n// eslint-disable-next-line max-params\nexport function link2fn(sdk: OktaAuthHttpInterface, tx: AuthnTransactionAPI, res, obj, link, ref) {\n if (Array.isArray(link)) {\n return function(name, opts?) {\n if (!name) {\n throw new AuthSdkError('Must provide a link name');\n }\n\n var lk = find(link, {name: name});\n if (!lk) {\n throw new AuthSdkError('No link found for that name');\n }\n\n return link2fn(sdk, tx, res, obj, lk, ref)(opts);\n };\n\n } else if (link.hints &&\n link.hints.allow &&\n link.hints.allow.length === 1) {\n var method = link.hints.allow[0];\n switch (method) {\n\n case 'GET':\n return function() {\n return get(sdk, link.href, { withCredentials: true });\n };\n\n case 'POST':\n // eslint-disable-next-line max-statements,complexity\n return function(opts: AuthnTransactionState) {\n if (ref && ref.isPolling) {\n ref.isPolling = false;\n }\n\n var data = addStateToken(res, opts);\n\n if (res.status === 'MFA_ENROLL' || res.status === 'FACTOR_ENROLL') {\n // Add factorType and provider\n Object.assign(data, {\n factorType: obj.factorType,\n provider: obj.provider\n });\n }\n\n var params = {} as PostToTransactionParams;\n var autoPush = data.autoPush;\n if (autoPush !== undefined) {\n if (typeof autoPush === 'function') {\n try {\n params.autoPush = !!autoPush();\n }\n catch (e) {\n return Promise.reject(new AuthSdkError('AutoPush resulted in an error.'));\n }\n }\n else if (autoPush !== null) {\n params.autoPush = !!autoPush;\n }\n data = omit(data, 'autoPush');\n }\n\n var rememberDevice = data.rememberDevice;\n if (rememberDevice !== undefined) {\n if (typeof rememberDevice === 'function') {\n try {\n params.rememberDevice = !!rememberDevice();\n }\n catch (e) {\n return Promise.reject(new AuthSdkError('RememberDevice resulted in an error.'));\n }\n }\n else if (rememberDevice !== null) {\n params.rememberDevice = !!rememberDevice;\n }\n data = omit(data, 'rememberDevice');\n\n } else if (data.profile &&\n data.profile.updatePhone !== undefined) {\n if (data.profile.updatePhone) {\n params.updatePhone = true;\n }\n data.profile = omit(data.profile, 'updatePhone');\n }\n var href = link.href + toQueryString(params);\n return postToTransaction(sdk, tx, href, data);\n };\n }\n }\n}\n\n\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\nimport CustomError from './CustomError';\n\nexport default class AuthPollStopError extends CustomError {\n constructor() {\n const message = 'The poll was stopped by the sdk';\n super(message);\n }\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\nimport { post } from '../../http';\nimport { isNumber, isObject, getLink, toQueryString, delay as delayFn } from '../../util';\nimport { DEFAULT_POLLING_DELAY } from '../../constants';\nimport AuthSdkError from '../../errors/AuthSdkError';\nimport AuthPollStopError from '../../errors/AuthPollStopError';\nimport { AuthnTransactionState } from '../types';\nimport { getStateToken } from './stateToken';\n\ninterface PollOptions {\n delay?: number;\n rememberDevice?: boolean;\n autoPush?: boolean;\n transactionCallBack?: (AuthnTransactionState) => void;\n}\n\nexport function getPollFn(sdk, res: AuthnTransactionState, ref) {\n return function (options: PollOptions | number) {\n var delay;\n var rememberDevice;\n var autoPush;\n var transactionCallBack;\n\n if (isNumber(options)) {\n delay = options;\n } else if (isObject(options)) {\n options = options as PollOptions;\n delay = options.delay;\n rememberDevice = options.rememberDevice;\n autoPush = options.autoPush;\n transactionCallBack = options.transactionCallBack;\n }\n\n if (!delay && delay !== 0) {\n delay = DEFAULT_POLLING_DELAY;\n }\n\n // Get the poll function\n var pollLink = getLink(res, 'next', 'poll');\n // eslint-disable-next-line complexity\n function pollFn() {\n var opts = {} as PollOptions;\n if (typeof autoPush === 'function') {\n try {\n opts.autoPush = !!autoPush();\n }\n catch (e) {\n return Promise.reject(new AuthSdkError('AutoPush resulted in an error.'));\n }\n }\n else if (autoPush !== undefined && autoPush !== null) {\n opts.autoPush = !!autoPush;\n }\n if (typeof rememberDevice === 'function') {\n try {\n opts.rememberDevice = !!rememberDevice();\n }\n catch (e) {\n return Promise.reject(new AuthSdkError('RememberDevice resulted in an error.'));\n }\n }\n else if (rememberDevice !== undefined && rememberDevice !== null) {\n opts.rememberDevice = !!rememberDevice;\n }\n\n var href = pollLink.href + toQueryString(opts);\n return post(sdk, href, getStateToken(res), {\n saveAuthnState: false,\n withCredentials: true\n });\n }\n\n ref.isPolling = true;\n\n var retryCount = 0;\n var recursivePoll = function () {\n // If the poll was manually stopped during the delay\n if (!ref.isPolling) {\n return Promise.reject(new AuthPollStopError());\n }\n return pollFn()\n .then(function (pollRes) {\n // Reset our retry counter on success\n retryCount = 0;\n\n // If we're still waiting\n if (pollRes.factorResult && pollRes.factorResult === 'WAITING') {\n\n // If the poll was manually stopped while the pollFn was called\n if (!ref.isPolling) {\n throw new AuthPollStopError();\n }\n\n if (typeof transactionCallBack === 'function') {\n transactionCallBack(pollRes);\n }\n\n // Continue poll\n return delayFn(delay).then(recursivePoll);\n\n } else {\n // Any non-waiting result, even if polling was stopped\n // during a request, will return\n ref.isPolling = false;\n return sdk.tx.createTransaction(pollRes);\n }\n })\n .catch(function(err) {\n // Exponential backoff, up to 16 seconds\n if (err.xhr &&\n (err.xhr.status === 0 || err.xhr.status === 429) &&\n retryCount <= 4) {\n var delayLength = Math.pow(2, retryCount) * 1000;\n retryCount++;\n return delayFn(delayLength)\n .then(recursivePoll);\n }\n throw err;\n });\n };\n return recursivePoll()\n .catch(function(err) {\n ref.isPolling = false;\n throw err;\n });\n };\n}\n","/* eslint-disable complexity */\nimport { OktaAuthHttpInterface } from '../../http/types';\nimport { clone, isObject, omit } from '../../util';\nimport { AuthnTransactionAPI } from '../types';\nimport { links2fns } from './links2fns';\n\nexport function flattenEmbedded(sdk: OktaAuthHttpInterface, tx: AuthnTransactionAPI, res, obj, ref) {\n obj = obj || res;\n obj = clone(obj);\n\n if (Array.isArray(obj)) {\n var objArr = [];\n for (var o = 0, ol = obj.length; o < ol; o++) {\n objArr.push(flattenEmbedded(sdk, tx, res, obj[o], ref) as never);\n }\n return objArr;\n }\n\n var embedded = obj._embedded || {};\n\n for (var key in embedded) {\n if (!Object.prototype.hasOwnProperty.call(embedded, key)) {\n continue;\n }\n\n // Flatten any nested _embedded objects\n if (isObject(embedded[key]) || Array.isArray(embedded[key])) {\n embedded[key] = flattenEmbedded(sdk, tx, res, embedded[key], ref);\n }\n }\n\n // Convert any links on the embedded object\n var fns = links2fns(sdk, tx, res, obj, ref);\n Object.assign(embedded, fns);\n\n obj = omit(obj, '_embedded', '_links');\n Object.assign(obj, embedded);\n return obj;\n}\n","import { OktaAuthHttpInterface } from '../../http/types';\nimport { AuthnTransactionFunctions, AuthnTransactionAPI } from '../types';\nimport { link2fn } from './link2fn';\nimport { getPollFn } from './poll';\n\nexport function links2fns(sdk: OktaAuthHttpInterface, tx: AuthnTransactionAPI, res, obj, ref) {\n var fns = {} as AuthnTransactionFunctions;\n for (var linkName in obj._links) {\n if (!Object.prototype.hasOwnProperty.call(obj._links, linkName)) {\n continue;\n }\n\n var link = obj._links[linkName];\n \n if (linkName === 'next') {\n linkName = link.name;\n }\n\n if (link.type) {\n fns[linkName] = link;\n continue;\n }\n\n switch (linkName) {\n // poll is only found at the transaction\n // level, so we don't need to pass the link\n case 'poll':\n fns.poll = getPollFn(sdk, res, ref);\n break;\n\n default:\n var fn = link2fn(sdk, tx, res, obj, link, ref);\n if (fn) {\n fns[linkName] = fn;\n }\n }\n }\n return fns;\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\nimport { OktaAuthHttpInterface } from '../http/types';\nimport {\n AuthnTransactionFunction,\n AuthnTransaction,\n AuthnTransactionAPI,\n AuthnTransactionState\n} from './types';\nimport { flattenEmbedded } from './util/flattenEmbedded';\n\nexport class AuthnTransactionImpl implements AuthnTransaction {\n next?: AuthnTransactionFunction;\n cancel?: AuthnTransactionFunction;\n skip?: AuthnTransactionFunction;\n unlock?: AuthnTransactionFunction;\n changePassword?: AuthnTransactionFunction;\n resetPassword?: AuthnTransactionFunction;\n answer?: AuthnTransactionFunction;\n recovery?: AuthnTransactionFunction;\n verify?: AuthnTransactionFunction;\n resend?: AuthnTransactionFunction;\n activate?: AuthnTransactionFunction;\n poll?: AuthnTransactionFunction;\n prev?: AuthnTransactionFunction;\n\n data?: AuthnTransactionState;\n stateToken?: string;\n sessionToken?: string;\n status: string;\n user?: Record;\n factor?: Record;\n factors?: Array >;\n policy?: Record;\n scopes?: Array >;\n target?: Record;\n authentication?: Record;\n constructor(sdk: OktaAuthHttpInterface, tx: AuthnTransactionAPI, res: AuthnTransactionState | null = null) {\n this.data = undefined;\n this.status = undefined as unknown as string;\n if (res) {\n this.data = res;\n\n // Parse response from Authn V1\n Object.assign(this, flattenEmbedded(sdk, tx, res, res, {}));\n delete this.stateToken;\n\n // RECOVERY_CHALLENGE has some responses without _links.\n // Without _links, we emulate cancel to make it intuitive\n // to return to the starting state. We may remove this\n // when OKTA-75434 is resolved\n if (res.status === 'RECOVERY_CHALLENGE' && !res._links) {\n this.cancel = function() {\n return Promise.resolve(tx.createTransaction());\n };\n }\n }\n }\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n *\n */\n\nimport { RequestData, RequestOptions, OktaAuthHttpInterface } from '../http/types';\nimport {\n introspectAuthn,\n transactionStatus,\n transactionExists,\n resumeTransaction,\n postToTransaction\n} from './api';\nimport { AuthnTransactionImpl } from './AuthnTransactionImpl';\nimport { AuthnTransactionAPI, AuthnTransactionState } from './types';\n\n// Factory\nexport function createAuthnTransactionAPI(sdk: OktaAuthHttpInterface): AuthnTransactionAPI {\n const tx: AuthnTransactionAPI = {\n status: transactionStatus.bind(null, sdk),\n resume(args) {\n return resumeTransaction(sdk, tx, args);\n },\n exists: transactionExists.bind(null, sdk),\n introspect(args) {\n return introspectAuthn(sdk, tx, args);\n },\n createTransaction: (res?: AuthnTransactionState) => {\n return new AuthnTransactionImpl(sdk, tx, res);\n },\n postToTransaction: (url: string, args?: RequestData, options?: RequestOptions) => {\n return postToTransaction(sdk, tx, url, args, options);\n }\n };\n return tx;\n}\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { AuthSdkError } from '../errors';\nimport { isFingerprintSupported } from '../features';\nimport {\n addListener,\n removeListener\n} from '../oidc';\nimport { FingerprintOptions } from '../authn/types';\nimport { OktaAuthHttpInterface } from '../http/types';\n\nexport default function fingerprint(sdk: OktaAuthHttpInterface, options?: FingerprintOptions): Promise {\n options = options || {};\n\n if (!isFingerprintSupported()) {\n return Promise.reject(new AuthSdkError('Fingerprinting is not supported on this device'));\n }\n\n var timeout;\n var iframe;\n var listener;\n var promise = new Promise(function (resolve, reject) {\n iframe = document.createElement('iframe');\n iframe.style.display = 'none';\n\n // eslint-disable-next-line complexity\n listener = function listener(e) {\n if (!e || !e.data || e.origin !== sdk.getIssuerOrigin()) {\n return;\n }\n\n try {\n var msg = JSON.parse(e.data);\n } catch (err) {\n // iframe messages should all be parsable\n // skip not parsable messages come from other sources in same origin (browser extensions)\n // TODO: add namespace flag in okta-core to distinguish messages that come from other sources\n return;\n }\n\n if (!msg) { return; }\n if (msg.type === 'FingerprintAvailable') {\n return resolve(msg.fingerprint as string);\n }\n if (msg.type === 'FingerprintServiceReady') {\n e.source.postMessage(JSON.stringify({\n type: 'GetFingerprint'\n }), e.origin);\n }\n };\n addListener(window, 'message', listener);\n\n iframe.src = sdk.getIssuerOrigin() + '/auth/services/devicefingerprint';\n document.body.appendChild(iframe);\n\n timeout = setTimeout(function() {\n reject(new AuthSdkError('Fingerprinting timed out'));\n }, options?.timeout || 15000);\n });\n\n return promise.finally(function() {\n clearTimeout(timeout);\n removeListener(window, 'message', listener);\n if (document.body.contains(iframe)) {\n iframe.parentElement.removeChild(iframe);\n }\n }) as Promise;\n}\n","import {\n OktaAuthOptionsConstructor,\n} from '../base';\n\nimport {\n IdxStorageManagerConstructor,\n IdxTransactionManagerConstructor,\n OktaAuthIdxOptions,\n createIdxTransactionManager,\n createOktaAuthIdx,\n createIdxStorageManager,\n createIdxOptionsConstructor\n} from '../idx';\n\nimport { mixinMyAccount } from '../myaccount';\nimport { mixinAuthn } from '../authn';\n\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface OktaAuthOptions extends OktaAuthIdxOptions {}\n\nconst OptionsConstructor: OktaAuthOptionsConstructor = createIdxOptionsConstructor();\nconst StorageManager: IdxStorageManagerConstructor = createIdxStorageManager();\nconst TransactionManager: IdxTransactionManagerConstructor = createIdxTransactionManager();\n\n// Default bundle includes everything\nconst WithIdx = createOktaAuthIdx(StorageManager, OptionsConstructor, TransactionManager);\nconst WithMyAccount = mixinMyAccount(WithIdx);\nconst WithAuthn = mixinAuthn(WithMyAccount);\n\nclass OktaAuth extends WithAuthn {\n constructor(options: OktaAuthOptions) {\n super(options);\n }\n}\n\nexport default OktaAuth;\nexport { OktaAuth };\nexport * from './common';\nexport * from '../idx';\nexport * from '../myaccount';\nexport * from '../authn';\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\nimport { createCoreOptionsConstructor } from '../core/options';\nimport { FlowIdentifier } from './types/FlowIdentifier';\nimport { OktaAuthIdxOptions } from './types/options';\n\n\nexport function createIdxOptionsConstructor() {\n const CoreOptionsConstructor = createCoreOptionsConstructor();\n return class IdxOptionsConstructor\n extends CoreOptionsConstructor \n implements Required\n {\n flow: FlowIdentifier;\n activationToken: string;\n recoveryToken: string;\n \n // BETA WARNING: configs in this section are subject to change without a breaking change notice\n idx: {\n useGenericRemediator?: boolean;\n exchangeCodeForTokens?: boolean;\n };\n \n constructor(options: any) {\n super(options);\n \n this.flow = options.flow;\n this.activationToken = options.activationToken;\n this.recoveryToken = options.recoveryToken;\n this.idx = options.idx;\n }\n };\n \n}\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\nimport { createOAuthOptionsConstructor } from '../oidc';\nimport { AuthState, OktaAuthCoreInterface, OktaAuthCoreOptions, ServiceManagerOptions } from './types';\n\n\nexport function createCoreOptionsConstructor()\n{\n const OAuthOptionsConstructor = createOAuthOptionsConstructor();\n return class CoreOptionsConstructor\n extends OAuthOptionsConstructor\n implements Required\n {\n services: ServiceManagerOptions;\n transformAuthState: (oktaAuth: OktaAuthCoreInterface, authState: AuthState) => Promise;\n\n constructor(options: any) {\n super(options);\n this.services = options.services;\n this.transformAuthState = options.transformAuthState;\n }\n };\n}\n","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()\n{\n const CoreStorageManager = createCoreStorageManager();\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","import { createOktaAuthCore } from '../../core/factory';\nimport { OktaAuthOptionsConstructor } from '../../base/types';\nimport { StorageManagerConstructor } from '../../storage/types';\nimport { IdxTransactionManagerInterface, OktaAuthIdxInterface, OktaAuthIdxConstructor } from '../types/api';\nimport { IdxTransactionMeta } from '../types/meta';\nimport { IdxStorageManagerInterface } from '../types/storage';\nimport { OktaAuthIdxOptions } from '../types/options';\nimport { mixinIdx } from '../mixin';\nimport { TransactionManagerConstructor } from '../../oidc/types';\nimport { OktaAuthCoreInterface } from '../../core/types';\n\nexport function createOktaAuthIdx<\n M extends IdxTransactionMeta = IdxTransactionMeta,\n S extends IdxStorageManagerInterface = IdxStorageManagerInterface,\n O extends OktaAuthIdxOptions = OktaAuthIdxOptions,\n TM extends IdxTransactionManagerInterface = IdxTransactionManagerInterface\n>(\n StorageManagerConstructor: StorageManagerConstructor,\n OptionsConstructor: OktaAuthOptionsConstructor,\n TransactionManagerConstructor: TransactionManagerConstructor\n)\n: OktaAuthIdxConstructor & OktaAuthCoreInterface>\n{\n const Core = createOktaAuthCore(\n StorageManagerConstructor,\n OptionsConstructor,\n TransactionManagerConstructor\n );\n const WithIdx = mixinIdx(Core);\n return WithIdx;\n}\n","import { OktaAuthConstructor } from '../base/types';\nimport { OktaAuthOAuthInterface } from '../oidc/types';\nimport {\n IdxAPI, \n IdxTransactionManagerInterface, \n OktaAuthIdxInterface, \n OktaAuthIdxConstructor, \n OktaAuthIdxOptions, \n WebauthnAPI\n} from './types';\nimport { IdxTransactionMeta } from './types/meta';\nimport { IdxStorageManagerInterface } from './types/storage';\nimport { createIdxAPI } from './factory/api';\nimport * as webauthn from './webauthn';\n\nexport function mixinIdx\n<\n M extends IdxTransactionMeta = IdxTransactionMeta,\n S extends IdxStorageManagerInterface = IdxStorageManagerInterface,\n O extends OktaAuthIdxOptions = OktaAuthIdxOptions,\n TM extends IdxTransactionManagerInterface = IdxTransactionManagerInterface,\n TBase extends OktaAuthConstructor>\n = OktaAuthConstructor>\n>\n(Base: TBase): TBase & OktaAuthIdxConstructor>\n{\n return class OktaAuthIdx extends Base implements OktaAuthIdxInterface\n {\n idx: IdxAPI;\n static webauthn: WebauthnAPI = webauthn;\n \n constructor(...args: any[]) {\n super(...args);\n this.idx = createIdxAPI(this);\n }\n };\n}\n","import { ClearTransactionMetaOptions, TransactionManagerOptions } from '../oidc/types';\nimport { createTransactionManager } from '../oidc/TransactionManager';\nimport { IdxTransactionMeta, IntrospectOptions } from './types';\nimport { isRawIdxResponse } from './types/idx-js';\nimport { IdxStorageManagerInterface, SavedIdxResponse } from './types/storage';\n\nexport function createIdxTransactionManager\n<\n M extends IdxTransactionMeta = IdxTransactionMeta,\n S extends IdxStorageManagerInterface = IdxStorageManagerInterface\n>\n()\n{\n const TransactionManager = createTransactionManager();\n return class IdxTransactionManager extends TransactionManager\n {\n constructor(options: TransactionManagerOptions) {\n super(options);\n }\n\n clear(options: ClearTransactionMetaOptions = {}) {\n super.clear(options);\n\n if (options.clearIdxResponse !== false) {\n this.clearIdxResponse();\n }\n }\n \n saveIdxResponse(data: SavedIdxResponse): void {\n if (!this.saveLastResponse) {\n return;\n }\n const storage = this.storageManager.getIdxResponseStorage();\n if (!storage) {\n return;\n }\n storage.setStorage(data);\n }\n\n // eslint-disable-next-line complexity\n loadIdxResponse(options?: IntrospectOptions): SavedIdxResponse | null {\n if (!this.saveLastResponse) {\n return null;\n }\n const storage = this.storageManager.getIdxResponseStorage();\n if (!storage) {\n return null;\n }\n const storedValue = storage.getStorage();\n if (!storedValue || !isRawIdxResponse(storedValue.rawIdxResponse)) {\n return null;\n }\n\n if (options) {\n const { interactionHandle } = options;\n if (interactionHandle && storedValue.interactionHandle !== interactionHandle) {\n return null;\n }\n }\n\n return storedValue;\n }\n\n clearIdxResponse(): void {\n if (!this.saveLastResponse) {\n return;\n }\n const storage = this.storageManager.getIdxResponseStorage();\n storage?.clearStorage();\n }\n };\n}\n","import { OktaAuthConstructor } from '../base/types';\nimport {\n OAuthStorageManagerInterface,\n OAuthTransactionMeta,\n OktaAuthOAuthInterface,\n OktaAuthOAuthOptions,\n PKCETransactionMeta,\n} from '../oidc/types';\nimport { OktaAuthMyAccountInterface } from './types';\n\nimport * as MyAccountMethods from './api';\n\nexport function mixinMyAccount\n<\n M extends OAuthTransactionMeta = PKCETransactionMeta,\n S extends OAuthStorageManagerInterface = OAuthStorageManagerInterface,\n O extends OktaAuthOAuthOptions = OktaAuthOAuthOptions,\n TBase extends OktaAuthConstructor>\n = OktaAuthConstructor>\n>\n(Base: TBase): TBase & OktaAuthConstructor>\n{\n return class OktaAuthMyAccount extends Base implements OktaAuthMyAccountInterface\n {\n myaccount: any;\n \n constructor(...args: any[]) {\n super(...args);\n\n this.myaccount = Object.entries(MyAccountMethods)\n .filter(([ name ]) => name !== 'default')\n .reduce((acc, [name, fn]) => {\n acc[name] = (fn as any).bind(null, this);\n return acc;\n }, {});\n }\n };\n}\n","/* eslint-disable max-statements */\n/* eslint-disable complexity */\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\nimport { \n clone,\n} from '../util';\nimport fingerprint from '../browser/fingerprint';\nimport {\n FingerprintAPI,\n SigninWithCredentialsOptions,\n ForgotPasswordOptions,\n VerifyRecoveryTokenOptions,\n SigninOptions,\n OktaAuthTxInterface,\n AuthnTransaction,\n AuthnTransactionAPI\n} from './types';\nimport {\n createAuthnTransactionAPI,\n} from './factory';\nimport { StorageManagerInterface } from '../storage/types';\nimport { OktaAuthHttpInterface, OktaAuthHttpOptions } from '../http/types';\nimport { OktaAuthConstructor } from '../base/types';\n\nexport function mixinAuthn\n<\n S extends StorageManagerInterface = StorageManagerInterface,\n O extends OktaAuthHttpOptions = OktaAuthHttpOptions,\n TBase extends OktaAuthConstructor>\n = OktaAuthConstructor>\n>\n(Base: TBase): TBase & OktaAuthConstructor>\n{\n return class OktaAuthTx extends Base implements OktaAuthTxInterface {\n tx: AuthnTransactionAPI; // legacy, may be removed in future version\n authn: AuthnTransactionAPI;\n fingerprint: FingerprintAPI;\n\n constructor(...args: any[]) {\n super(...args);\n\n this.authn = this.tx = createAuthnTransactionAPI(this);\n \n // Fingerprint API\n this.fingerprint = fingerprint.bind(null, this);\n }\n\n // Authn V1\n async signIn(opts: SigninOptions): Promise {\n opts = clone(opts || {});\n const _postToTransaction = (options?) => {\n delete opts.sendFingerprint;\n return this.tx.postToTransaction('/api/v1/authn', opts, options);\n };\n if (!opts.sendFingerprint) {\n return _postToTransaction();\n }\n return this.fingerprint()\n .then(function(fingerprint) {\n return _postToTransaction({\n headers: {\n 'X-Device-Fingerprint': fingerprint\n }\n });\n });\n }\n\n // Authn V1\n async signInWithCredentials(opts: SigninWithCredentialsOptions): Promise {\n return this.signIn(opts);\n }\n\n // { username, (relayState) }\n forgotPassword(opts): Promise {\n return this.tx.postToTransaction('/api/v1/authn/recovery/password', opts);\n }\n\n // { username, (relayState) }\n unlockAccount(opts: ForgotPasswordOptions): Promise {\n return this.tx.postToTransaction('/api/v1/authn/recovery/unlock', opts);\n }\n\n // { recoveryToken }\n verifyRecoveryToken(opts: VerifyRecoveryTokenOptions): Promise {\n return this.tx.postToTransaction('/api/v1/authn/recovery/token', opts);\n }\n\n };\n}\n","export default function compareVersions(v1, v2) {\n // validate input and split into segments\n const n1 = validateAndParse(v1);\n const n2 = validateAndParse(v2);\n\n // pop off the patch\n const p1 = n1.pop();\n const p2 = n2.pop();\n\n // validate numbers\n const r = compareSegments(n1, n2);\n if (r !== 0) return r;\n\n // validate pre-release\n if (p1 && p2) {\n return compareSegments(p1.split('.'), p2.split('.'));\n } else if (p1 || p2) {\n return p1 ? -1 : 1;\n }\n\n return 0;\n}\n\nexport const validate = (v) =>\n typeof v === 'string' && /^[v\\d]/.test(v) && semver.test(v);\n\nexport const compare = (v1, v2, operator) => {\n // validate input operator\n assertValidOperator(operator);\n\n // since result of compareVersions can only be -1 or 0 or 1\n // a simple map can be used to replace switch\n const res = compareVersions(v1, v2);\n\n return operatorResMap[operator].includes(res);\n};\n\nexport const satisfies = (v, r) => {\n // if no range operator then \"=\"\n const m = r.match(/^([<>=~^]+)/);\n const op = m ? m[1] : '=';\n\n // if gt/lt/eq then operator compare\n if (op !== '^' && op !== '~') return compare(v, r, op);\n\n // else range of either \"~\" or \"^\" is assumed\n const [v1, v2, v3] = validateAndParse(v);\n const [r1, r2, r3] = validateAndParse(r);\n if (compareStrings(v1, r1) !== 0) return false;\n if (op === '^') {\n return compareSegments([v2, v3], [r2, r3]) >= 0;\n }\n if (compareStrings(v2, r2) !== 0) return false;\n return compareStrings(v3, r3) >= 0;\n};\n\n// export CJS style for parity\ncompareVersions.validate = validate;\ncompareVersions.compare = compare;\ncompareVersions.satisfies = satisfies;\n\nconst semver =\n /^[v^~<>=]*?(\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+))?(?:-([\\da-z\\-]+(?:\\.[\\da-z\\-]+)*))?(?:\\+[\\da-z\\-]+(?:\\.[\\da-z\\-]+)*)?)?)?$/i;\n\nconst validateAndParse = (v) => {\n if (typeof v !== 'string') {\n throw new TypeError('Invalid argument expected string');\n }\n const match = v.match(semver);\n if (!match) {\n throw new Error(`Invalid argument not valid semver ('${v}' received)`);\n }\n match.shift();\n return match;\n};\n\nconst isWildcard = (s) => s === '*' || s === 'x' || s === 'X';\n\nconst tryParse = (v) => {\n const n = parseInt(v, 10);\n return isNaN(n) ? v : n;\n};\n\nconst forceType = (a, b) =>\n typeof a !== typeof b ? [String(a), String(b)] : [a, b];\n\nconst compareStrings = (a, b) => {\n if (isWildcard(a) || isWildcard(b)) return 0;\n const [ap, bp] = forceType(tryParse(a), tryParse(b));\n if (ap > bp) return 1;\n if (ap < bp) return -1;\n return 0;\n};\n\nconst compareSegments = (a, b) => {\n for (let i = 0; i < Math.max(a.length, b.length); i++) {\n const r = compareStrings(a[i] || 0, b[i] || 0);\n if (r !== 0) return r;\n }\n return 0;\n};\n\nconst operatorResMap = {\n '>': [1],\n '>=': [0, 1],\n '=': [0],\n '<=': [-1, 0],\n '<': [-1],\n};\n\nconst allowedOperators = Object.keys(operatorResMap);\n\nconst assertValidOperator = (op) => {\n if (typeof op !== 'string') {\n throw new TypeError(\n `Invalid operator type, expected string but got ${typeof op}`\n );\n }\n if (allowedOperators.indexOf(op) === -1) {\n throw new Error(\n `Invalid operator, expected one of ${allowedOperators.join('|')}`\n );\n }\n};\n","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}","import _typeof from \"./typeof.js\";\nexport default function toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","/*\n * Copyright (c) 2020-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 * as React from 'react';\n\nconst OktaError: React.FC<{ error: Error }> = ({ error }) => { \n if(error.name && error.message) { \n return

{error.name}: {error.message}

;\n }\n return

Error: {error.toString()}

;\n};\n\nexport default OktaError;\n","/*!\n * Copyright (c) 2017-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 * as React from 'react';\nimport { AuthSdkError, AuthState, OktaAuth } from '@okta/okta-auth-js';\nimport OktaContext, { OnAuthRequiredFunction, RestoreOriginalUriFunction } from './OktaContext';\nimport OktaError from './OktaError';\nimport { compare as compareVersions } from 'compare-versions';\n\ndeclare const AUTH_JS: {\n minSupportedVersion: string;\n}\n\ndeclare const PACKAGE_NAME: string;\ndeclare const PACKAGE_VERSION: string;\ndeclare const SKIP_VERSION_CHECK: string;\n\nconst Security: React.FC<{\n oktaAuth: OktaAuth,\n restoreOriginalUri: RestoreOriginalUriFunction, \n onAuthRequired?: OnAuthRequiredFunction,\n children?: React.ReactNode\n} & React.HTMLAttributes> = ({ \n oktaAuth,\n restoreOriginalUri, \n onAuthRequired, \n children\n}) => { \n const [authState, setAuthState] = React.useState(() => {\n if (!oktaAuth) {\n return null;\n }\n return oktaAuth.authStateManager.getAuthState();\n });\n\n React.useEffect(() => {\n if (!oktaAuth || !restoreOriginalUri) {\n return;\n }\n\n // Add default restoreOriginalUri callback\n // props.restoreOriginalUri is required, therefore if options.restoreOriginalUri exists, there are 2 callbacks\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (oktaAuth.options.restoreOriginalUri) {\n console.warn('Two custom restoreOriginalUri callbacks are detected. The one from the OktaAuth configuration will be overridden by the provided restoreOriginalUri prop from the Security component.');\n }\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n oktaAuth.options.restoreOriginalUri = (async (oktaAuth: unknown, originalUri: string) => {\n restoreOriginalUri(oktaAuth as OktaAuth, originalUri);\n }) as ((oktaAuth: OktaAuth, originalUri?: string) => Promise);\n\n }, []); // empty array, only check on component mount\n\n React.useEffect(() => {\n if (!oktaAuth) {\n return;\n }\n\n // Add okta-react userAgent\n if (oktaAuth._oktaUserAgent) {\n oktaAuth._oktaUserAgent.addEnvironment(`${PACKAGE_NAME}/${PACKAGE_VERSION}`);\n } else {\n console.warn('_oktaUserAgent is not available on auth SDK instance. Please use okta-auth-js@^5.3.1 .');\n }\n\n // Update Security provider with latest authState\n const currentAuthState = oktaAuth.authStateManager.getAuthState();\n if (currentAuthState !== authState) {\n setAuthState(currentAuthState);\n }\n const handler = (authState: AuthState) => {\n setAuthState(authState);\n };\n oktaAuth.authStateManager.subscribe(handler);\n\n // Trigger an initial change event to make sure authState is latest\n oktaAuth.start();\n\n return () => {\n oktaAuth.authStateManager.unsubscribe(handler);\n };\n }, [oktaAuth]);\n\n if (!oktaAuth) {\n const err = new AuthSdkError('No oktaAuth instance passed to Security Component.');\n return ;\n }\n\n if (!restoreOriginalUri) {\n const err = new AuthSdkError('No restoreOriginalUri callback passed to Security Component.');\n return ;\n }\n\n if (!oktaAuth._oktaUserAgent) {\n console.warn('_oktaUserAgent is not available on auth SDK instance. Please use okta-auth-js@^5.3.1 .');\n }\n else {\n // use SKIP_VERSION_CHECK flag to control version check in tests\n // OKTA-465157: remove SKIP_VERSION_CHECK\n const isAuthJsSupported = SKIP_VERSION_CHECK === '1' ||\n compareVersions(oktaAuth._oktaUserAgent.getVersion(), AUTH_JS.minSupportedVersion, '>=');\n if (!isAuthJsSupported) {\n const err = new AuthSdkError(`\n Passed in oktaAuth is not compatible with the SDK,\n minimum supported okta-auth-js version is ${AUTH_JS.minSupportedVersion}.\n `);\n return ;\n }\n }\n\n return (\n \n {children}\n \n );\n};\n\nexport default Security;\n","/*\n * Copyright (c) 2020-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 * as React from 'react';\nimport { useOktaAuth, IOktaContext } from './OktaContext';\n\nconst withOktaAuth =

(\n ComponentToWrap: React.ComponentType

\n): React.FC> => { \n const WrappedComponent = (props: Omit) => { \n const oktaAuthProps = useOktaAuth();\n return ;\n };\n WrappedComponent.displayName = 'withOktaAuth_' + (ComponentToWrap.displayName || ComponentToWrap.name);\n return WrappedComponent;\n};\n\nexport default withOktaAuth;\n","/*\n * Copyright (c) 2017-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 * as React from 'react';\nimport { useOktaAuth, OnAuthResumeFunction } from './OktaContext';\nimport OktaError from './OktaError';\n\ninterface LoginCallbackProps {\n errorComponent?: React.ComponentType<{ error: Error }>;\n onAuthResume?: OnAuthResumeFunction;\n loadingElement?: React.ReactElement;\n}\n\nconst LoginCallback: React.FC = ({ errorComponent, loadingElement = null, onAuthResume }) => { \n const { oktaAuth, authState } = useOktaAuth();\n const [callbackError, setCallbackError] = React.useState(null);\n\n const ErrorReporter = errorComponent || OktaError;\n React.useEffect(() => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore OKTA-464505: backward compatibility support for auth-js@5\n const isInteractionRequired = oktaAuth.idx.isInteractionRequired || oktaAuth.isInteractionRequired.bind(oktaAuth);\n if (onAuthResume && isInteractionRequired()) {\n onAuthResume();\n return;\n }\n oktaAuth.handleLoginRedirect().catch(e => {\n setCallbackError(e);\n });\n }, [oktaAuth]);\n\n const authError = authState?.error;\n const displayError = callbackError || authError;\n if (displayError) { \n return ;\n }\n\n return loadingElement;\n};\n\nexport default LoginCallback;\n","/*\n * Copyright (c) 2017-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 * as React from 'react';\nimport { useOktaAuth, OnAuthRequiredFunction } from './OktaContext';\nimport * as ReactRouterDom from 'react-router-dom';\nimport { toRelativeUrl, AuthSdkError } from '@okta/okta-auth-js';\nimport OktaError from './OktaError';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nlet useMatch: any;\nif ('useRouteMatch' in ReactRouterDom) {\n // trick static analyzer to avoid \"'useRouteMatch' is not exported\" error\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n useMatch = (ReactRouterDom as any)['useRouteMatch' in ReactRouterDom ? 'useRouteMatch' : ''];\n} else {\n // throw when useMatch is triggered\n useMatch = () => { \n throw new AuthSdkError('Unsupported: SecureRoute only works with react-router-dom v5 or any router library with compatible APIs. See examples under the \"samples\" folder for how to implement your own custom SecureRoute Component.');\n };\n}\n\nconst SecureRoute: React.FC<{\n onAuthRequired?: OnAuthRequiredFunction;\n errorComponent?: React.ComponentType<{ error: Error }>;\n} & ReactRouterDom.RouteProps & React.HTMLAttributes> = ({ \n onAuthRequired,\n errorComponent,\n ...routeProps\n}) => { \n const { oktaAuth, authState, _onAuthRequired } = useOktaAuth();\n const match = useMatch(routeProps);\n const pendingLogin = React.useRef(false);\n const [handleLoginError, setHandleLoginError] = React.useState(null);\n const ErrorReporter = errorComponent || OktaError;\n\n React.useEffect(() => {\n const handleLogin = async () => {\n if (pendingLogin.current) {\n return;\n }\n\n pendingLogin.current = true;\n\n const originalUri = toRelativeUrl(window.location.href, window.location.origin);\n oktaAuth.setOriginalUri(originalUri);\n const onAuthRequiredFn = onAuthRequired || _onAuthRequired;\n if (onAuthRequiredFn) {\n await onAuthRequiredFn(oktaAuth);\n } else {\n await oktaAuth.signInWithRedirect();\n }\n };\n\n // Only process logic if the route matches\n if (!match) {\n return;\n }\n\n if (!authState) {\n return;\n }\n\n if (authState.isAuthenticated) {\n pendingLogin.current = false;\n return;\n }\n\n // Start login if app has decided it is not logged in and there is no pending signin\n if(!authState.isAuthenticated) { \n handleLogin().catch(err => {\n setHandleLoginError(err as Error);\n });\n } \n\n }, [\n authState,\n oktaAuth, \n match, \n onAuthRequired, \n _onAuthRequired\n ]);\n\n if (handleLoginError) {\n return ;\n }\n\n if (!authState || !authState.isAuthenticated) {\n return null;\n }\n\n return (\n \n );\n};\n\nexport default SecureRoute;\n","import PropTypes from 'prop-types'; // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.4/js/src/modal.js#L436-L443\n\nexport function getScrollbarWidth() {\n var scrollDiv = document.createElement('div'); // .modal-scrollbar-measure styles // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.4/scss/_modal.scss#L106-L113\n\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n}\nexport function setScrollbarWidth(padding) {\n document.body.style.paddingRight = padding > 0 ? padding + \"px\" : null;\n}\nexport function isBodyOverflowing() {\n return document.body.clientWidth < window.innerWidth;\n}\nexport function getOriginalBodyPadding() {\n var style = window.getComputedStyle(document.body, null);\n return parseInt(style && style.getPropertyValue('padding-right') || 0, 10);\n}\nexport function conditionallyUpdateScrollbar() {\n var scrollbarWidth = getScrollbarWidth(); // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.6/js/src/modal.js#L433\n\n var fixedContent = document.querySelectorAll('.fixed-top, .fixed-bottom, .is-fixed, .sticky-top')[0];\n var bodyPadding = fixedContent ? parseInt(fixedContent.style.paddingRight || 0, 10) : 0;\n\n if (isBodyOverflowing()) {\n setScrollbarWidth(bodyPadding + scrollbarWidth);\n }\n}\nvar globalCssModule;\nexport function setGlobalCssModule(cssModule) {\n globalCssModule = cssModule;\n}\nexport function mapToCssModules(className, cssModule) {\n if (className === void 0) {\n className = '';\n }\n\n if (cssModule === void 0) {\n cssModule = globalCssModule;\n }\n\n if (!cssModule) return className;\n return className.split(' ').map(function (c) {\n return cssModule[c] || c;\n }).join(' ');\n}\n/**\n * Returns a new object with the key/value pairs from `obj` that are not in the array `omitKeys`.\n */\n\nexport function omit(obj, omitKeys) {\n var result = {};\n Object.keys(obj).forEach(function (key) {\n if (omitKeys.indexOf(key) === -1) {\n result[key] = obj[key];\n }\n });\n return result;\n}\n/**\n * Returns a filtered copy of an object with only the specified keys.\n */\n\nexport function pick(obj, keys) {\n var pickKeys = Array.isArray(keys) ? keys : [keys];\n var length = pickKeys.length;\n var key;\n var result = {};\n\n while (length > 0) {\n length -= 1;\n key = pickKeys[length];\n result[key] = obj[key];\n }\n\n return result;\n}\nvar warned = {};\nexport function warnOnce(message) {\n if (!warned[message]) {\n /* istanbul ignore else */\n if (typeof console !== 'undefined') {\n console.error(message); // eslint-disable-line no-console\n }\n\n warned[message] = true;\n }\n}\nexport function deprecated(propType, explanation) {\n return function validate(props, propName, componentName) {\n if (props[propName] !== null && typeof props[propName] !== 'undefined') {\n warnOnce(\"\\\"\" + propName + \"\\\" property of \\\"\" + componentName + \"\\\" has been deprecated.\\n\" + explanation);\n }\n\n for (var _len = arguments.length, rest = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n rest[_key - 3] = arguments[_key];\n }\n\n return propType.apply(void 0, [props, propName, componentName].concat(rest));\n };\n} // Shim Element if needed (e.g. in Node environment)\n\nvar Element = typeof window === 'object' && window.Element || function () {};\n\nexport function DOMElement(props, propName, componentName) {\n if (!(props[propName] instanceof Element)) {\n return new Error('Invalid prop `' + propName + '` supplied to `' + componentName + '`. Expected prop to be an instance of Element. Validation failed.');\n }\n}\nexport var targetPropType = PropTypes.oneOfType([PropTypes.string, PropTypes.func, DOMElement, PropTypes.shape({\n current: PropTypes.any\n})]);\nexport var tagPropType = PropTypes.oneOfType([PropTypes.func, PropTypes.string, PropTypes.shape({\n $$typeof: PropTypes.symbol,\n render: PropTypes.func\n}), PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.string, PropTypes.shape({\n $$typeof: PropTypes.symbol,\n render: PropTypes.func\n})]))]);\n/* eslint key-spacing: [\"error\", { afterColon: true, align: \"value\" }] */\n// These are all setup to match what is in the bootstrap _variables.scss\n// https://github.com/twbs/bootstrap/blob/v4-dev/scss/_variables.scss\n\nexport var TransitionTimeouts = {\n Fade: 150,\n // $transition-fade\n Collapse: 350,\n // $transition-collapse\n Modal: 300,\n // $modal-transition\n Carousel: 600 // $carousel-transition\n\n}; // Duplicated Transition.propType keys to ensure that Reactstrap builds\n// for distribution properly exclude these keys for nested child HTML attributes\n// since `react-transition-group` removes propTypes in production builds.\n\nexport var TransitionPropTypeKeys = ['in', 'mountOnEnter', 'unmountOnExit', 'appear', 'enter', 'exit', 'timeout', 'onEnter', 'onEntering', 'onEntered', 'onExit', 'onExiting', 'onExited'];\nexport var TransitionStatuses = {\n ENTERING: 'entering',\n ENTERED: 'entered',\n EXITING: 'exiting',\n EXITED: 'exited'\n};\nexport var keyCodes = {\n esc: 27,\n space: 32,\n enter: 13,\n tab: 9,\n up: 38,\n down: 40,\n home: 36,\n end: 35,\n n: 78,\n p: 80\n};\nexport var PopperPlacements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\nexport var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nexport function isReactRefObj(target) {\n if (target && typeof target === 'object') {\n return 'current' in target;\n }\n\n return false;\n}\n\nfunction getTag(value) {\n if (value == null) {\n return value === undefined ? '[object Undefined]' : '[object Null]';\n }\n\n return Object.prototype.toString.call(value);\n}\n\nexport function toNumber(value) {\n var type = typeof value;\n var NAN = 0 / 0;\n\n if (type === 'number') {\n return value;\n }\n\n if (type === 'symbol' || type === 'object' && getTag(value) === '[object Symbol]') {\n return NAN;\n }\n\n if (isObject(value)) {\n var other = typeof value.valueOf === 'function' ? value.valueOf() : value;\n value = isObject(other) ? \"\" + other : other;\n }\n\n if (type !== 'string') {\n return value === 0 ? value : +value;\n }\n\n value = value.replace(/^\\s+|\\s+$/g, '');\n var isBinary = /^0b[01]+$/i.test(value);\n return isBinary || /^0o[0-7]+$/i.test(value) ? parseInt(value.slice(2), isBinary ? 2 : 8) : /^[-+]0x[0-9a-f]+$/i.test(value) ? NAN : +value;\n}\nexport function isObject(value) {\n var type = typeof value;\n return value != null && (type === 'object' || type === 'function');\n}\nexport function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n\n var tag = getTag(value);\n return tag === '[object Function]' || tag === '[object AsyncFunction]' || tag === '[object GeneratorFunction]' || tag === '[object Proxy]';\n}\nexport function findDOMElements(target) {\n if (isReactRefObj(target)) {\n return target.current;\n }\n\n if (isFunction(target)) {\n return target();\n }\n\n if (typeof target === 'string' && canUseDOM) {\n var selection = document.querySelectorAll(target);\n\n if (!selection.length) {\n selection = document.querySelectorAll(\"#\" + target);\n }\n\n if (!selection.length) {\n throw new Error(\"The target '\" + target + \"' could not be identified in the dom, tip: check spelling\");\n }\n\n return selection;\n }\n\n return target;\n}\nexport function isArrayOrNodeList(els) {\n if (els === null) {\n return false;\n }\n\n return Array.isArray(els) || canUseDOM && typeof els.length === 'number';\n}\nexport function getTarget(target, allElements) {\n var els = findDOMElements(target);\n\n if (allElements) {\n if (isArrayOrNodeList(els)) {\n return els;\n }\n\n if (els === null) {\n return [];\n }\n\n return [els];\n } else {\n if (isArrayOrNodeList(els)) {\n return els[0];\n }\n\n return els;\n }\n}\nexport var defaultToggleEvents = ['touchstart', 'click'];\nexport function addMultipleEventListeners(_els, handler, _events, useCapture) {\n var els = _els;\n\n if (!isArrayOrNodeList(els)) {\n els = [els];\n }\n\n var events = _events;\n\n if (typeof events === 'string') {\n events = events.split(/\\s+/);\n }\n\n if (!isArrayOrNodeList(els) || typeof handler !== 'function' || !Array.isArray(events)) {\n throw new Error(\"\\n The first argument of this function must be DOM node or an array on DOM nodes or NodeList.\\n The second must be a function.\\n The third is a string or an array of strings that represents DOM events\\n \");\n }\n\n Array.prototype.forEach.call(events, function (event) {\n Array.prototype.forEach.call(els, function (el) {\n el.addEventListener(event, handler, useCapture);\n });\n });\n return function removeEvents() {\n Array.prototype.forEach.call(events, function (event) {\n Array.prototype.forEach.call(els, function (el) {\n el.removeEventListener(event, handler, useCapture);\n });\n });\n };\n}\nexport var focusableElements = ['a[href]', 'area[href]', 'input:not([disabled]):not([type=hidden])', 'select:not([disabled])', 'textarea:not([disabled])', 'button:not([disabled])', 'object', 'embed', '[tabindex]:not(.modal)', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable=\"false\"])'];","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n fluid: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'div'\n};\n\nvar Container = function Container(props) {\n var className = props.className,\n cssModule = props.cssModule,\n fluid = props.fluid,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, [\"className\", \"cssModule\", \"fluid\", \"tag\"]);\n\n var containerClass = 'container';\n\n if (fluid === true) {\n containerClass = 'container-fluid';\n } else if (fluid) {\n containerClass = \"container-\" + fluid;\n }\n\n var classes = mapToCssModules(classNames(className, containerClass), cssModule);\n return React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nContainer.propTypes = propTypes;\nContainer.defaultProps = defaultProps;\nexport default Container;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar rowColWidths = ['xs', 'sm', 'md', 'lg', 'xl'];\nvar rowColsPropType = PropTypes.oneOfType([PropTypes.number, PropTypes.string]);\nvar propTypes = {\n tag: tagPropType,\n noGutters: PropTypes.bool,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n form: PropTypes.bool,\n xs: rowColsPropType,\n sm: rowColsPropType,\n md: rowColsPropType,\n lg: rowColsPropType,\n xl: rowColsPropType\n};\nvar defaultProps = {\n tag: 'div',\n widths: rowColWidths\n};\n\nvar Row = function Row(props) {\n var className = props.className,\n cssModule = props.cssModule,\n noGutters = props.noGutters,\n Tag = props.tag,\n form = props.form,\n widths = props.widths,\n attributes = _objectWithoutPropertiesLoose(props, [\"className\", \"cssModule\", \"noGutters\", \"tag\", \"form\", \"widths\"]);\n\n var colClasses = [];\n widths.forEach(function (colWidth, i) {\n var colSize = props[colWidth];\n delete attributes[colWidth];\n\n if (!colSize) {\n return;\n }\n\n var isXs = !i;\n colClasses.push(isXs ? \"row-cols-\" + colSize : \"row-cols-\" + colWidth + \"-\" + colSize);\n });\n var classes = mapToCssModules(classNames(className, noGutters ? 'no-gutters' : null, form ? 'form-row' : 'row', colClasses), cssModule);\n return React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nRow.propTypes = propTypes;\nRow.defaultProps = defaultProps;\nexport default Row;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType, isObject } from './utils';\nvar colWidths = ['xs', 'sm', 'md', 'lg', 'xl'];\nvar stringOrNumberProp = PropTypes.oneOfType([PropTypes.number, PropTypes.string]);\nvar columnProps = PropTypes.oneOfType([PropTypes.bool, PropTypes.number, PropTypes.string, PropTypes.shape({\n size: PropTypes.oneOfType([PropTypes.bool, PropTypes.number, PropTypes.string]),\n order: stringOrNumberProp,\n offset: stringOrNumberProp\n})]);\nvar propTypes = {\n tag: tagPropType,\n xs: columnProps,\n sm: columnProps,\n md: columnProps,\n lg: columnProps,\n xl: columnProps,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n widths: PropTypes.array\n};\nvar defaultProps = {\n tag: 'div',\n widths: colWidths\n};\n\nvar getColumnSizeClass = function getColumnSizeClass(isXs, colWidth, colSize) {\n if (colSize === true || colSize === '') {\n return isXs ? 'col' : \"col-\" + colWidth;\n } else if (colSize === 'auto') {\n return isXs ? 'col-auto' : \"col-\" + colWidth + \"-auto\";\n }\n\n return isXs ? \"col-\" + colSize : \"col-\" + colWidth + \"-\" + colSize;\n};\n\nvar Col = function Col(props) {\n var className = props.className,\n cssModule = props.cssModule,\n widths = props.widths,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, [\"className\", \"cssModule\", \"widths\", \"tag\"]);\n\n var colClasses = [];\n widths.forEach(function (colWidth, i) {\n var columnProp = props[colWidth];\n delete attributes[colWidth];\n\n if (!columnProp && columnProp !== '') {\n return;\n }\n\n var isXs = !i;\n\n if (isObject(columnProp)) {\n var _classNames;\n\n var colSizeInterfix = isXs ? '-' : \"-\" + colWidth + \"-\";\n var colClass = getColumnSizeClass(isXs, colWidth, columnProp.size);\n colClasses.push(mapToCssModules(classNames((_classNames = {}, _classNames[colClass] = columnProp.size || columnProp.size === '', _classNames[\"order\" + colSizeInterfix + columnProp.order] = columnProp.order || columnProp.order === 0, _classNames[\"offset\" + colSizeInterfix + columnProp.offset] = columnProp.offset || columnProp.offset === 0, _classNames)), cssModule));\n } else {\n var _colClass = getColumnSizeClass(isXs, colWidth, columnProp);\n\n colClasses.push(_colClass);\n }\n });\n\n if (!colClasses.length) {\n colClasses.push('col');\n }\n\n var classes = mapToCssModules(classNames(className, colClasses), cssModule);\n return React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nCol.propTypes = propTypes;\nCol.defaultProps = defaultProps;\nexport default Col;","const environments = {\n local: {\n // NOTE: if using a mobile emulator, then localhost is 10.0.2.2\n //amplifyApiHost: 'http://localhost:51185',\n amplifyApiHost: 'https://api.dev.alsac.stjude.org/integration-v1/amplify-portal-services',\n amplifyClientId: '0oacyh9tf2eKqR5cz297',\n amplifyClientSecret: '',\n\n publicUrl: '',\n oktaReturnUrl: 'http://localhost:3000/implicit/callback',\n appRootPath: '/',\n appStage: 'local',\n },\n dev: {\n amplifyApiHost: 'https://api.dev.alsac.stjude.org/integration-v1/amplify-portal-services',\n amplifyClientId: '0oacyh9tf2eKqR5cz297',\n amplifyClientSecret: '',\n\n publicUrl: 'https://amplify-dev.alsac.stjude.org/amplify-portal-client',\n oktaReturnUrl: 'https://amplify-dev.alsac.stjude.org/amplify-portal-client/implicit/callback',\n appStage: 'dev',\n },\n qa: {\n amplifyApiHost: 'https://api.qa.alsac.stjude.org/integration-v1/amplify-portal-services',\n amplifyClientId: '0oacyhc8j4jcuULsa297',\n amplifyClientSecret: '',\n\n publicUrl: 'https://amplify.qa.alsac.stjude.org/amplify-portal-client',\n oktaReturnUrl: 'https://amplify.qa.alsac.stjude.org/amplify-portal-client/implicit/callback',\n appStage: 'qa',\n },\n prod: {\n amplifyApiHost: 'https://api.alsac.stjude.org/integration-v1/amplify-portal-services',\n amplifyClientId: '0oacyhbi7yIUV6Mav297',\n amplifyClientSecret: '',\n\n oktaIssuer: 'https://alsac.okta.com/oauth2/aus5ktzayqDq3F4dl297',\n publicUrl: 'https://amplify.alsac.stjude.org/amplify-portal-client',\n appClientId: '0oa5ktt014cDxAf4t297',\n oktaReturnUrl: 'https://amplify.alsac.stjude.org/amplify-portal-client/implicit/callback',\n appStage: 'prod',\n },\n};\n\nconst commonConfig = {\n oktaIssuer: 'https://stjude.oktapreview.com/oauth2/ausray07w3ugdvdZk0h7',\n appClientId: '0oar4f022inrIX5k60h7',\n appRootPath: '/amplify-portal-client/',\n};\n\ninterface ConfigType {\n amplifyApiHost: string;\n amplifyClientId: string;\n amplifyClientSecret: string;\n\n oktaIssuer: string;\n appClientId: string;\n oktaReturnUrl: string;\n appRootPath: string;\n publicUrl: string;\n appStage: string;\n}\n\nfunction getStage() {\n switch (process.env.REACT_APP_STAGE) {\n case 'prod':\n return 'prod';\n case 'qa':\n return 'qa';\n case 'dev':\n return 'dev';\n case 'local':\n return 'local';\n default:\n return 'dev';\n }\n}\n\nconst env = getStage();\n\nconst config: ConfigType = {\n ...commonConfig,\n ...environments[env],\n};\n\nexport default config;\n","import appConfig from './Config';\n\nexport default {\n oidc: {\n clientId: appConfig.appClientId || '',\n issuer: appConfig.oktaIssuer || '',\n redirectUri: appConfig.oktaReturnUrl || '',\n pkce: true,\n scopes: ['openid', 'profile', 'email', 'phone',],\n tokenManager: {\n autoRenew: true,\n },\n },\n};\n","import packageJson from '../../package.json';\n\nconst AppDetails = {\n name: packageJson.name,\n version: packageJson.version,\n path: packageJson.name,\n};\n\nexport default AppDetails;\n","import React from 'react';\nimport { Row, Col } from 'reactstrap';\n\nexport default function Footer() {\n return (\n

\n \n \n
\n © Copyright 2022. St. Jude Children's Research Hospital, a not-for-profit, section 501(c)(3).\n
\n \n
\n
\n );\n}\n","/* eslint-disable no-debugger */\nimport { MicroApp } from './services/Types';\n\n\n\ndeclare global {\n interface Window {\n [key: string]: (appName: string) => void;\n }\n}\n\nexport function appendAppToDom(app: MicroApp) {\n const { slug , moduleName} = app;\n const scriptId = `micro-frontend-subapp--${slug}`;\n\n if (document.getElementById(scriptId)) {\n renderApp(app);\n return;\n }\n\n const host = `${process.env.REACT_APP_CDN_HOST}/apps/${slug}`;\n var cachebuster = Math.round(new Date().getTime() / 1000);\n\n const script = document.createElement('script');\n script.id = scriptId;\n script.crossOrigin = '';\n console.debug(`appendAppToDom Config: ${script.id}`);\n // if (script.id.includes('staff'))\n script.type = 'module';\n script.src = `${host}/static/js/${moduleName}.js?v=${cachebuster}`;\n script.onload = () => {\n renderApp(app);\n };\n document.head.appendChild(script);\n console.debug(`appendAppToDom Done: ${script.id}`);\n}\n\nexport function removeAppFromDom(app: MicroApp) {\n const { slug, functionName } = app;\n const unmountFunction = window[`unmount${functionName}`];\n if (unmountFunction !== undefined) {\n unmountFunction(getAppId(slug));\n }\n}\n\nfunction renderApp(app: MicroApp) {\n\n const { slug, functionName } = app;\n\n const renderFunctionName = `render${functionName}`;\n const renderFn = window[renderFunctionName];\n if (renderFn !== undefined)\n renderFn(getAppId(slug));\n\n}\n\nexport function getAppId(slug: string) {\n return `subapp--${slug}`;\n}\n","import React, { useEffect } from 'react';\nimport { useOktaAuth } from '@okta/okta-react';\nimport { AmplifyApp, SubApp } from '@amplify/amplify-sdk'\nimport { appendAppToDom, removeAppFromDom, getAppId } from './micro-frontend';\n\nexport function InitSubApp(app: AmplifyApp) : SubApp{\n return {\n ...app,\n path: `/apps/${app.slug}`,\n subApp: () => {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const { authState } = useOktaAuth();\n\n function logVisit(token: string) {\n window.amplify.axios.post('/reporting/visits-slug', JSON.stringify(app.slug));\n }\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(() => {\n // exit until dom is drawn\n if(document.getElementById(getAppId(app.slug))){\n console.debug(`SubApp: Loading ${app.slug}`)\n appendAppToDom(app);\n logVisit(authState.accessToken);\n console.debug(`SubApp: Loading Done ${app.slug}`)\n }\n return function cleanup(){\n console.debug(`SubApp: Removing ${app.slug}`)\n removeAppFromDom(app);\n }\n },[]) // eslint-disable-line react-hooks/exhaustive-deps\n\n return (\n
\n )\n }\n }\n}\n\n\n\n","/* eslint-disable no-empty */\r\n/* eslint-disable eqeqeq */\r\nimport { InitSubApp } from '../SubApp';\r\nimport { Observable, BehaviorSubject } from 'rxjs';\r\nimport {\r\n AmplifyApp,\r\n NavigationLink,\r\n Component,\r\n SubApp,\r\n UrlHistory,\r\n CoreNavigationLink,\r\n AmplifyWidget,\r\n CSSInfo,\r\n Version,\r\n} from '@amplify/amplify-sdk';\r\nimport config from '../Config';\r\nimport axios, { AxiosInstance } from 'axios';\r\nimport packageJson from '../../package.json';\r\nimport AppDetails from '../components/AppDetails';\r\nimport { JwtToken } from './Types';\r\n\r\nfunction loadConfig(scriptId: string, scriptSrc: string) {\r\n const script = document.createElement('script');\r\n script.id = scriptId;\r\n console.debug(`Loading Config: ${script.id}`);\r\n script.crossOrigin = '';\r\n script.src = scriptSrc;\r\n // if (script.id.includes('staff') || script.id.includes('bob'))\r\n script.type = 'module';\r\n document.head.appendChild(script);\r\n}\r\n\r\nexport function loadAppConfigs(apps: any[]) {\r\n var cachebuster = Math.round(new Date().getTime() / 1000);\r\n apps.forEach(app => {\r\n const scriptId = `micro-frontend-config--${app.slug}`;\r\n const scriptSrc = `${process.env.REACT_APP_CDN_HOST}/apps/${app.slug}/static/js/amplifyConfig.js?v=${cachebuster}`;\r\n loadConfig(scriptId, scriptSrc);\r\n });\r\n var isPermissionRevoed = false;\r\n if (\r\n apps.filter(\r\n x =>\r\n x.name !== 'Reporting' &&\r\n x.name !== 'DevBuilder' &&\r\n x.name !== 'Constituent Snapshot' &&\r\n x.name !== 'Role Management'\r\n ).length == 0\r\n )\r\n isPermissionRevoed = true;\r\n if (apps.filter(x => x.accessRoleName == 'Amplify-User').length == 0) isPermissionRevoed = true;\r\n if (isPermissionRevoed) $componentApps.next([]);\r\n}\r\n\r\nvar defaultVersions = [\r\n {\r\n version: AppDetails.version,\r\n commitHash: process.env.COMMITHASH,\r\n name: packageJson.name,\r\n author: 'Amplify',\r\n releaseDate: process.env.RELEASEDATE,\r\n } as Version,\r\n];\r\n\r\nconst $amplifyApps = new BehaviorSubject([]);\r\nconst $widgetApps = new BehaviorSubject([]);\r\nconst $componentApps = new BehaviorSubject([]);\r\nconst $componentAppsLoaded = new BehaviorSubject(false);\r\nconst $navigationItems = new BehaviorSubject([]);\r\nconst $coreNavigationItems = new BehaviorSubject([]);\r\nconst $hasToken = new BehaviorSubject(false);\r\nconst $versions = new BehaviorSubject(defaultVersions);\r\n\r\nexport let onAmplifyApps = () => $amplifyApps.asObservable() as Observable;\r\nexport let onWidgetApps = () => $widgetApps.asObservable() as Observable;\r\nexport let onNavigationItems = () => $navigationItems.asObservable() as Observable;\r\nexport let onComponentApps = () => $componentApps.asObservable() as Observable;\r\nexport let onComponentAppsLoaded = () => $componentAppsLoaded.asObservable() as Observable;\r\nexport let onCoreNavigationItems = () => $coreNavigationItems.asObservable() as Observable;\r\nexport let onHasToken = () => $hasToken.asObservable() as Observable;\r\nexport let onVersions = () => $versions.asObservable() as Observable;\r\n\r\nexport let urlHistory = new UrlHistory();\r\n\r\nlet amplifyToken: string;\r\nlet axiosInstance: AxiosInstance;\r\n\r\nexport function setOktaToken(newToken: string) {\r\n if (amplifyToken !== newToken) {\r\n amplifyToken = newToken;\r\n // Default config options\r\n const defaultOptions = {\r\n baseURL: `${config.amplifyApiHost}/v1/`,\r\n headers: {\r\n Accept: 'text/plain',\r\n 'Content-Type': 'application/json-patch+json',\r\n client_id: `${config.amplifyClientId}`,\r\n },\r\n };\r\n\r\n // Create instance\r\n axiosInstance = axios.create(defaultOptions);\r\n\r\n // Set the AUTH token for any request\r\n axiosInstance.interceptors.request.use(function (axiosConfig: any) {\r\n axiosConfig.headers.Authorization = amplifyToken ? `Bearer ${amplifyToken}` : '';\r\n return axiosConfig;\r\n });\r\n window.amplify.axios = axiosInstance;\r\n window.amplify.token = amplifyToken;\r\n\r\n try {\r\n const jwt: JwtToken = JSON.parse(atob(amplifyToken.split('.')[1]));\r\n window.amplify.roles = jwt.Roles;\r\n } catch {}\r\n\r\n $hasToken.next(true);\r\n } else if (!newToken) {\r\n $hasToken.next(false);\r\n }\r\n}\r\n\r\nexport function registerCoreNavigationItem(app: CoreNavigationLink) {\r\n const coreNavigationItems = $coreNavigationItems.getValue();\r\n coreNavigationItems.push(app);\r\n $coreNavigationItems.next(coreNavigationItems);\r\n}\r\n\r\n/* this is how we register the internal apps - to be deprecated*/\r\nexport function registerSubApp(app: SubApp) {\r\n console.debug(`Registering SubApp: ${app.slug}`);\r\n const amplifyApps = $amplifyApps.getValue();\r\n amplifyApps.push(app);\r\n $amplifyApps.next(amplifyApps);\r\n}\r\n\r\nfunction registerApp(module: AmplifyApp) {\r\n console.debug(`Registering App: ${module.slug}`);\r\n const amplifyApps = $amplifyApps.getValue();\r\n amplifyApps.push(InitSubApp(module));\r\n $amplifyApps.next(amplifyApps);\r\n}\r\n\r\nfunction registerWidget(widget: AmplifyWidget) {\r\n console.debug(`Registering Widget: ${widget.slug}`);\r\n const widgetApps = $widgetApps.getValue();\r\n widgetApps.push(widget);\r\n $widgetApps.next(widgetApps);\r\n}\r\n\r\nexport function registerComponentApp(app: Component) {\r\n const componentApps = $componentApps.getValue();\r\n componentApps.push(app);\r\n $componentApps.next(componentApps);\r\n let componentLoad = $componentAppsLoaded.getValue();\r\n $componentAppsLoaded.next(!componentLoad);\r\n}\r\n\r\nexport function registerNavigationItem(app: NavigationLink) {\r\n console.debug(`Registering NavigationItem: [${app.text}] ${app.link}`);\r\n const navigationItems = $navigationItems.getValue();\r\n navigationItems.push(app);\r\n $navigationItems.next(navigationItems);\r\n}\r\n\r\nexport function registerVersion(version: Version) {\r\n const versions = $versions.getValue();\r\n versions.push(version);\r\n $versions.next(versions);\r\n}\r\n\r\nfunction loadCss(cssInfo: CSSInfo) {\r\n const { slug, moduleName } = cssInfo;\r\n const cssid = `micro-frontend-css--${slug}`;\r\n\r\n if (document.getElementById(cssid)) {\r\n return;\r\n }\r\n const host = `${process.env.REACT_APP_CDN_HOST}/apps/${slug}`;\r\n var cachebuster = Math.round(new Date().getTime() / 1000);\r\n\r\n const style = document.createElement('link');\r\n style.id = cssid;\r\n style.rel = 'stylesheet';\r\n style.href = `${host}/static/css/${moduleName}.css?v=${cachebuster}`;\r\n document.head.appendChild(style);\r\n}\r\n\r\nwindow.amplify = {\r\n ...(window.amplify ?? {}),\r\n registerWidget,\r\n registerApp,\r\n registerComponentApp,\r\n registerNavigationItem,\r\n registerCoreNavigationItem,\r\n registerVersion,\r\n onAmplifyApps,\r\n onWidgetApps,\r\n onNavigationItems,\r\n onCoreNavigationItems,\r\n onHasToken,\r\n onVersions,\r\n urlHistory,\r\n loadCss,\r\n};\r\n","import defineProperty from \"./defineProperty.js\";\nexport default function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? Object(arguments[i]) : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys.push.apply(ownKeys, Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n return target;\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { canUseDOM } from './utils';\nvar propTypes = {\n children: PropTypes.node.isRequired,\n node: PropTypes.any\n};\n\nvar Portal =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Portal, _React$Component);\n\n function Portal() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = Portal.prototype;\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.defaultNode) {\n document.body.removeChild(this.defaultNode);\n }\n\n this.defaultNode = null;\n };\n\n _proto.render = function render() {\n if (!canUseDOM) {\n return null;\n }\n\n if (!this.props.node && !this.defaultNode) {\n this.defaultNode = document.createElement('div');\n document.body.appendChild(this.defaultNode);\n }\n\n return ReactDOM.createPortal(this.props.children, this.props.node || this.defaultNode);\n };\n\n return Portal;\n}(React.Component);\n\nPortal.propTypes = propTypes;\nexport default Portal;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _objectSpread2 from \"@babel/runtime/helpers/esm/objectSpread\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { Transition } from 'react-transition-group';\nimport { mapToCssModules, omit, pick, TransitionPropTypeKeys, TransitionTimeouts, tagPropType } from './utils';\n\nvar propTypes = _objectSpread2({}, Transition.propTypes, {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n tag: tagPropType,\n baseClass: PropTypes.string,\n baseClassActive: PropTypes.string,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.string, PropTypes.func])\n});\n\nvar defaultProps = _objectSpread2({}, Transition.defaultProps, {\n tag: 'div',\n baseClass: 'fade',\n baseClassActive: 'show',\n timeout: TransitionTimeouts.Fade,\n appear: true,\n enter: true,\n exit: true,\n in: true\n});\n\nfunction Fade(props) {\n var Tag = props.tag,\n baseClass = props.baseClass,\n baseClassActive = props.baseClassActive,\n className = props.className,\n cssModule = props.cssModule,\n children = props.children,\n innerRef = props.innerRef,\n otherProps = _objectWithoutPropertiesLoose(props, [\"tag\", \"baseClass\", \"baseClassActive\", \"className\", \"cssModule\", \"children\", \"innerRef\"]);\n\n var transitionProps = pick(otherProps, TransitionPropTypeKeys);\n var childProps = omit(otherProps, TransitionPropTypeKeys);\n return React.createElement(Transition, transitionProps, function (status) {\n var isActive = status === 'entered';\n var classes = mapToCssModules(classNames(className, baseClass, isActive && baseClassActive), cssModule);\n return React.createElement(Tag, _extends({\n className: classes\n }, childProps, {\n ref: innerRef\n }), children);\n });\n}\n\nFade.propTypes = propTypes;\nFade.defaultProps = defaultProps;\nexport default Fade;","import _objectSpread2 from \"@babel/runtime/helpers/esm/objectSpread\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Portal from './Portal';\nimport Fade from './Fade';\nimport { getOriginalBodyPadding, conditionallyUpdateScrollbar, setScrollbarWidth, mapToCssModules, omit, focusableElements, TransitionTimeouts, keyCodes } from './utils';\n\nfunction noop() {}\n\nvar FadePropTypes = PropTypes.shape(Fade.propTypes);\nvar propTypes = {\n isOpen: PropTypes.bool,\n autoFocus: PropTypes.bool,\n centered: PropTypes.bool,\n scrollable: PropTypes.bool,\n size: PropTypes.string,\n toggle: PropTypes.func,\n keyboard: PropTypes.bool,\n role: PropTypes.string,\n labelledBy: PropTypes.string,\n backdrop: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['static'])]),\n onEnter: PropTypes.func,\n onExit: PropTypes.func,\n onOpened: PropTypes.func,\n onClosed: PropTypes.func,\n children: PropTypes.node,\n className: PropTypes.string,\n wrapClassName: PropTypes.string,\n modalClassName: PropTypes.string,\n backdropClassName: PropTypes.string,\n contentClassName: PropTypes.string,\n external: PropTypes.node,\n fade: PropTypes.bool,\n cssModule: PropTypes.object,\n zIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n backdropTransition: FadePropTypes,\n modalTransition: FadePropTypes,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.string, PropTypes.func]),\n unmountOnClose: PropTypes.bool,\n returnFocusAfterClose: PropTypes.bool\n};\nvar propsToOmit = Object.keys(propTypes);\nvar defaultProps = {\n isOpen: false,\n autoFocus: true,\n centered: false,\n scrollable: false,\n role: 'dialog',\n backdrop: true,\n keyboard: true,\n zIndex: 1050,\n fade: true,\n onOpened: noop,\n onClosed: noop,\n modalTransition: {\n timeout: TransitionTimeouts.Modal\n },\n backdropTransition: {\n mountOnEnter: true,\n timeout: TransitionTimeouts.Fade // uses standard fade transition\n\n },\n unmountOnClose: true,\n returnFocusAfterClose: true\n};\n\nvar Modal =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Modal, _React$Component);\n\n function Modal(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this._element = null;\n _this._originalBodyPadding = null;\n _this.getFocusableChildren = _this.getFocusableChildren.bind(_assertThisInitialized(_this));\n _this.handleBackdropClick = _this.handleBackdropClick.bind(_assertThisInitialized(_this));\n _this.handleBackdropMouseDown = _this.handleBackdropMouseDown.bind(_assertThisInitialized(_this));\n _this.handleEscape = _this.handleEscape.bind(_assertThisInitialized(_this));\n _this.handleStaticBackdropAnimation = _this.handleStaticBackdropAnimation.bind(_assertThisInitialized(_this));\n _this.handleTab = _this.handleTab.bind(_assertThisInitialized(_this));\n _this.onOpened = _this.onOpened.bind(_assertThisInitialized(_this));\n _this.onClosed = _this.onClosed.bind(_assertThisInitialized(_this));\n _this.manageFocusAfterClose = _this.manageFocusAfterClose.bind(_assertThisInitialized(_this));\n _this.clearBackdropAnimationTimeout = _this.clearBackdropAnimationTimeout.bind(_assertThisInitialized(_this));\n _this.state = {\n isOpen: false,\n showStaticBackdropAnimation: false\n };\n return _this;\n }\n\n var _proto = Modal.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n var _this$props = this.props,\n isOpen = _this$props.isOpen,\n autoFocus = _this$props.autoFocus,\n onEnter = _this$props.onEnter;\n\n if (isOpen) {\n this.init();\n this.setState({\n isOpen: true\n });\n\n if (autoFocus) {\n this.setFocus();\n }\n }\n\n if (onEnter) {\n onEnter();\n }\n\n this._isMounted = true;\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (this.props.isOpen && !prevProps.isOpen) {\n this.init();\n this.setState({\n isOpen: true\n }); // let render() renders Modal Dialog first\n\n return;\n } // now Modal Dialog is rendered and we can refer this._element and this._dialog\n\n\n if (this.props.autoFocus && this.state.isOpen && !prevState.isOpen) {\n this.setFocus();\n }\n\n if (this._element && prevProps.zIndex !== this.props.zIndex) {\n this._element.style.zIndex = this.props.zIndex;\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.clearBackdropAnimationTimeout();\n\n if (this.props.onExit) {\n this.props.onExit();\n }\n\n if (this._element) {\n this.destroy();\n\n if (this.props.isOpen) {\n this.close();\n }\n }\n\n this._isMounted = false;\n };\n\n _proto.onOpened = function onOpened(node, isAppearing) {\n this.props.onOpened();\n (this.props.modalTransition.onEntered || noop)(node, isAppearing);\n };\n\n _proto.onClosed = function onClosed(node) {\n var unmountOnClose = this.props.unmountOnClose; // so all methods get called before it is unmounted\n\n this.props.onClosed();\n (this.props.modalTransition.onExited || noop)(node);\n\n if (unmountOnClose) {\n this.destroy();\n }\n\n this.close();\n\n if (this._isMounted) {\n this.setState({\n isOpen: false\n });\n }\n };\n\n _proto.setFocus = function setFocus() {\n if (this._dialog && this._dialog.parentNode && typeof this._dialog.parentNode.focus === 'function') {\n this._dialog.parentNode.focus();\n }\n };\n\n _proto.getFocusableChildren = function getFocusableChildren() {\n return this._element.querySelectorAll(focusableElements.join(', '));\n };\n\n _proto.getFocusedChild = function getFocusedChild() {\n var currentFocus;\n var focusableChildren = this.getFocusableChildren();\n\n try {\n currentFocus = document.activeElement;\n } catch (err) {\n currentFocus = focusableChildren[0];\n }\n\n return currentFocus;\n } // not mouseUp because scrollbar fires it, shouldn't close when user scrolls\n ;\n\n _proto.handleBackdropClick = function handleBackdropClick(e) {\n if (e.target === this._mouseDownElement) {\n e.stopPropagation();\n var backdrop = this._dialog ? this._dialog.parentNode : null;\n\n if (backdrop && e.target === backdrop && this.props.backdrop === 'static') {\n this.handleStaticBackdropAnimation();\n }\n\n if (!this.props.isOpen || this.props.backdrop !== true) return;\n\n if (backdrop && e.target === backdrop && this.props.toggle) {\n this.props.toggle(e);\n }\n }\n };\n\n _proto.handleTab = function handleTab(e) {\n if (e.which !== 9) return;\n var focusableChildren = this.getFocusableChildren();\n var totalFocusable = focusableChildren.length;\n if (totalFocusable === 0) return;\n var currentFocus = this.getFocusedChild();\n var focusedIndex = 0;\n\n for (var i = 0; i < totalFocusable; i += 1) {\n if (focusableChildren[i] === currentFocus) {\n focusedIndex = i;\n break;\n }\n }\n\n if (e.shiftKey && focusedIndex === 0) {\n e.preventDefault();\n focusableChildren[totalFocusable - 1].focus();\n } else if (!e.shiftKey && focusedIndex === totalFocusable - 1) {\n e.preventDefault();\n focusableChildren[0].focus();\n }\n };\n\n _proto.handleBackdropMouseDown = function handleBackdropMouseDown(e) {\n this._mouseDownElement = e.target;\n };\n\n _proto.handleEscape = function handleEscape(e) {\n if (this.props.isOpen && e.keyCode === keyCodes.esc && this.props.toggle) {\n if (this.props.keyboard) {\n e.preventDefault();\n e.stopPropagation();\n this.props.toggle(e);\n } else if (this.props.backdrop === 'static') {\n e.preventDefault();\n e.stopPropagation();\n this.handleStaticBackdropAnimation();\n }\n }\n };\n\n _proto.handleStaticBackdropAnimation = function handleStaticBackdropAnimation() {\n var _this2 = this;\n\n this.clearBackdropAnimationTimeout();\n this.setState({\n showStaticBackdropAnimation: true\n });\n this._backdropAnimationTimeout = setTimeout(function () {\n _this2.setState({\n showStaticBackdropAnimation: false\n });\n }, 100);\n };\n\n _proto.init = function init() {\n try {\n this._triggeringElement = document.activeElement;\n } catch (err) {\n this._triggeringElement = null;\n }\n\n if (!this._element) {\n this._element = document.createElement('div');\n\n this._element.setAttribute('tabindex', '-1');\n\n this._element.style.position = 'relative';\n this._element.style.zIndex = this.props.zIndex;\n document.body.appendChild(this._element);\n }\n\n this._originalBodyPadding = getOriginalBodyPadding();\n conditionallyUpdateScrollbar();\n\n if (Modal.openCount === 0) {\n document.body.className = classNames(document.body.className, mapToCssModules('modal-open', this.props.cssModule));\n }\n\n Modal.openCount += 1;\n };\n\n _proto.destroy = function destroy() {\n if (this._element) {\n document.body.removeChild(this._element);\n this._element = null;\n }\n\n this.manageFocusAfterClose();\n };\n\n _proto.manageFocusAfterClose = function manageFocusAfterClose() {\n if (this._triggeringElement) {\n var returnFocusAfterClose = this.props.returnFocusAfterClose;\n if (this._triggeringElement.focus && returnFocusAfterClose) this._triggeringElement.focus();\n this._triggeringElement = null;\n }\n };\n\n _proto.close = function close() {\n if (Modal.openCount <= 1) {\n var modalOpenClassName = mapToCssModules('modal-open', this.props.cssModule); // Use regex to prevent matching `modal-open` as part of a different class, e.g. `my-modal-opened`\n\n var modalOpenClassNameRegex = new RegExp(\"(^| )\" + modalOpenClassName + \"( |$)\");\n document.body.className = document.body.className.replace(modalOpenClassNameRegex, ' ').trim();\n }\n\n this.manageFocusAfterClose();\n Modal.openCount = Math.max(0, Modal.openCount - 1);\n setScrollbarWidth(this._originalBodyPadding);\n };\n\n _proto.renderModalDialog = function renderModalDialog() {\n var _classNames,\n _this3 = this;\n\n var attributes = omit(this.props, propsToOmit);\n var dialogBaseClass = 'modal-dialog';\n return React.createElement(\"div\", _extends({}, attributes, {\n className: mapToCssModules(classNames(dialogBaseClass, this.props.className, (_classNames = {}, _classNames[\"modal-\" + this.props.size] = this.props.size, _classNames[dialogBaseClass + \"-centered\"] = this.props.centered, _classNames[dialogBaseClass + \"-scrollable\"] = this.props.scrollable, _classNames)), this.props.cssModule),\n role: \"document\",\n ref: function ref(c) {\n _this3._dialog = c;\n }\n }), React.createElement(\"div\", {\n className: mapToCssModules(classNames('modal-content', this.props.contentClassName), this.props.cssModule)\n }, this.props.children));\n };\n\n _proto.render = function render() {\n var unmountOnClose = this.props.unmountOnClose;\n\n if (!!this._element && (this.state.isOpen || !unmountOnClose)) {\n var isModalHidden = !!this._element && !this.state.isOpen && !unmountOnClose;\n this._element.style.display = isModalHidden ? 'none' : 'block';\n var _this$props2 = this.props,\n wrapClassName = _this$props2.wrapClassName,\n modalClassName = _this$props2.modalClassName,\n backdropClassName = _this$props2.backdropClassName,\n cssModule = _this$props2.cssModule,\n isOpen = _this$props2.isOpen,\n backdrop = _this$props2.backdrop,\n role = _this$props2.role,\n labelledBy = _this$props2.labelledBy,\n external = _this$props2.external,\n innerRef = _this$props2.innerRef;\n var modalAttributes = {\n onClick: this.handleBackdropClick,\n onMouseDown: this.handleBackdropMouseDown,\n onKeyUp: this.handleEscape,\n onKeyDown: this.handleTab,\n style: {\n display: 'block'\n },\n 'aria-labelledby': labelledBy,\n role: role,\n tabIndex: '-1'\n };\n var hasTransition = this.props.fade;\n\n var modalTransition = _objectSpread2({}, Fade.defaultProps, {}, this.props.modalTransition, {\n baseClass: hasTransition ? this.props.modalTransition.baseClass : '',\n timeout: hasTransition ? this.props.modalTransition.timeout : 0\n });\n\n var backdropTransition = _objectSpread2({}, Fade.defaultProps, {}, this.props.backdropTransition, {\n baseClass: hasTransition ? this.props.backdropTransition.baseClass : '',\n timeout: hasTransition ? this.props.backdropTransition.timeout : 0\n });\n\n var Backdrop = backdrop && (hasTransition ? React.createElement(Fade, _extends({}, backdropTransition, {\n in: isOpen && !!backdrop,\n cssModule: cssModule,\n className: mapToCssModules(classNames('modal-backdrop', backdropClassName), cssModule)\n })) : React.createElement(\"div\", {\n className: mapToCssModules(classNames('modal-backdrop', 'show', backdropClassName), cssModule)\n }));\n return React.createElement(Portal, {\n node: this._element\n }, React.createElement(\"div\", {\n className: mapToCssModules(wrapClassName)\n }, React.createElement(Fade, _extends({}, modalAttributes, modalTransition, {\n in: isOpen,\n onEntered: this.onOpened,\n onExited: this.onClosed,\n cssModule: cssModule,\n className: mapToCssModules(classNames('modal', modalClassName, this.state.showStaticBackdropAnimation && 'modal-static'), cssModule),\n innerRef: innerRef\n }), external, this.renderModalDialog()), Backdrop));\n }\n\n return null;\n };\n\n _proto.clearBackdropAnimationTimeout = function clearBackdropAnimationTimeout() {\n if (this._backdropAnimationTimeout) {\n clearTimeout(this._backdropAnimationTimeout);\n this._backdropAnimationTimeout = undefined;\n }\n };\n\n return Modal;\n}(React.Component);\n\nModal.propTypes = propTypes;\nModal.defaultProps = defaultProps;\nModal.openCount = 0;\nexport default Modal;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'div'\n};\n\nvar ModalBody = function ModalBody(props) {\n var className = props.className,\n cssModule = props.cssModule,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, [\"className\", \"cssModule\", \"tag\"]);\n\n var classes = mapToCssModules(classNames(className, 'modal-body'), cssModule);\n return React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nModalBody.propTypes = propTypes;\nModalBody.defaultProps = defaultProps;\nexport default ModalBody;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'div'\n};\n\nvar ModalFooter = function ModalFooter(props) {\n var className = props.className,\n cssModule = props.cssModule,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, [\"className\", \"cssModule\", \"tag\"]);\n\n var classes = mapToCssModules(classNames(className, 'modal-footer'), cssModule);\n return React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nModalFooter.propTypes = propTypes;\nModalFooter.defaultProps = defaultProps;\nexport default ModalFooter;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n active: PropTypes.bool,\n 'aria-label': PropTypes.string,\n block: PropTypes.bool,\n color: PropTypes.string,\n disabled: PropTypes.bool,\n outline: PropTypes.bool,\n tag: tagPropType,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.func, PropTypes.string]),\n onClick: PropTypes.func,\n size: PropTypes.string,\n children: PropTypes.node,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n close: PropTypes.bool\n};\nvar defaultProps = {\n color: 'secondary',\n tag: 'button'\n};\n\nvar Button =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Button, _React$Component);\n\n function Button(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.onClick = _this.onClick.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = Button.prototype;\n\n _proto.onClick = function onClick(e) {\n if (this.props.disabled) {\n e.preventDefault();\n return;\n }\n\n if (this.props.onClick) {\n this.props.onClick(e);\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n active = _this$props.active,\n ariaLabel = _this$props['aria-label'],\n block = _this$props.block,\n className = _this$props.className,\n close = _this$props.close,\n cssModule = _this$props.cssModule,\n color = _this$props.color,\n outline = _this$props.outline,\n size = _this$props.size,\n Tag = _this$props.tag,\n innerRef = _this$props.innerRef,\n attributes = _objectWithoutPropertiesLoose(_this$props, [\"active\", \"aria-label\", \"block\", \"className\", \"close\", \"cssModule\", \"color\", \"outline\", \"size\", \"tag\", \"innerRef\"]);\n\n if (close && typeof attributes.children === 'undefined') {\n attributes.children = React.createElement(\"span\", {\n \"aria-hidden\": true\n }, \"\\xD7\");\n }\n\n var btnOutlineColor = \"btn\" + (outline ? '-outline' : '') + \"-\" + color;\n var classes = mapToCssModules(classNames(className, {\n close: close\n }, close || 'btn', close || btnOutlineColor, size ? \"btn-\" + size : false, block ? 'btn-block' : false, {\n active: active,\n disabled: this.props.disabled\n }), cssModule);\n\n if (attributes.href && Tag === 'button') {\n Tag = 'a';\n }\n\n var defaultAriaLabel = close ? 'Close' : null;\n return React.createElement(Tag, _extends({\n type: Tag === 'button' && attributes.onClick ? 'button' : undefined\n }, attributes, {\n className: classes,\n ref: innerRef,\n onClick: this.onClick,\n \"aria-label\": ariaLabel || defaultAriaLabel\n }));\n };\n\n return Button;\n}(React.Component);\n\nButton.propTypes = propTypes;\nButton.defaultProps = defaultProps;\nexport default Button;","import React, { useState, useEffect } from 'react';\nimport { Button, Modal, ModalBody, ModalFooter } from 'reactstrap';\ninterface Props {\n isOpen: boolean;\n}\nexport default function NotificationDialog(props: Props) {\n const [modal, setModal] = useState(false);\n const togglePopup = () => {\n console.log(props.isOpen);\n setModal(!modal);\n };\n useEffect(() => {\n console.log(props.isOpen);\n if (props.isOpen) setModal(true);\n }, [props.isOpen]);\n return (\n \n \n User has no permissions assigned. Please contact your app administrator, or the Help Desk at (901)578-2222.\n \n \n \n \n \n );\n}\n","/* eslint-disable eqeqeq */\nimport React, { useEffect, useState } from 'react';\nimport { Container } from 'reactstrap';\nimport AdminFooter from './Footer';\n\nimport { Component, ComponentType } from '@amplify/amplify-sdk';\nimport { onComponentApps } from '../../services/SubAppLoader';\nimport { NavLink } from 'react-router-dom';\nimport NotificationDialog from './NotificationDialog';\ninterface Props {\n children: React.ReactNode;\n admin: boolean;\n}\n\nexport default function AdminLayout(props: Props) {\n const [components, setComponents] = useState([]);\n const [navSlug, setNavSlug] = useState('');\n const [navCoreSlug, setNavCoreSlug] = useState('');\n const [navNotificationSlug, setNavNotificationSlug] = useState('');\n const [isOpen, setIsOpen] = useState(false);\n // const [count, setCount] = useState(0);\n useEffect(() => {\n let count = 0;\n const $components = onComponentApps().subscribe(items => {\n count++;\n setIsOpen(false);\n if (items.length > 0) {\n setComponents([...items]);\n }\n\n if (count === 3 && items.length === 0) setIsOpen(true);\n });\n return () => {\n $components.unsubscribe();\n };\n }, []);\n\n useEffect(() => {\n document.documentElement.scrollTop = 0;\n if (document?.scrollingElement?.scrollTop) {\n document.scrollingElement.scrollTop = 0;\n }\n });\n\n useEffect(() => {\n let navigation: Component | null = null;\n let coreNavigation: Component | null = null;\n let notifications: Component | null = null;\n if (!navigation && components.find(x => x.type === ComponentType.navigation)) {\n navigation = components.find(x => x.type === ComponentType.navigation) as Component;\n navigation.mount('Navigation');\n setNavSlug(`${navigation.slug}-container`);\n }\n if (!coreNavigation && components.find(x => x.type === ComponentType.coreNavigation)) {\n coreNavigation = components.find(x => x.type === ComponentType.coreNavigation) as Component;\n coreNavigation.mount('CoreNavigation');\n setNavCoreSlug(`${coreNavigation.slug}-container`);\n }\n if(!notifications && components.find(x => x.type === ComponentType.notification)) {\n notifications = components.find(x => x.type === ComponentType.notification) as Component;\n notifications.mount('Notifications');\n setNavNotificationSlug(`${notifications.slug}-container`);\n }\n return () => {\n if (!!navigation) navigation.unmount('Navigation');\n if (!!coreNavigation) coreNavigation.unmount('CoreNavigation');\n if (!!notifications) notifications.unmount('Notifications')\n };\n }, [components]);\n\n const logo = {\n innerLink: '/',\n imgSrc: require('../../assets/img/brand/st-jude-logo.png'),\n imgAlt: '...',\n };\n return (\n <>\n
\n \n {props.children}\n \n \n \n \n
\n \n );\n}\n","import { Version } from '@amplify/amplify-sdk';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { onVersions } from '../../services/SubAppLoader';\r\n\r\ninterface AdditionalInfoProps {\r\n iterable: Map;\r\n}\r\nexport function Versions() {\r\n const [versions, setVersions] = useState([]);\r\n\r\n useEffect(() => {\r\n const $versions = onVersions().subscribe(items => {\r\n if (items.length > 0) {\r\n setVersions([...items]);\r\n }\r\n });\r\n return () => {\r\n $versions.unsubscribe();\r\n };\r\n }, []);\r\n\r\n const AdditionalInfo = (props: AdditionalInfoProps) => {\r\n const { iterable } = props;\r\n const array = Array.from(iterable || [], ([name, value]) => ({ name, value }));\r\n return (\r\n <>\r\n {array.map(x => (\r\n
\r\n {x.name}: {x.value}\r\n
\r\n ))}\r\n \r\n );\r\n };\r\n\r\n return (\r\n
\r\n {versions.map(version => (\r\n
\r\n

\r\n {version.name}\r\n

\r\n
Author: {version.author}
\r\n
Version: {version.version}
\r\n
Commit Hash: {version.commitHash}
\r\n
Released: {version.releaseDate}
\r\n \r\n
\r\n ))}\r\n
\r\n );\r\n}\r\n","import React, { useState, useEffect, useCallback } from 'react';\nimport { BrowserRouter, Route, useHistory, Switch, useLocation, Redirect } from 'react-router-dom';\nimport { Security, SecureRoute, LoginCallback, useOktaAuth } from '@okta/okta-react';\nimport { SubApp, AmplifyPoco } from '@amplify/amplify-sdk';\nimport { Col, Container, Row } from 'reactstrap';\nimport config from '../Config';\nimport oktaConfig from '../okta-config';\nimport AppDetails from './AppDetails';\nimport AdminLayout from './Shared/AdminLayout';\nimport { loadAppConfigs, onAmplifyApps, setOktaToken, urlHistory } from '../services/SubAppLoader';\nimport { Versions } from './Shared/Versions';\nimport { JwtToken } from '../services/Types.js';\nimport { OktaAuth, toRelativeUrl } from '@okta/okta-auth-js';\n\nconst { REACT_APP_STAGE, REACT_APP_CDN_HOST } = process.env;\n\n// const $username = new BehaviorSubject('');\n// export let onUsername = () => $username.asObservable() as Observable;\n\nfunction HasAccessToRouter() {\n const { authState, authService, oktaAuth } = useOktaAuth();\n const history = useHistory();\n const [subApps, setSubApps] = useState([]);\n const [admin, setAdmin] = useState(false);\n const [token, setToken] = useState();\n\n useEffect(() => {\n const $subApps = onAmplifyApps().subscribe(items => {\n setSubApps([...items]);\n });\n return () => {\n $subApps.unsubscribe();\n };\n }, []);\n\n useEffect(() => {\n if (authState?.isAuthenticated && authState?.accessToken) {\n const isLoggedIn = window.__IS_LOGGED_IN__;\n const token = authState.accessToken.accessToken;\n setOktaToken(token);\n if (!isLoggedIn) {\n window.__IS_LOGGED_IN__ = true;\n window.amplify.axios.post('/reporting/logins');\n }\n } else {\n oktaAuth.tokenManager.get('accessToken').then(function (oktaToken: any) {\n if (!oktaToken && !token && history.location.pathname !== '/implicit/callback') {\n const baseURL = `${window.location.origin}/${AppDetails.path}`;\n let replaceUrl = toRelativeUrl(window.location.href || '/', baseURL);\n oktaAuth.setOriginalUri(replaceUrl);\n oktaAuth.signInWithRedirect();\n } else if (oktaToken && !token) {\n setToken(oktaToken.accessToken.accessToken);\n const jwt: JwtToken = JSON.parse(atob(oktaToken.accessToken?.split('.')[1]));\n var adm = jwt?.Roles?.some(r => r.toLowerCase().endsWith('-admin'));\n if (adm) setAdmin(adm);\n if (jwt) {\n window.__IS_LOGGED_IN__ = true;\n //history.push('/apps/dashboard');\n }\n }\n });\n }\n }, [authState?.isAuthenticated, authState?.accessToken, authState, authService]);\n\n useEffect(() => {\n const token = authState?.accessToken?.accessToken || '';\n if (token) {\n window.amplify.axios\n .get('/apps', {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n })\n .then(\n (result: any) => {\n loadAppConfigs(result.data);\n },\n (error: any) => {\n console.log(error);\n window.amplify.urlHistory.push('/login');\n }\n );\n }\n }, [authState?.accessToken?.accessToken]);\n\n function NoMatch() {\n const location = useLocation();\n\n console.log(`No match for ${location.pathname}`);\n\n if (subApps.length) {\n return ;\n }\n return <>;\n }\n\n function getConfig() {\n return (\n
\n Stage : {REACT_APP_STAGE} \n
\n CDN Host : {REACT_APP_CDN_HOST} \n
\n Amplify Api Host : {config.amplifyApiHost} \n
\n Amplify Client Id : {config.amplifyClientId} \n
\n Okta Client Id : {oktaConfig.oidc.clientId} \n
\n Okta Issuer : {oktaConfig.oidc.issuer} \n
\n
\n Okta Redirect Uri : {oktaConfig.oidc.redirectUri} \n
\n
\n );\n }\n const getLogin = () => {\n return ;\n };\n\n let containerStyle: any = {};\n\n return (\n \n \n \n \n \n \n\n \n \n \n \n \n \n \n {subApps.map((subApp: SubApp, index: number) => (\n \n ))}\n \n \n \n \n \n \n \n \n );\n}\nconst oktaAuth = new OktaAuth(oktaConfig.oidc);\n\nexport function SecurityGuard() {\n const history = useHistory();\n urlHistory.setHistoryInstance(history);\n\n const restoreOriginalUri = useCallback((oktaAuth: OktaAuth, originalUri: string) => {\n history.replace(originalUri);\n }, []);\n\n return (\n \n \n \n );\n}\n\nexport default function App() {\n return (\n \n \n \n );\n}\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nimport appConfig from \"./Config\";\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(appConfig.publicUrl , window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${appConfig.publicUrl}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (response.status === 404 || (contentType != null && contentType.indexOf('javascript') === -1)) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log('No internet connection found. App is running in offline mode.');\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport App from './components/App';\nimport * as serviceWorker from './serviceWorker';\n\nimport './assets/plugins/nucleo/css/nucleo.css';\nimport '@fortawesome/fontawesome-free/css/all.min.css';\nimport './assets/scss/argon-dashboard-react.scss';\nimport './assets/css/app.css'\n\n\nReactDOM.render(, document.getElementById('root'));\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"names":["exports","rxjs_1","require","AppType","ComponentType","UrlHistory","_this","this","_historyInstance","$historyUrl","BehaviorSubject","onHistoryUrl","asObservable","prototype","setHistoryInstance","instance","location","pathname","getValue","next","push","url","currentUrl","_a","_b","_c","module","utils","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","config","Promise","resolve","reject","requestData","data","requestHeaders","headers","responseType","isFormData","request","XMLHttpRequest","auth","username","password","unescape","encodeURIComponent","Authorization","btoa","fullPath","baseURL","onloadend","responseHeaders","getAllResponseHeaders","response","responseText","status","statusText","open","method","toUpperCase","params","paramsSerializer","timeout","onreadystatechange","readyState","responseURL","indexOf","setTimeout","onabort","onerror","ontimeout","timeoutErrorMessage","transitional","clarifyTimeoutError","isStandardBrowserEnv","xsrfValue","withCredentials","xsrfCookieName","read","undefined","xsrfHeaderName","forEach","val","key","toLowerCase","setRequestHeader","isUndefined","onDownloadProgress","addEventListener","onUploadProgress","upload","cancelToken","promise","then","cancel","abort","send","bind","Axios","mergeConfig","createInstance","defaultConfig","context","extend","axios","create","instanceConfig","defaults","Cancel","CancelToken","isCancel","all","promises","spread","isAxiosError","message","toString","__CANCEL__","executor","TypeError","resolvePromise","token","reason","throwIfRequested","source","c","value","InterceptorManager","dispatchRequest","validator","validators","interceptors","arguments","assertOptions","silentJSONParsing","boolean","forcedJSONParsing","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","unshift","fulfilled","rejected","responseInterceptorChain","chain","Array","apply","concat","length","shift","newConfig","onFulfilled","onRejected","error","getUri","replace","handlers","use","options","eject","id","fn","h","isAbsoluteURL","combineURLs","requestedURL","enhanceError","code","Error","transformData","throwIfCancellationRequested","call","transformRequest","merge","common","adapter","transformResponse","toJSON","name","description","number","fileName","lineNumber","columnNumber","stack","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","directMergeKeys","getMergedValue","target","isPlainObject","isArray","slice","mergeDeepProperties","prop","axiosKeys","otherKeys","Object","keys","filter","validateStatus","fns","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","process","getDefaultAdapter","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","isObject","rawValue","parser","encoder","isString","JSON","parse","trim","e","stringify","stringifySafely","strictJSONParsing","maxContentLength","maxBodyLength","thisArg","args","i","encode","serializedParams","parts","v","isDate","toISOString","join","hashmarkIndex","relativeURL","write","expires","path","domain","secure","cookie","isNumber","Date","toGMTString","document","match","RegExp","decodeURIComponent","remove","now","test","payload","originURL","msie","navigator","userAgent","urlParsingNode","createElement","resolveURL","href","setAttribute","protocol","host","search","hash","hostname","port","charAt","window","requestURL","parsed","normalizedName","ignoreDuplicateOf","split","line","substr","callback","arr","pkg","type","thing","deprecatedWarnings","currentVerArr","version","isOlderVersion","thanVersion","pkgVersionArr","destVer","isDeprecated","formatMessage","opt","desc","opts","console","warn","schema","allowUnknown","result","getPrototypeOf","isFunction","obj","l","hasOwnProperty","constructor","FormData","ArrayBuffer","isView","pipe","URLSearchParams","product","assignValue","a","b","str","stripBOM","content","charCodeAt","hasOwn","classNames","classes","arg","argType","inner","default","global","self","__self__","F","fetch","DOMException","support","Symbol","Blob","viewClasses","normalizeName","String","normalizeValue","iteratorFor","items","iterator","done","Headers","map","append","header","getOwnPropertyNames","consumed","body","bodyUsed","fileReaderReady","reader","onload","readBlobAsArrayBuffer","blob","FileReader","readAsArrayBuffer","bufferClone","buf","view","Uint8Array","byteLength","set","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","_bodyFormData","DataView","_bodyArrayBuffer","get","arrayBuffer","text","readAsText","readBlobAsText","chars","fromCharCode","readArrayBufferAsText","formData","decode","json","oldValue","has","values","entries","methods","Request","input","credentials","mode","signal","upcased","normalizeMethod","referrer","form","bytes","rawHeaders","Response","bodyInit","ok","clone","redirectStatuses","redirect","RangeError","err","init","aborted","xhr","abortXhr","removeEventListener","polyfill","defineProperty","ponyfill","ctx","_interopRequireDefault","__esModule","element","className","classList","add","_hasClass","baseVal","contains","replaceClassName","origClass","classToRemove","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","assign","test1","test2","n","test3","letter","shouldUseNative","from","symbols","to","toObject","s","CancelError","super","isCanceled","PCancelable","userFn","_len","arguments_","_key","onCancel","_cancelHandlers","_isPending","_isCanceled","_rejectOnCancel","_promise","_reject","handler","defineProperties","shouldReject","catch","finally","onFinally","setPrototypeOf","isarray","pathToRegexp","compile","tokensToFunction","tokensToRegExp","PATH_REGEXP","res","tokens","index","defaultDelimiter","delimiter","exec","m","escaped","offset","prefix","capture","group","modifier","asterisk","partial","repeat","optional","pattern","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","matches","flags","pretty","segment","j","attachKeys","re","sensitive","strict","end","route","endsWithDelimiter","groups","regexpToRegexp","arrayToRegexp","stringToRegexp","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","props","propName","componentName","propFullName","secret","getShim","isRequired","ReactPropTypes","array","bigint","bool","func","object","string","symbol","any","arrayOf","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","aa","r","u","ba","d","f","g","k","onError","da","ea","fa","ha","ia","ja","la","ma","na","oa","currentTarget","ka","pa","qa","ra","sa","extractEvents","eventTypes","ta","phasedRegistrationNames","ua","registrationName","va","wa","dependencies","xa","ya","za","Aa","Ba","Ca","stateNode","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","C","Ua","Va","xlinkHref","Wa","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","Xa","Sa","isNaN","Ta","Ra","removeAttribute","setAttributeNS","ReactCurrentDispatcher","current","ReactCurrentBatchConfig","suspense","Ya","E","for","Za","$a","ab","bb","cb","db","eb","fb","gb","hb","ib","jb","kb","lb","mb","nb","pb","displayName","$$typeof","render","_status","_result","qb","tag","_debugOwner","_debugSource","return","rb","sb","nodeName","xb","_valueTracker","getOwnPropertyDescriptor","configurable","enumerable","setValue","stopTracking","tb","yb","checked","zb","defaultChecked","defaultValue","_wrapperState","initialChecked","Ab","initialValue","controlled","Bb","Cb","Db","Eb","ownerDocument","activeElement","Gb","children","Children","Fb","Hb","selected","defaultSelected","disabled","Ib","dangerouslySetInnerHTML","Jb","Kb","Lb","textContent","Mb","Nb","Ob","Pb","Qb","namespaceURI","innerHTML","valueOf","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","Rb","lastChild","nodeType","nodeValue","Sb","Tb","animationend","animationiteration","animationstart","transitionend","Ub","Vb","Wb","style","animation","transition","Xb","Yb","Zb","$b","ac","bc","WeakMap","Map","cc","dc","alternate","effectTag","ec","memoizedState","dehydrated","fc","hc","child","sibling","gc","ic","jc","kc","lc","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","release","mc","nc","srcElement","correspondingUseElement","parentNode","oc","pc","qc","topLevelType","nativeEvent","targetInst","ancestors","rc","pop","eventSystemFlags","sc","containerInfo","tc","uc","vc","wc","xc","yc","zc","Ac","Bc","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Kc","blockedOn","container","Lc","delete","pointerId","Mc","Nc","Pc","unstable_runWithPriority","priority","hydrate","Qc","Rc","Sc","Tc","Uc","unstable_scheduleCallback","unstable_NormalPriority","Vc","Wc","Yc","Zc","$c","ad","bubbled","captured","eventPriority","bd","cd","dd","unstable_UserBlockingPriority","ed","fd","gd","hd","Oc","jd","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","kd","ld","md","setProperty","substring","nd","menuitem","area","base","br","col","embed","hr","img","keygen","link","meta","param","track","wbr","od","pd","is","qd","rd","sd","td","ud","vd","nextSibling","wd","compareDocumentPosition","xd","HTMLIFrameElement","contentWindow","yd","contentEditable","zd","Ad","Bd","Cd","Dd","Ed","Fd","autoFocus","Gd","__html","Hd","Id","clearTimeout","Jd","Kd","previousSibling","Ld","Math","random","Md","Nd","Od","Pd","Qd","Rd","Sd","Td","dispatchConfig","Ud","_targetInst","Vd","Wd","Xd","Yd","Zd","$d","ae","be","ce","G","Interface","isDefaultPrevented","defaultPrevented","returnValue","ee","eventPool","fe","destructor","de","getPooled","preventDefault","stopPropagation","cancelBubble","persist","eventPhase","bubbles","cancelable","timeStamp","isTrusted","ge","he","ie","je","ke","documentMode","le","me","ne","oe","beforeInput","compositionEnd","compositionStart","compositionUpdate","pe","qe","keyCode","detail","se","ve","locale","which","te","ctrlKey","altKey","metaKey","char","ue","we","color","date","datetime","email","month","range","tel","time","week","xe","ye","change","ze","Ae","Be","Ce","De","Ee","Fe","Ge","detachEvent","He","Ie","attachEvent","Je","Ke","Le","Me","_isInputEventSupported","Ne","Oe","Alt","Control","Meta","Shift","Pe","getModifierState","Qe","Re","Se","Te","Ue","Ve","screenX","screenY","clientX","clientY","pageX","pageY","shiftKey","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","We","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Xe","mouseEnter","mouseLeave","pointerEnter","pointerLeave","Ye","defaultView","parentWindow","p","$e","af","bf","cf","df","select","ef","ff","gf","hf","jf","start","selectionStart","selectionEnd","anchorNode","getSelection","anchorOffset","focusNode","focusOffset","kf","onSelect","lf","animationName","elapsedTime","pseudoElement","mf","clipboardData","nf","of","charCode","pf","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","qf","rf","sf","dataTransfer","tf","touches","targetTouches","changedTouches","uf","vf","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","wf","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","yf","zf","H","I","Af","J","K","Bf","Cf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","L","childContextTypes","Df","Ef","Ff","getChildContext","Gf","__reactInternalMemoizedMergedChildContext","Hf","If","Jf","Kf","unstable_cancelCallback","Lf","unstable_requestPaint","Mf","unstable_now","Nf","unstable_getCurrentPriorityLevel","Of","unstable_ImmediatePriority","Pf","Qf","Rf","unstable_LowPriority","Sf","unstable_IdlePriority","Tf","Uf","unstable_shouldYield","Vf","Wf","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","defaultProps","jg","kg","lg","mg","ng","og","_context","_currentValue","pg","childExpirationTime","qg","firstContext","expirationTime","rg","sg","observedBits","responders","tg","ug","updateQueue","baseState","baseQueue","shared","pending","effects","vg","wg","suspenseConfig","xg","yg","zg","x","z","ca","Ag","D","t","Bg","Cg","Dg","Eg","Component","refs","Fg","Jg","isMounted","_reactInternalFiber","enqueueSetState","Gg","Hg","Ig","enqueueReplaceState","enqueueForceUpdate","Kg","shouldComponentUpdate","isPureReactComponent","Lg","contextType","state","updater","Mg","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Ng","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Og","Pg","ref","_owner","_stringRef","Qg","Rg","lastEffect","nextEffect","firstEffect","Sg","Tg","Ug","implementation","Vg","Wg","y","A","q","Xg","Yg","Zg","$g","ah","bh","ch","dh","documentElement","tagName","eh","fh","gh","M","hh","memoizedProps","revealOrder","ih","responder","jh","kh","lh","N","O","P","mh","Q","nh","oh","ph","qh","rh","sh","th","queue","uh","vh","wh","lastRenderedReducer","action","eagerReducer","eagerState","lastRenderedState","dispatch","xh","yh","zh","Ah","destroy","deps","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","readContext","useCallback","useContext","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useResponder","useDeferredValue","useTransition","Oh","Ph","Qh","Rh","Sh","Th","pendingProps","Uh","Vh","Wh","Xh","Yh","ReactCurrentOwner","R","Zh","$h","ai","bi","compare","ci","di","ei","fi","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","gi","getDerivedStateFromError","hi","pendingContext","ni","oi","pi","qi","ii","retryTime","ji","fallback","unstable_avoidThisFallback","ki","li","isBackwards","rendering","renderingStartTime","last","tail","tailExpiration","tailMode","mi","ri","si","wasMultiple","multiple","onClick","onclick","size","createElementNS","createTextNode","S","ti","ui","vi","wi","T","xi","U","yi","zi","Ai","Bi","WeakSet","Set","Ci","Fi","Ei","Gi","__reactInternalSnapshotBeforeUpdate","Hi","Ii","Ji","focus","Ki","Li","componentWillUnmount","Di","Mi","Ni","Oi","Pi","Qi","Ri","insertBefore","_reactRootContainer","Si","Ti","display","Ui","Vi","Wi","Xi","Yi","Zi","$i","componentDidCatch","aj","componentStack","Rj","bj","ceil","cj","dj","V","ej","fj","gj","hj","ij","jj","W","X","kj","lj","mj","nj","oj","pj","Y","qj","rj","sj","tj","uj","vj","wj","timeoutMs","xj","yj","Z","zj","lastExpiredTime","Aj","firstPendingTime","lastPingedTime","nextKnownPendingLevel","callbackExpirationTime","callbackPriority","callbackNode","Bj","Cj","Dj","Ej","Fj","Gj","Hj","finishedWork","finishedExpirationTime","lastSuspendedTime","Ij","timeoutHandle","Jj","busyMinDurationMs","busyDelayMs","Kj","Mj","Nj","pingCache","Oj","w","ub","Pj","Xc","Qj","Sj","firstSuspendedTime","rangeCount","wb","activeElementDetached","focusedElem","selectionRange","Tj","B","min","createRange","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","top","scrollTop","vb","Uj","Vj","Wj","hidden","_ctor","ob","Xj","_calculateChangedBits","unstable_observedBits","Zj","isReactComponent","pendingChildren","ak","bk","ck","dk","ek","fk","Jc","_internalRoot","gk","ik","hasAttribute","hk","kk","jk","unmount","querySelectorAll","Lj","lk","Events","findFiberByHostInstance","__REACT_DEVTOOLS_GLOBAL_HOOK__","isDisabled","supportsFiber","inject","onCommitFiberRoot","onCommitFiberUnmount","Yj","overrideHookState","overrideProps","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","bundleType","rendererPackageName","createPortal","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","checkDCE","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","ForwardRef","Fragment","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","setState","nextProps","prevState","nextState","prevProps","__reactInternalSnapshotFlag","__reactInternalSnapshot","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","newApiName","maybeSnapshot","snapshot","__suppressDeprecationWarning","reactIs","REACT_STATICS","getDefaultProps","mixins","propTypes","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","TYPE_STATICS","getStatics","component","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","descriptor","newObj","_interopRequireWildcard","_addClass","_removeClass","_react","_Transition","_extends","addClass","removeClass","CSSTransition","_React$Component","subClass","superClass","onEnter","appearing","getClassNames","removeClasses","onEntering","activeClassName","reflowAndAddClass","onEntered","appearClassName","doneClassName","enterClassName","onExit","onExiting","onExited","isStringClassNames","__proto__","_proto","_this$getClassNames6","_default","_reactDom","_TransitionGroup","ReplaceTransition","_args","handleEnter","_len2","_key2","handleLifecycle","handleEntering","_len3","_key3","handleEntered","_len4","_key4","handleExit","_len5","_key5","handleExiting","_len6","_key6","handleExited","_len7","_key7","idx","originalArgs","_child$props","toArray","_this$props","inProp","in","excluded","sourceKeys","_objectWithoutPropertiesLoose","_React$Children$toArr","first","second","cloneElement","EXITING","ENTERED","ENTERING","EXITED","UNMOUNTED","_reactLifecyclesCompat","Transition","initialStatus","parentGroup","transitionGroup","appear","isMounting","enter","appearStatus","unmountOnExit","mountOnEnter","nextCallback","_ref","updateStatus","nextStatus","cancelNextCallback","getTimeouts","exit","mounting","performEnter","performExit","_this2","timeouts","enterTimeout","safeSetState","onTransitionEnd","_this3","setNextCallback","_this4","active","event","doesNotHaveTimeoutOrListener","addEndListener","childProps","only","noop","_propTypes","_ChildMapping","_assertThisInitialized","ReferenceError","TransitionGroup","firstRender","appeared","mounted","prevChildMapping","getInitialChildMapping","getNextChildMapping","currentChildMapping","getChildMapping","childFactory","_CSSTransition","_ReplaceTransition","mergeChildMappings","getProp","nextChildMapping","isValidElement","hasPrev","hasNext","prevChild","isLeaving","mapFn","mapper","prev","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","nextKey","pendingNextKey","classNamesShape","timeoutsShape","forceUpdate","__self","__source","keyPrefix","count","escape","IsSomeRendererActing","PureComponent","createContext","_currentValue2","_threadCount","Provider","Consumer","createFactory","createRef","forwardRef","lazy","memo","RefCountOperator","connectable","subscriber","_refCount","refCounter","RefCountSubscriber","subscription","subscribe","closed","connection","connect","_super","destination","tslib_1","_unsubscribe","refCount","sharedConnection","_connection","unsubscribe","ConnectableObservable","subjectFactory","_subscribe","getSubject","subject","_subject","isStopped","_isComplete","Subscription","ConnectableSubscriber","EMPTY","lift","_error","_complete","SubjectSubscriber","GroupedObservable","groupSubject","refCountSubscription","InnerRefCountSubscription","parent","attemptedToUnsubscribe","AsyncAction","scheduler","work","schedule","delay","recycleAsyncId","requestAsyncId","setInterval","flush","clearInterval","execute","_execute","errored","errorValue","actions","splice","Action","QueueAction","Scheduler","SchedulerAction","AsyncScheduler","delegate","scheduled","queueScheduler","QueueScheduler","Observable","complete","empty","emptyScheduled","isScheduler","NotificationKind","subscribeToArray","len","scheduleArray","sub","fromArray","_i","throwError","Notification","kind","hasValue","observe","observer","do","accept","nextOrObserver","toObservable","createNext","undefinedValueNotification","createComplete","completeNotification","ObserveOnSubscriber","notification","scheduleMessage","ObserveOnMessage","_next","ReplaySubject","bufferSize","windowTime","Number","POSITIVE_INFINITY","_events","_infiniteTimeWindow","_bufferSize","_windowTime","nextTimeWindow","nextInfiniteTimeWindow","ReplayEvent","_getNow","_trimBufferThenGetEvents","ObjectUnsubscribedError","hasError","observers","SubjectSubscription","thrownError","spliceCount","eventsCount","max","AsyncSubject","hasCompleted","nextHandle","RESOLVED","activeHandles","findAndClearHandle","handle","Immediate","AsapAction","asapScheduler","AsapScheduler","asyncScheduler","AnimationFrameAction","requestAnimationFrame","cancelAnimationFrame","animationFrameScheduler","AnimationFrameScheduler","VirtualTimeScheduler","maxFrames","VirtualAction","frame","frameTimeFactor","sort","sortActions","isObservable","ArgumentOutOfRangeErrorImpl","EmptyErrorImpl","TimeoutErrorImpl","project","MapOperator","MapSubscriber","bindCallback","callbackFunc","resultSelector","innerArgs","canReportError","dispatchNext","bindNodeCallback","dispatchError","OuterSubscriber","notifyNext","outerValue","innerValue","outerIndex","innerIndex","innerSub","notifyError","notifyComplete","InnerSubscriber","getSymbolIterator","isPromise","subscribeTo","Symbol_observable","obs","isArrayLike","hostReportError","Symbol_iterator","iterable","item","subscribeToResult","outerSubscriber","innerSubscriber","NONE","combineLatest","observables","CombineLatestOperator","CombineLatestSubscriber","observable","toRespond","unused","_outerValue","oldVal","_tryResultSelector","isInteropObservable","scheduleObservable","schedulePromise","isIterable","scheduleIterable","SimpleInnerSubscriber","SimpleOuterSubscriber","innerSubscribe","mergeMap","concurrent","MergeMapOperator","MergeMapSubscriber","_tryNext","_innerSub","ish","innerSubscription","mergeAll","concatAll","defer","observableFactory","forkJoin","sources","first_1","forkJoinInternal","resultSelector_1","completed","_loop_1","emitted","reduce","fromEvent","eventName","setupSubscription","sourceObj","isEventTarget","source_1","on","off","isJQueryStyleEventEmitter","source_2","addListener","removeListener","isNodeStyleEventEmitter","source_3","fromEventPattern","addHandler","removeHandler","retValue","generate","initialStateOrOptions","condition","iterate","resultSelectorOrObservable","initialState","identity","conditionResult","needIterate","iif","trueResult","falseResult","isNumeric","parseFloat","interval","period","async","counter","NEVER","never","onErrorResumeNext","remainder","subNext","pairs","not","pred","notPred","predicate","FilterOperator","FilterSubscriber","partition","race","RaceOperator","RaceSubscriber","hasFirst","subscriptions","timer","dueTime","periodOrScheduler","due","using","resourceFactory","resource","zip","ZipOperator","ZipSubscriber","iterators","StaticArrayIterator","StaticIterator","ZipBufferIterator","stillUnsubscribed","notifyInactive","checkIterators","shouldComplete","_tryresultSelector","nextResult","Boolean","isComplete","_value","_isScalar","operator","observerOrNext","sink","Subscriber","rxSubscriberSymbol","emptyObserver","toSubscriber","useDeprecatedSynchronousErrorHandling","syncErrorThrowable","_trySubscribe","syncErrorThrown","syncErrorValue","promiseCtor","getPromiseCtor","operations","pipeFromArray","toPromise","Subject","AnonymousSubject","copy","subscriberIndex","destinationOrNext","SafeSubscriber","_unsubscribeAndRecycle","_parentOrParents","_parentSubscriber","__tryOrSetError","__tryOrUnsub","wrappedComplete","_subscriptions","_ctorUnsubscribe","errors","UnsubscriptionError","flattenUnsubscriptionErrors","teardown","tmp","subscriptionIndex","errs","_enable_super_gross_mode_that_will_cause_bad_things","rxSubscriber","ObjectUnsubscribedErrorImpl","UnsubscriptionErrorImpl","closed_1","MessageChannel","unstable_forceFrameRate","performance","floor","port2","port1","onmessage","postMessage","sortIndex","startTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","once","listener","_","emit","evtArr","evts","liveEvents","extendStatics","__extends","__","_typeof","_regeneratorRuntime","o","asyncIterator","toStringTag","define","writable","wrap","Generator","Context","makeInvokeMethod","tryCatch","GeneratorFunction","GeneratorFunctionPrototype","defineIteratorMethods","_invoke","AsyncIterator","invoke","__await","callInvokeWithMethodAndArg","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","isGeneratorFunction","mark","awrap","reverse","stop","rval","finish","delegateYield","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","Function","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","definition","_setPrototypeOf","_inheritsLoose","isAbsolute","spliceOne","list","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","up","part","valueEqual","every","aValue","bValue","isProduction","invariant","provided","addLeadingSlash","stripLeadingSlash","stripBasename","hasBasename","stripTrailingSlash","createPath","createLocation","currentLocation","hashIndex","searchIndex","parsePath","decodeURI","URIError","resolvePathname","createTransitionManager","prompt","listeners","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","isActive","notifyListeners","canUseDOM","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","history","createBrowserHistory","globalHistory","canUseHistory","supportsHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_window$location","createKey","transitionManager","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","fromLocation","toLocation","toIndex","allKeys","fromIndex","delta","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","isBlocked","pushState","prevIndex","nextKeys","replaceState","goBack","goForward","block","unblock","listen","unlisten","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","prevLocation","locationsAreEqual$$1","allPaths","lastIndexOf","baseTag","querySelector","getAttribute","pushHashPath","nextPaths","clamp","lowerBound","upperBound","MAX_SIGNED_31_BIT_INT","commonjsGlobal","React","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","getUniqueId","_Component","emitter","newValue","changedBits","createEventEmitter","_Component2","onUpdate","_proto2","createNamedContext","Router","_isMounted","_pendingLocation","staticContext","computeRootMatch","isExact","MemoryRouter","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","entry","nextIndex","nextEntries","canGo","createMemoryHistory","Lifecycle","onMount","onUnmount","Prompt","when","_ref$when","cache","cacheLimit","cacheCount","generatePath","generator","compilePath","Redirect","computedMatch","_ref$push","locationsAreEqual","cache$1","cacheLimit$1","cacheCount$1","matchPath","_options","_options$exact","_options$strict","_options$sensitive","matched","cacheKey","pathCache","regexp","compilePath$1","_compilePath","Route","context$1","createURL","staticHandler","methodName","StaticRouter","handlePush","navigateTo","handleReplace","handleListen","handleBlock","_this$props$basename","_this$props$context","addBasename","_this$props2$basename","_this$props2$context","_this$props2$location","rest","_this$props2","Switch","withRouter","wrappedComponentRef","remainingProps","WrappedComponent","hoistStatics","useHistory","useLocation","useParams","useRouteMatch","BrowserRouter","HashRouter","resolveToLocation","normalizeToLocation","forwardRefShim","LinkAnchor","forwardedRef","innerRef","navigate","_onClick","ex","isModifiedEvent","Link","_ref2","_ref2$component","__RouterContext","forwardRefShim$1","forwardRef$1","NavLink","ariaCurrent","_ref$ariaCurrent","_ref$activeClassName","activeStyle","classNameProp","isActiveProp","locationProp","styleProp","escapedPath","classnames","joinClassnames","asyncGeneratorStep","gen","_throw","info","_asyncToGenerator","_arrayLikeToArray","arr2","_slicedToArray","minLen","IdxStatus","AuthenticatorKey","IdxFeature","isAuthenticator","getConsole","nativeConsole","log","groupEnd","removeNils","cleaned","omit","newobj","find","collection","searchParams","found","getLink","linkName","altName","_links","genRandomString","randomCharset","ms","split2","delim","isAbsoluteUrl","toRelativeUrl","baseUrl","toQueryString","removeTrailingSlash","trimmed","CustomError","AuthSdkError","msg","errorCode","errorSummary","errorLink","errorId","errorCauses","generateState","getIssuer","sdk","issuer","getOAuthBaseUrl","getOAuthUrls","authorizeUrl","userinfoUrl","tokenUrl","logoutUrl","revokeUrl","createOAuthMeta","tokenParams","oauthMeta","urls","clientId","redirectUri","responseMode","scopes","nonce","ignoreSignature","acrValues","pkce","codeVerifier","codeChallengeMethod","codeChallenge","TokenKind","api","converter","defaultAttributes","attributes","toUTCString","stringifiedAttributes","jar","withAttributes","withConverter","freeze","isAccessToken","accessToken","isIDToken","idToken","isRefreshToken","refreshToken","createTransactionMeta","authClient","prepareTokenParams","pkceMeta","flow","activationToken","recoveryToken","maxAge","hasSavedInteractionHandle","savedMeta","getSavedTransactionMeta","interactionHandle","transactionManager","load","isTransactionMetaValid","getTransactionMeta","validExistingMeta","saveTransactionMeta","save","muteWarning","clearTransactionMeta","clear","mismatch","some","isTransactionMetaValidForOptions","shouldValidateFlow","isTransactionMetaValidForFlow","STATE_TOKEN_KEY_NAME","DEFAULT_POLLING_DELAY","DEFAULT_MAX_CLOCK_SKEW","DEFAULT_CACHE_DURATION","TOKEN_STORAGE_NAME","CACHE_STORAGE_NAME","PKCE_STORAGE_NAME","TRANSACTION_STORAGE_NAME","SHARED_TRANSACTION_STORAGE_NAME","ORIGINAL_URI_STORAGE_NAME","IDX_RESPONSE_STORAGE_NAME","ACCESS_TOKEN_STORAGE_KEY","ID_TOKEN_STORAGE_KEY","REFRESH_TOKEN_STORAGE_KEY","REFERRER_PATH_STORAGE_KEY","MIN_VERIFIER_LENGTH","MAX_VERIFIER_LENGTH","DEFAULT_CODE_CHALLENGE_METHOD","IDX_API_VERSION","AuthApiError","OAuthError","summary","error_description","formatError","resp","serverErr","transformErrorXHR","max_age","acr_values","acc","curr","parseInsufficientAuthenticationError","httpRequest","httpRequestInterceptors","saveAuthnState","storage","storageUtil","httpCache","storageManager","getHttpCache","cacheResponse","cachedResponse","getStorage","expiresAt","oktaUserAgentHeader","_oktaUserAgent","getHttpHeader","ajaxOptions","httpRequestClient","stateToken","updateStorage","getOptions","getIssuerOrigin","post","postOptions","getResponse","interact","clientSecret","client_id","scope","redirect_uri","code_challenge","code_challenge_method","activation_token","recovery_token","client_secret","interaction_handle","newMeta","isFieldMutable","field","mutable","divideSingleActionParamsByMutability","defaultParamsForAction","neededParamsForAction","immutableParamsForAction","generateDirectFetch","actionDefinition","toPersist","accepts","makeIdxResponse","responseJSON","wwwAuthHeader","idxResponse","stepUp","generateIdxAction","defaultParams","neededParams","immutableParams","actionList","divideActionParamsByMutability","_getPrototypeOf","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","_construct","Parent","Class","_wrapNativeSuper","_cache","Wrapper","_possibleConstructorReturn","_toConsumableArray","_arrayWithoutHoles","iter","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","hasOwnProp","NewError","_Error","_inherits","Derived","hasNativeReflectConstruct","Super","NewTarget","_createSuper","Constructor","_classCallCheck","avoidNew","JSONPath","expr","otherTypeCallback","optObj","resultType","flatten","sandbox","preventEval","parentProperty","autostart","ret","evaluate","currParent","currParentProperty","currResultType","currPreventEval","currSandbox","currOtherTypeCallback","toPathString","exprList","toPathArray","_hasParentSelector","_trace","isParentSelector","hasArrExpr","rslt","valOrPath","_getPreferredOutput","pointer","toPointer","_handleCallback","fullRetObj","preferredOutput","parentPropName","literalPriority","retObj","loc","addRet","elems","_walk","_x","par","pr","_slice","_eval","addType","valueType","includes","isFinite","locProp","_step","_iterator","allowArrayLike","it","normalCompletion","didErr","step","_createForOfIteratorHelper","rett","tl","tt","parseInt","_v","_vname","_$_parentProperty","_$_parent","_$_property","_$_path","_$_root","_$_v","vm","runInNewContext","pathArr","subx","$0","$1","ups","exp","funcs","conditionCb","il","moveToAnotherArray","vr","funcString","fString","lastStatementEnd","SKIP_FIELDS","expandRelatesTo","query","convertRemediationAction","remediation","rel","remediationActions","remediationValue","generateRemediationFunctions","actionFn","parseIdxResponse","remediationData","relatesTo","authenticatorChallenge","remediations","fieldValue","__rest","subField","parseNonRemediations","v1","makeIdxState","requestDidSucceed","rawIdxResponse","proceed","remediationChoice","paramsFromUser","remediationChoiceObject","neededToProceed","rawIdxState","interactionCode","successWithInteractionCode","parsersForVersion","validateVersionConfig","isRawIdxResponse","introspect","savedIdxResponse","loadIdxResponse","getOAuthDomain","stateHandle","Accept","titleCase","getAuthenticatorFromRemediation","formatAuthenticator","incoming","authenticator","compareAuthenticators","auth1","auth2","Remediator","formatAuthenticators","authenticators","existing","authenticatorsData","getName","canRemediate","needed","idxRemediation","required","cur","getRequiredValues","hasData","getData","getAllValues","getNextStep","_authClient","inputs","getInputs","getAuthenticator","inputFromRemediation","visible","messages","alias","aliases","getMessages","getValuesAfterProceed","authenticatorFromRemediation","enrollmentId","_ref3","unwrapFormValue","formKeys","unwrappedForm","GenericRemediator","endsWith","produces","remediators","getFlowSpecification","_oktaAuth","isTerminalResponse","getMessagesFromIdxRemediationValue","messagesFromForm","optionValues","option","messagesFromOptions","getMessagesFromResponse","globalMessages","useGenericRemediator","fieldMessages","seen","filtered","i18n","getRemediatorClass","getRemediator","idxRemediations","remediator","_ref5","remediatorCandidates","nextStep","canSkip","canSkipFn","canResend","actionName","canResendFn","handleFailedResponse","terminal","removeActionFromValues","resend","removeActionFromOptions","remediate","actionFromValues","getActionFromValues","valuesWithoutExecutedAction","optionsWithoutExecutedAction","canceled","remediationAction","remediationName","filterValuesForRemediation","initializeValues","initializeData","PENDING","getFlow","_d","setFlow","flowSpec","oktaAuth","finalizeData","exchangeCodeForTokens","enabledFeatures","availableSteps","shouldSaveResponse","shouldClearTransaction","clearSharedStorage","PASSWORD_RECOVERY","REGISTRATION","SOCIAL_IDP","_ref4","ACCOUNT_UNLOCK","getEnabledFeatures","remediatorMap","remediatorClass","stepObj","startsWith","part1","part2","actionObj","getAvailableSteps","TERMINAL","hasActions","hasErrors","class","CANCELED","SUCCESS","getTokens","run","interactResponse","getDataFromIntrospect","autoRemediate","idxResponseFromRemediation","getDataFromRemediate","saveIdxResponse","authenticate","OKTA_PASSWORD","Authenticator","VerificationCodeAuthenticator","canVerify","verificationCode","otp","mapCredentials","passcode","idxRemediationValue","OktaVerifyTotp","totp","OktaPassword","SecurityQuestionEnrollment","questionKey","answer","question","label","SecurityQuestionVerification","contextualData","enrolledQuestion","WebauthnEnrollment","clientData","attestation","WebauthnVerification","authenticatorData","signatureData","VerifyAuthenticator","SECURITY_QUESTION","OKTA_VERIFY","WEBAUTHN","challengeData","authenticatorEnrollments","getInputCredentials","valueKey","EnrollAuthenticator","EnrollPoll","startPolling","currentAuthenticator","poll","refresh","SelectEnrollmentChannel","channel","filterKey","EnrollmentChannelData","getInputEmail","getInputPhoneNumber","phoneNumber","ChallengeAuthenticator","ChallengePoll","ResetAuthenticator","EnrollProfile","getCredentialsFromRemediation","userProfileFromValues","userProfile","mapUserProfile","profileAttributes","attributeValues","getInputUserProfile","getErrorMessages","errorRemediation","Identify","identifier","ReEnrollAuthenticator","newPassword","ReEnrollAuthenticatorWarning","RedirectIdp","idp","SelectAuthenticator","findMatchedOption","matchedOption","isCurrentAuthenticator","isCurrentAuthenticatorEnrollment","currentAuthenticatorEnrollment","mapAuthenticator","selectedAuthenticator","selectedOption","getInputAuthenticator","SelectAuthenticatorAuthenticate","isRecoveryFlow","SelectAuthenticatorEnroll","SelectAuthenticatorUnlockAccount","authenticatorMap","methodTypeOption","methodTypeValue","methodType","getInputUsername","SelectEnrollProfile","AuthenticatorData","formatAuthenticatorData","getAuthenticatorData","mapAuthenticatorDataFromValues","AuthenticatorVerificationData","AuthenticatorEnrollmentData","Skip","skip","AuthenticationFlow","PasswordRecoveryFlow","RegistrationFlow","AccountUnlockFlow","canProceed","transaction","availablePollingRemeditaions","isInteger","startTransaction","register","recoverPassword","unlockAccount","isInteractionRequiredError","isRefreshTokenInvalidError","isCodeFlow","getHashOrSearch","isLoginRedirect","uri","authParams","isRedirectUri","codeFlow","hashOrSearch","hasErrorInUrl","hasCode","hasAuthorizationCode","hasInteractionCode","isInteractionRequired","urlParamsToObject","plus2space","paramSplit","fragment","EmailVerifyCallbackError","isEmailVerifyCallbackError","isEmailVerifyCallback","urlPath","parseEmailVerifyCallback","handleEmailVerifyCallback","handleInteractionCodeRedirect","savedState","URL","tokenManager","setTokens","createIdxAPI","newCtx","boundStartTransaction","atob","crypto","isWindowsPhone","isBrowser","isIE11OrLess","getUserAgent","isFingerprintSupported","agent","isPopupPostMessageSupported","isIE8or9","isTokenVerifySupported","subtle","hasTextEncoder","TextEncoder","isPKCESupported","isHTTPS","isLocalhost","OktaUserAgent","environments","maybeAddNodeEnvironment","addEnvironment","env","getVersion","versions","headerName","headerValue","stringToBase64Url","base64ToBase64Url","b64","base64UrlToBase64","b64u","base64UrlToString","utf8","stringToBuffer","base64UrlDecode","base64UrlToBuffer","bufferToBase64Url","bin","byte","getOidcHash","digest","firstHalf","verifyToken","algo","importKey","cryptoKey","jwt","signature","verify","PromiseQueue","quiet","running","thisObject","queueItem","dec2hex","dec","PKCE","generateVerifier","verifier","getRandomValues","getRandomString","computeChallenge","decodeToken","decodedToken","getDefaultTokenParams","defaultRedirectUri","postToTokenEndpoint","authorizationCode","validateOptions","getPostData","getWellKnown","validationParams","configuredIssuer","validationOptions","claims","aud","iss","acr","iat","ignoreLifetime","maxClockSkew","validateClaims","features","kid","wellKnown","jwksUri","cachedKey","clearStorage","getKey","verifyToken$1","at_hash","handleOAuthResponse","interaction_code","oauthParams","validateResponse","tokenDict","expiresIn","expires_in","tokenType","token_type","access_token","id_token","refresh_token","accessJwt","idJwt","idTokenObj","eventTarget","addPostMessageListener","responseHandler","timeoutId","origin","preparePKCE","errorMessage","assertPKCESupport","validateCodeChallengeMethod","buildAuthorizeParams","oauthQueryParams","idpScope","loginHint","sessionToken","enrollAmrValues","mayBeArray","convertTokenParamsToOAuthParams","extraParams","getToken","popupWindow","requestUrl","iframePromise","iframeEl","src","iframe","loadFrame","parentElement","oauthPromise","closePoller","close","getWithoutPrompt","getWithPopup","title","popupTitle","loadPopup","getWithRedirect","setLocation","getResponseMode","defaultResponseMode","parseOAuthResponseFromUrl","paramStr","nativeLoc","parseFromUrl","_getLocation","nativeHistory","_getHistory","nativeDoc","_getDocument","removeSearch","removeHash","cleanOAuthResponseFromUrl","renewTokensWithRefresh","refreshTokenObject","renewTokenParams","tokenResponse","grant_type","postRefreshToken","isSameRefreshToken","updateRefreshToken","removeRefreshToken","throwInvalidTokenError","getSingleToken","originalToken","renewToken","getTokensSync","renewTokens","revokeToken","token_type_hint","hintMap","oidcIntrospect","ACCESS","introspection_endpoint","introspectUrl","authHeader","prepareEnrollAuthenticatorParams","prepareParams","getDefaultEnrollAuthenticatorParams","enrollAuthenticator","createEnrollAuthenticatorMeta","createTokenAPI","useQueue","getWithRedirectFn","parseFromUrlFn","parseFromUrlApi","revoke","renew","getUserInfo","accessTokenObject","idTokenObject","userInfo","authenticateHeader","getResponseHeader","errorMatches","errorDescriptionMatches","errorDescription","validateToken","SdkClock","localOffset","EVENT_EXPIRED","EVENT_RENEWED","EVENT_ADDED","EVENT_REMOVED","EVENT_SET_STORAGE","DEFAULT_OPTIONS","autoRenew","autoRemove","syncStorage","clearPendingRemoveTokens","expireEarlySeconds","storageKey","TokenManager","storageOptions","storageProvider","storageType","getTokenStorage","useSeparateCookies","clock","expireTimeouts","renewPromise","setExpireEventTimeoutAll","started","clearExpireEventTimeoutAll","isStarted","getExpireTime","hasExpired","emitExpired","emitRenewed","freshToken","oldToken","emitAdded","emitRemoved","emitError","clearExpireEventTimeout","setExpireEventTimeout","expireTime","expireEventWait","expireEventTimeout","tokenStorage","resetExpireEventTimeoutAll","setStorage","emitSetStorageEvent","getSync","getStorageKeyByType","getTokenType","accessTokenCb","idTokenCb","refreshTokenCb","handleTokenCallback","handleAdded","handleRenewed","handleRemoved","types","existingTokens","newToken","existingToken","removedToken","tokenKey","removedTokens","pendingRemove","addPendingRemoveFlags","browserHasLocalStorage","getLocalStorage","testStorage","browserHasSessionStorage","getSessionStorage","testStorageType","supported","getStorageByType","getCookieStorage","getInMemoryStorage","findStorageType","curType","nextType","onstorage","localStorage","sessionStorage","sameSite","sessionCookie","getItem","setItem","removeItem","existingValues","valueToStore","inMemoryStore","cookieOptions","Cookies","mixinOAuth","Base","TransactionManagerConstructor","WithOriginalUri","BaseClass","setOriginalUri","originalUri","getOriginalUriStorage","getOriginalUri","removeOriginalUri","sharedStorage","_pending","handleLogin","_tokenQueue","endpoints","authorize","isAuthenticated","shouldRenew","onExpiredToken","shouldRemove","signInWithRedirect","additionalParams","getUser","getIdToken","getAccessToken","getRefreshToken","storeTokensFromRedirect","isPKCE","hasResponseType","isAuthorizationCodeFlow","invokeApiMethod","revokeAccessToken","accessTokenKey","revokeRefreshToken","refreshTokenKey","getSignOutRedirectUrl","postLogoutRedirectUri","idTokenHint","logoutUri","signOut","defaultUri","currentUri","clearTokensBeforeRedirect","sessionClosed","closeSession","DEFAULT_PENDING","updateAuthStatePromise","canceledTimes","EVENT_AUTH_STATE_CHANGE","AuthStateManager","_sdk","_authState","_logOptions","_prevAuthState","_transformQueue","_setLogOptions","updateAuthState","getAuthState","getPreviousAuthState","transformAuthState","devMode","emitAuthStateChange","authState","isSameAuthState","finalPromise","origPromise","curPromise","cancelablePromise","emitAndResolve","AutoRenewService","renewTimeQueue","onTokenExpiredHandler","shouldThrottleRenew","firstTime","requiresLeadership","processExpiredTokens","canStart","PROMISE_RESOLVED_TRUE","PROMISE_RESOLVED_VOID","sleep","resolveWith","randomToken","lastMs","additional","microSeconds","getTime","NativeMethod","channelName","messagesCallback","BroadcastChannel","subFns","channelState","onMessage","messageJson","canBeUsed","_pubkey","averageResponseTime","micro","ObliviousSet","ttl","_to","obliviousSet","olderThen","removeTooOldValues","fillOptionsWithDefaults","originalOptions","webWorkerSupport","idb","fallbackInterval","onclose","localstorage","removeTimeout","maxParallelWrites","useFastPath","DB_PREFIX","OBJECT_STORE_ID","TRANSACTION_SETTINGS","durability","getIdb","indexedDB","mozIndexedDB","webkitIndexedDB","msIndexedDB","commitIndexedDBTransaction","tx","commit","getMessagesHigherThan","lastCursorId","objectStore","keyRangeValue","IDBKeyRange","bound","Infinity","getAll","getAllRequest","rej","onsuccess","openCursorRequest","openCursor","ev","cursor","cleanOldMessages","msgObk","getOldMessages","tooOld","ids","deleteRequest","removeMessagesById","_readLoop","readNewMessages","newerMessages","useMessages","msgObj","uuid","eMIs","messagesCallbackTime","_filterMessage","msgObjA","msgObjB","IndexedDBMethod","IndexedDB","dbName","openRequest","onupgradeneeded","createObjectStore","keyPath","autoIncrement","createDatabase","writeBlockPromise","readQueuePromises","readerUuid","writeObject","oncomplete","writeMessage","KEY_PREFIX","ls","LocalstorageMethod","addStorageEventListener","writeObj","createEvent","initEvent","dispatchEvent","defaultTime","SIMULATE_CHANNELS","SimulateMethod","METHODS","ENFORCED_OPTIONS","OPEN_BROADCAST_CHANNELS","lastId","chooseMethods","useMethod","chooseMethod","_iL","_onML","_addEL","internal","_uMP","_befC","_prepP","maybePromise","_state","_prepareChannel","_post","broadcastChannel","sendPromise","_hasMessageListeners","_addListenerObject","listenerFn","listenerObject","hundredMsInMicro","minMessageTime","_startListening","_removeListenerObject","_stopListening","postInternal","listenObj","awaitPrepare","isClosed","USE_METHOD","trace","WorkerGlobalScope","oldClose","LISTENERS","startedListening","runAll","sendLeaderMessage","leaderElector","msgJson","beLeader","isLeader","_hasLeader","unloadFn","unloadAdd","die","_unl","isLeaderListener","_dpLC","_dpL","_lstns","LeaderElectionWebLock","isDead","_wKMC","lN","hasLeader","locks","relevantLocks","held","lock","awaitLeadership","_wLMP","AbortController","returnPromise","onduplicate","_fn","uFn","LeaderElection","_aplQ","_aplQC","hasLeaderListener","createLeaderElection","_leaderElector","responseTime","elector","applyOnce","isFromFallbackInterval","stopCriteriaPromiseResolve","stopCriteria","stopCriteriaPromise","handleMessage","waitForAnswerTime","applyRun","_aLP","resolved","whenDeathListener","tryOnFallBack","_awaitLeadershipOnce","SyncStorageService","enablePostMessage","onTokenAddedHandler","onTokenRemovedHandler","onTokenRenewedHandler","onSetStorageHandler","onSyncMessageHandler","syncChannelName","LeaderElectionService","onLeaderDuplicate","onLeader","electionChannelName","AUTO_RENEW","SYNC_STORAGE","LEADER_ELECTION","ServiceManager","broadcastChannelName","defaultOptions","services","knownServices","svc","createService","startServices","getService","isLeaderRequired","srv","stopServices","canStartService","service","sessionExists","session","getSession","user","refreshSession","setCookieAndRedirect","redirectUrl","checkAccountSetupComplete","mixinSession","exists","createOktaAuthCore","StorageManagerConstructor","OptionsConstructor","OktaAuthBase","Emitter","constants","createOktaAuthBase","WithStorage","StorageManager","mixinStorage","WithHttp","http","setHeaders","webfinger","mixinHttp","Core","authStateManager","serviceManager","handleRedirect","handleLoginRedirect","restoreOriginalUri","mixinCore","getEnrolledCredentials","enrollement","credentialId","buildCredentialCreationOptions","activationData","publicKey","rp","challenge","pubKeyCredParams","authenticatorSelection","excludeCredentials","buildCredentialRequestOptions","userVerification","allowCredentials","getAttestation","credential","clientDataJSON","attestationObject","getAssertion","STORAGE_MANAGER_OPTIONS","storageTypes","createStorageOptionsConstructor","BaseOptionsConstructor","cookieSettings","getCookieSettings","appJsonContentTypeRegex","fetchRequest","contentType","fetchPromise","crossFetch","readData","pair","formatResult","enableSharedStorage","createOAuthOptionsConstructor","HttpOptionsConstructor","StorageOptionsConstructor","createHttpOptionsConstructor","assertValidConfig","toAbsoluteUrl","SavedObject","storageName","storageString","logServerSideMemoryStorageWarning","BaseStorageManager","storageManagerOptions","getOptionsForSection","sectionName","overrideOptions","createCoreStorageManager","getTransactionStorage","getSharedTansactionStorage","isObjectWithProperties","isOAuthTransactionMeta","isTransactionMeta","isCustomAuthTransactionMeta","MAX_ENTRY_LIFETIME","createTransactionManager","saveLastResponse","transactionStorage","clearTransactionFromSharedStorage","dateCreated","saveTransactionToSharedStorage","pruneSharedStorage","loadTransactionFromSharedStorage","BaseTransaction","sendRequest","TransactionClass","accessTokenObj","generateRequestFnFromLinks","links","hints","allow","ProfileTransaction","createdAt","modifiedAt","profile","ProfileSchemaTransaction","properties","EmailRole","Status","PasswordStatus","getProfile","updateProfile","getProfileSchema","EmailStatusTransaction","EmailChallengeTransaction","EmailTransaction","roles","getEmails","getEmail","addEmail","deleteEmail","sendEmailChallenge","getEmailChallenge","emailId","challengeId","verifyEmailChallenge","PhoneTransaction","getPhones","getPhone","addPhone","deletePhone","sendPhoneChallenge","verifyPhoneChallenge","PasswordTransaction","created","lastUpdated","NOT_ENROLLED","enroll","update","getPassword","enrollPassword","updatePassword","deletePassword","addStateToken","builtArgs","transactionStatus","introspectAuthn","getSavedStateToken","transactionStep","createTransaction","transactionExists","postToTransaction","link2fn","isPolling","factorType","provider","autoPush","rememberDevice","updatePhone","AuthPollStopError","getPollFn","delay$1","transactionCallBack","pollLink","pollFn","getStateToken","retryCount","recursivePoll","pollRes","factorResult","delayLength","pow","flattenEmbedded","objArr","ol","embedded","_embedded","links2fns","AuthnTransactionImpl","createAuthnTransactionAPI","resume","resumeTransaction","fingerprint","CoreOptionsConstructor","OAuthOptionsConstructor","createCoreOptionsConstructor","createIdxOptionsConstructor","CoreStorageManager","getIdxResponseStorage","createIdxStorageManager","WithIdx","webauthn","mixinIdx","createOktaAuthIdx","TransactionManager","clearIdxResponse","storedValue","createIdxTransactionManager","WithAuthn","authn","signIn","_postToTransaction","sendFingerprint","signInWithCredentials","forgotPassword","verifyRecoveryToken","mixinAuthn","myaccount","compareVersions","v2","n1","validateAndParse","n2","p1","p2","compareSegments","assertValidOperator","operatorResMap","validate","semver","satisfies","op","v3","r1","r2","r3","compareStrings","isWildcard","tryParse","ap","bp","forceType","allowedOperators","toPropertyKey","toPrimitive","OktaContext","useOktaAuth","Security","onAuthRequired","_React$useState2","setAuthState","_callee","_x2","currentAuthState","_err","OktaError","_err2","_onAuthRequired","LoginCallback","errorComponent","loadingElement","_ref$loadingElement","onAuthResume","_useOktaAuth","callbackError","setCallbackError","ErrorReporter","displayError","_excluded","useMatch","ReactRouterDom","globalCssModule","routeProps","sourceSymbolKeys","_objectWithoutProperties","pendingLogin","setHandleLoginError","onAuthRequiredFn","ownKeys","_defineProperty","getOwnPropertyDescriptors","setScrollbarWidth","padding","paddingRight","conditionallyUpdateScrollbar","scrollbarWidth","scrollDiv","position","overflow","offsetWidth","clientWidth","getScrollbarWidth","fixedContent","bodyPadding","innerWidth","mapToCssModules","cssModule","omitKeys","tagPropType","TransitionTimeouts","TransitionPropTypeKeys","keyCodes","focusableElements","fluid","Container","Tag","containerClass","rowColsPropType","noGutters","xs","sm","xl","widths","Row","colClasses","colWidth","colSize","isXs","stringOrNumberProp","columnProps","getColumnSizeClass","Col","columnProp","_classNames","colSizeInterfix","colClass","_colClass","oktaIssuer","appClientId","appRootPath","amplifyApiHost","amplifyClientId","amplifyClientSecret","publicUrl","oktaReturnUrl","appStage","oidc","appConfig","packageJson","Footer","renderApp","app","slug","functionName","renderFunctionName","renderFn","getAppId","InitSubApp","subApp","getElementById","debug","moduleName","scriptId","cachebuster","round","script","crossOrigin","head","appendAppToDom","amplify","unmountFunction","removeAppFromDom","loadAppConfigs","apps","scriptSrc","loadConfig","isPermissionRevoed","accessRoleName","$componentApps","defaultVersions","AppDetails","commitHash","COMMITHASH","author","releaseDate","RELEASEDATE","$amplifyApps","$widgetApps","$componentAppsLoaded","$navigationItems","$coreNavigationItems","$hasToken","$versions","amplifyToken","axiosInstance","onAmplifyApps","onComponentApps","onVersions","urlHistory","sym","_window$amplify","registerWidget","widget","widgetApps","registerApp","amplifyApps","registerComponentApp","componentApps","componentLoad","registerNavigationItem","navigationItems","registerCoreNavigationItem","coreNavigationItems","registerVersion","onWidgetApps","onNavigationItems","onCoreNavigationItems","onHasToken","loadCss","cssInfo","cssid","defaultNode","ReactDOM","_objectSpread2","baseClass","baseClassActive","Fade","otherProps","transitionProps","pickKeys","pick","FadePropTypes","isOpen","centered","scrollable","toggle","keyboard","role","labelledBy","backdrop","onOpened","onClosed","wrapClassName","modalClassName","backdropClassName","contentClassName","external","fade","backdropTransition","modalTransition","unmountOnClose","returnFocusAfterClose","propsToOmit","Modal","_element","_originalBodyPadding","getFocusableChildren","handleBackdropClick","handleBackdropMouseDown","handleEscape","handleStaticBackdropAnimation","handleTab","manageFocusAfterClose","clearBackdropAnimationTimeout","showStaticBackdropAnimation","setFocus","isAppearing","_dialog","getFocusedChild","currentFocus","focusableChildren","_mouseDownElement","totalFocusable","focusedIndex","_backdropAnimationTimeout","_triggeringElement","getComputedStyle","getPropertyValue","getOriginalBodyPadding","openCount","modalOpenClassName","modalOpenClassNameRegex","renderModalDialog","dialogBaseClass","isModalHidden","modalAttributes","onMouseDown","onKeyUp","onKeyDown","tabIndex","hasTransition","Backdrop","ModalBody","ModalFooter","outline","Button","ariaLabel","btnOutlineColor","defaultAriaLabel","NotificationDialog","modal","setModal","togglePopup","variant","AdminLayout","components","setComponents","navSlug","setNavSlug","navCoreSlug","setNavCoreSlug","navNotificationSlug","setNavNotificationSlug","setIsOpen","$components","_document","_document$scrollingEl","scrollingElement","navigation","coreNavigation","notifications","mount","logo","innerLink","imgSrc","imgAlt","alt","AdminFooter","Versions","setVersions","AdditionalInfo","backgroundColor","additionalInfo","REACT_APP_STAGE","REACT_APP_CDN_HOST","HasAccessToRouter","_authState$accessToke2","authService","subApps","setSubApps","admin","setAdmin","setToken","NoMatch","$subApps","isLoggedIn","__IS_LOGGED_IN__","axiosConfig","Roles","setOktaToken","oktaToken","_oktaToken$accessToke","_jwt$Roles","adm","replaceUrl","_authState$accessToke","getLogin","oktaConfig","SecureRoute","SecurityGuard","App","serviceWorker","ready","registration","unregister"],"sourceRoot":""}