{"mappings":"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JC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJphE,GAAI,MACJqhE,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJ,MAAO,MACPC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MA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","sources":["node_modules/process/browser.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/webpack/startup","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/webpack/bootstrap","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/webpack/universalModuleDefinition","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/@sindresorhus/to-milliseconds/index.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/parse-ms/index.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/vendor/lib/js.cookie.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/vendor/plugins/chosen.jquery.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/vendor/plugins/jquery.custominput.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/vendor/plugins/jquery.placeholder.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/views/Backbone.ListView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/views/components/BaseButtonLink.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/views/components/BaseDropDown.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/views/components/Notification.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/views/forms/components/ReadModeBar.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/views/forms/helpers/EnumTypeHelper.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/views/forms/helpers/ErrorBanner.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/views/forms/helpers/InputContainer.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/views/forms/helpers/InputFactory.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/views/forms/helpers/InputLabel.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/views/forms/helpers/InputWrapper.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/views/forms/inputs/BooleanSelect.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/views/forms/inputs/CheckBox.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/views/forms/inputs/DeletableBox.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/views/forms/inputs/InputGroup.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/views/forms/inputs/PasswordBox.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/views/forms/inputs/Radio.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/views/forms/inputs/Select.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/views/forms/inputs/TextBox.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/views/forms/inputs/TextBoxSet.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/framework/Collection.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/framework/ListView.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/framework/Model.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/framework/View.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/models/BaseCollection.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/models/BaseModel.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/models/BaseSchema.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/models/Model.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/models/SchemaProperty.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/util/BaseController.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/util/BaseRouter.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/util/ButtonFactory.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/util/Class.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/util/Clipboard.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/util/Cookie.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/util/Keys.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/util/Logger.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/util/SchemaUtil.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/util/SettingsModel.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/util/StateMachine.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/util/StringUtil.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/util/TemplateUtil.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/util/Time.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/util/Util.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/util/ViewUtil.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/util/handlebars-wrapper.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/util/handlebars/handle-url.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/util/handlebars/helper-base64.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/util/handlebars/helper-date.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/util/handlebars/helper-i18n.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/util/handlebars/helper-img.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/util/handlebars/helper-markdown.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/util/handlebars/helper-xsrfTokenInput.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/util/jquery-wrapper.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/util/markdownToHtml.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/util/underscore-wrapper.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/views/BaseView.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/views/components/Callout.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/views/forms/BaseForm.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/views/forms/BaseInput.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/views/forms/components/Toolbar.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/views/forms/helpers/ErrorParser.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/views/forms/helpers/FormUtil.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/views/forms/helpers/InputRegistry.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/@okta/courage/src/views/forms/helpers/SchemaFormFactory.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/src/empty.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/src/util/scrollParent.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/backbone/backbone.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/clipboard/lib/clipboard-action.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/clipboard/lib/clipboard.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/delegate/src/closest.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/delegate/src/delegate.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/good-listener/src/is.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/good-listener/src/listen.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/select/src/select.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/node_modules/tiny-emitter/index.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/external \"handlebars\"","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/external \"handlebars/runtime\"","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/external \"jquery\"","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/external \"okta-i18n-bundles\"","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/external \"qtip\"","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/external \"underscore\"","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/webpack/bootstrap","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/webpack/runtime/compat get default export","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/webpack/runtime/define property getters","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/webpack/runtime/global","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/webpack/runtime/hasOwnProperty shorthand","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/webpack/runtime/make namespace object","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/courage-for-signin-widget/src/CourageForSigninWidget.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/packages/vendor/TypingDnaRecorder-JavaScript/typingdna.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/packages/vendor/duo_web_sdk/index.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/AccountUnlockedController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/ActivateTotpController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/AdminConsentRequiredController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/BarcodePushController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/BarcodeTotpController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/ConsentRequiredController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/CustomPasswordExpiredController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/DeviceActivateController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/DeviceActivateTerminalController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/EnrollActivateCustomFactorController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/EnrollActivateEmailController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/EnrollCallAndSmsController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/EnrollChoicesController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/EnrollCustomFactorController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/EnrollDuoController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/EnrollEmailController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/EnrollHotpController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/EnrollOnPremController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/EnrollPasswordController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/EnrollQuestionController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/EnrollSymantecVipController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/EnrollTotpController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/EnrollU2FController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/EnrollUserController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/EnrollWebauthnController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/EnrollWindowsHelloController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/EnrollYubikeyController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/EnrollmentLinkSentController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/EnterPasscodePushFlowController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/ErrorStateController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/ForceIDPDiscoveryController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/ForgotPasswordController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/IDPDiscoveryController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/ManualSetupPushController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/ManualSetupTotpController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/MfaVerifyController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/PasswordExpiredController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/PasswordResetController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/PollController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/PrimaryAuthController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/PwdResetEmailSentController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/RecoveryChallengeController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/RecoveryLoadingController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/RecoveryQuestionController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/RefreshAuthStateController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/RegistrationCompleteController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/RegistrationController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/UnlockAccountController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/UnlockEmailSentController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/VerifyCustomFactorController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/VerifyDuoController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/VerifyPIVController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/VerifyU2FController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/VerifyWebauthnController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/VerifyWindowsHelloController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/index.cjs.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/models/AppState.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/models/BaseLoginModel.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/models/EnrollUser.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/models/Factor.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/models/IDPDiscovery.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/models/LoginModel.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/models/PrimaryAuth.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/models/ProfileSchema.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/models/RegistrationSchema.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/util/Animations.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/util/BaseLoginController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/util/BaseLoginRouter.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/util/ColorsUtil.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/util/CookieUtil.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/util/CountryUtil.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/util/CryptoUtil.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/util/DeviceFingerprint.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/util/Enums.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/util/ErrorCodes.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/util/Errors.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/util/FactorUtil.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/util/FidoUtil.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/util/FormController.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/util/FormType.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/util/Hooks.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/util/IDP.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/util/LanguageUtil.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/util/Logger.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/util/OAuth2Util.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/util/RegistrationFormFactory.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/util/RouterUtil.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/util/StoreLinks.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/util/TimeUtil.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/util/TypingUtil.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/util/Util.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/util/ValidationUtil.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/util/countryCallingCodes.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/util/webauthn.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/client/constants.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/client/handleConfiguredFlow.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/client/index.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/client/interactionCodeFlow.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/client/sessionStorageHelper.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/ion/IonResponseHelper.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/ion/RemediationConstants.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/ion/ViewClassNamesFactory.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/ion/i18nTransformer.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/ion/responseTransformer.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/ion/transformIdxResponse.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/ion/ui-schema/ion-boolean-handler.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/ion/ui-schema/ion-object-handler.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/ion/ui-schema/ion-string-handler.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/ion/uiSchemaTransformer.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/components/AuthenticatorEnrollOptions.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/components/AuthenticatorFooter.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/components/AuthenticatorVerifyOptions.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/components/BaseAuthenticatorView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/components/ChallengeWebauthnFooter.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/components/EmailAuthenticatorHeader.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/components/HeaderBeacon.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/components/IdentifierFooter.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/components/Link.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/components/MdmOktaVerifyTerminalView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/components/OdaOktaVerifyTerminalView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/components/OktaVerifyAuthenticatorHeader.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/components/SkipOptionalEnrollmentButton.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/components/ToggleTextLink.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/internals/BaseFooter.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/internals/BaseFormWithPolling.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/internals/BaseHeader.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/internals/BaseModel.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/internals/BaseOktaVerifyChallengeView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/internals/BaseView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/internals/index.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/utils/AuthenticatorUtil.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/utils/ChallengeViewUtil.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/utils/Constants.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/utils/DeviceFingerprinting.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/utils/LinksUtil.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/utils/TimeZone.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/AutoRedirectView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/EnrollProfileUpdateView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/EnrollProfileView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/IdentifierView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/IdentifyRecoveryView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/PollView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/RedirectIdPView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/SelectAuthenticatorEnrollView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/SelectAuthenticatorVerifyView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/TerminalView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/activation/RequestActivationEmailView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/authenticator/SelectAuthenticatorUnlockAccountView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/captcha/CaptchaView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/consent/AdminConsentView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/consent/AdminConsentViewHeader.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/consent/ConsentViewForm.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/consent/EmailMagicLinkOTPTerminalView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/consent/EnduserConsentAgreementText.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/consent/EnduserConsentView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/consent/EnduserConsentViewFooter.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/consent/EnduserConsentViewHeader.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/consent/EnduserEmailConsentView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/custom-app/ChallengeCustomAppResendPushView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/custom-otp/ChallengeCustomOTPAuthenticatorView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/device/DeviceChallengePollView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/device/DeviceCodeActivateView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/device/DeviceEnrollmentTerminalView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/device/SSOExtensionView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/device/SignInDeviceView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/duo/BaseDuoAuthenticatorForm.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/duo/ChallengeDuoAuthenticatorView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/duo/EnrollDuoAuthenticatorView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/email/AuthenticatorEmailViewUtil.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/email/BaseAuthenticatorEmailView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/email/ChallengeAuthenticatorDataEmailView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/email/ChallengeAuthenticatorEmailView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/email/EnrollAuthenticatorEmailView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/enroll-profile/i18nBaseAttributeMappings.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/google-authenticator/ChallengeGoogleAuthenticatorView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/google-authenticator/EnrollAuthenticatorGoogleAuthenticatorView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/google-authenticator/EnrollAuthenticatorManualSetupView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/google-authenticator/EnrollGoogleAuthenticatorBarcodeView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/idp/AuthenticatorIdPEnrollView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/idp/AuthenticatorIdPVerifyView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/idp/BaseIdPAuthenticatorBody.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/on-prem/ChallengeAuthenticatorOnPremView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/on-prem/EnrollAuthenticatorOnPremView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/ov/ChallengeAuthenticatorDataOktaVerifyFormView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/ov/ChallengeAuthenticatorDataOktaVerifyPushOnlyFormView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/ov/ChallengeAuthenticatorDataOktaVerifyView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/ov/ChallengeOktaVerifyFastPassView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/ov/ChallengeOktaVerifyResendPushView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/ov/ChallengeOktaVerifySSOExtensionView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/ov/ChallengeOktaVerifyTotpView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/ov/ChallengeOktaVerifyView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/ov/EnrollChannelPollDescriptionView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/ov/EnrollPollOktaVerifyView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/ov/EnrollementChannelDataOktaVerifyView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/ov/NumberChallengePhoneView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/ov/NumberChallengePushView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/ov/OVResendView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/ov/ResendNumberChallengeView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/ov/SelectEnrollmentChannelOktaVerifyView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/ov/SwitchEnrollChannelLinkView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/password/ChallengeAuthenticatorPasswordView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/password/EnrollAuthenticatorPasswordView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/password/PasswordPolicyUtil.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/password/ReEnrollAuthenticatorPasswordView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/password/ReEnrollAuthenticatorWarningPasswordView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/password/ResetAuthenticatorPasswordView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/phone/ChallengeAuthenticatorDataPhoneView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/phone/ChallengeAuthenticatorPhoneView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/phone/EnrollAuthenticatorDataPhoneView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/phone/EnrollAuthenticatorPhoneView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/piv/ChallengePIVView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/piv/PIVHeader.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/security-question/ChallengeAuthenticatorSecurityQuestion.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/security-question/EnrollAuthenticatorSecurityQuestionView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/shared/BaseResendView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/shared/ChallengePushView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/shared/email.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/shared/polling.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/signin/CustomButtons.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/signin/SignInWithDeviceOption.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/signin/SignInWithIdps.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/symantec/AuthenticatorSymantecView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/webauthn/ChallengeWebauthnInfoView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/webauthn/ChallengeWebauthnView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/webauthn/EnrollWebauthnInfoView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/webauthn/EnrollWebauthnView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/views/yubikey/AuthenticatorYubiKeyView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/ResendEmailView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/admin-consent/ScopeItem.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/admin-consent/ScopeList.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/consent/ScopeItem.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/consent/ScopeList.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/enroll-choices/FactorList.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/enroll-choices/Footer.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/enroll-choices/RequiredFactorList.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/enroll-factors/BarcodeView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/enroll-factors/EnterPasscodeForm.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/enroll-factors/Footer.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/enroll-factors/ManualSetupFooter.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/enroll-factors/ManualSetupPushFooter.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/enroll-factors/PhoneTextBox.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/enrollUser/EnrollUserForm.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/expired-password/Footer.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/factor-verify/EmailMagicLinkForm.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/idp-discovery/IDPDiscoveryForm.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/mfa-verify/HtmlErrorMessageView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/mfa-verify/InlineTOTPForm.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/mfa-verify/NumberChallengeView.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/mfa-verify/PassCodeForm.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/mfa-verify/PasswordForm.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/mfa-verify/PushForm.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/mfa-verify/SecurityQuestionForm.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/mfa-verify/SendEmailAndVerifyCodeForm.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/mfa-verify/TOTPForm.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/mfa-verify/YubikeyForm.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/mfa-verify/dropdown/FactorsDropDown.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/mfa-verify/dropdown/FactorsDropDownOptions.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/primary-auth/CustomButtons.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/primary-auth/PrimaryAuthForm.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/registration/SubSchema.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/shared/AuthContainer.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/shared/ContactSupport.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/shared/FactorBeacon.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/shared/Footer.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/shared/FooterMFA.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/shared/FooterRegistration.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/shared/FooterSignout.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/shared/FooterWithBackLink.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/shared/LoadingBeacon.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/shared/PIVBeacon.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/shared/PasswordRequirements.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/shared/SecurityBeacon.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/shared/SkipLink.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/shared/Spinner.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/shared/TextBox.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/shared/templates/consentLogoHeaderTemplate.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/widget/buildRenderOptions.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/widget/createRouter.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/LoginRouter.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/models/Hooks.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/models/Settings.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/util/BrowserFeatures.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/util/Bundles.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/BaseLoginRouter.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/WidgetRouter.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/client/emailVerifyCallback.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/client/formatError.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/client/startLoginFlow.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/controllers/FormController.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/mixins/mixins.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/models/AppState.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/ViewFactory.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/internals/BaseForm.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/v2/view-builder/internals/FormInputFactory.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/views/shared/Header.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/widget/OktaSignIn.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/src/widget/getAuthClient.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/@babel/runtime/helpers/arrayLikeToArray.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/@babel/runtime/helpers/arrayWithHoles.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/@babel/runtime/helpers/assertThisInitialized.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/@babel/runtime/helpers/asyncToGenerator.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/@babel/runtime/helpers/classCallCheck.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/@babel/runtime/helpers/createClass.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/@babel/runtime/helpers/defineProperty.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/@babel/runtime/helpers/getPrototypeOf.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/@babel/runtime/helpers/inherits.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/@babel/runtime/helpers/interopRequireDefault.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/@babel/runtime/helpers/iterableToArray.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/@babel/runtime/helpers/nonIterableRest.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/@babel/runtime/helpers/nonIterableSpread.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/@babel/runtime/helpers/setPrototypeOf.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/@babel/runtime/helpers/slicedToArray.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/@babel/runtime/helpers/toConsumableArray.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/@babel/runtime/helpers/typeof.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/@babel/runtime/node_modules/regenerator-runtime/runtime.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/@babel/runtime/regenerator/index.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/webpack/universalModuleDefinition","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/assertThisInitialized.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/classCallCheck.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/construct.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/createClass.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/getPrototypeOf.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/inherits.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/isNativeFunction.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/setPrototypeOf.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/typeof.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/wrapNativeSuper.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/regenerator/index.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/AuthStateManager.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/session.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/crypto/webauthn.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/js-cookie/dist/js.cookie.mjs","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/browser/browserStorage.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/broadcast-channel/dist/esbrowser/util.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/broadcast-channel/dist/esbrowser/methods/native.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/oblivious-set/dist/es/index.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/broadcast-channel/dist/esbrowser/options.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/broadcast-channel/dist/esbrowser/methods/indexed-db.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/broadcast-channel/dist/esbrowser/methods/localstorage.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/broadcast-channel/dist/esbrowser/methods/simulate.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/broadcast-channel/dist/esbrowser/method-chooser.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/broadcast-channel/dist/esbrowser/broadcast-channel.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/unload/dist/es/browser.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/unload/dist/es/index.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/broadcast-channel/dist/esbrowser/leader-election.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/services/AutoRenewService.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/services/SyncStorageService.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/ServiceManager.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/browser/fingerprint.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/builderUtil.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/fetch/fetchRequest.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/options/browser.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/options/index.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/OktaUserAgent.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/OktaAuth.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/PromiseQueue.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/SavedObject.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/StorageManager.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/clock.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/TokenManager.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/util/sharedStorage.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/TransactionManager.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/constants.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/crypto/base64.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/crypto/oidcHash.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/crypto/verifyToken.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/crypto/browser.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/errors/AuthApiError.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/errors/AuthPollStopError.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/errors/AuthSdkError.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/esm/construct.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/errors/CustomError.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/errors/OAuthError.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/errors/index.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/features.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/http/headers.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/http/request.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/interact.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/idxState/v1/actionParser.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/idxState/v1/generateIdxAction.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/jsonpath-plus/dist/index-browser-esm.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/idxState/v1/idxResponseParser.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/idxState/v1/remediationParser.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/idxState/v1/makeIdxState.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/idxState/v1/parsers.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/idxState/index.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/introspect.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/remediators/util.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/authenticator/util.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/remediators/Base/Remediator.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/esm/get.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/esm/superPropBase.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/authenticator/Authenticator.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/authenticator/VerificationCodeAuthenticator.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/authenticator/OktaVerifyTotp.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/authenticator/OktaPassword.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/authenticator/SecurityQuestionEnrollment.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/authenticator/SecurityQuestionVerification.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/authenticator/WebauthnEnrollment.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/authenticator/WebauthnVerification.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/authenticator/getAuthenticator.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/remediators/Base/VerifyAuthenticator.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/remediators/EnrollAuthenticator.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/remediators/EnrollPoll.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/remediators/SelectEnrollmentChannel.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/remediators/EnrollmentChannelData.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/remediators/ChallengeAuthenticator.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/remediators/ChallengePoll.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/remediators/ResetAuthenticator.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/remediators/EnrollProfile.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/remediators/Identify.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/remediators/ReEnrollAuthenticator.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/remediators/RedirectIdp.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/remediators/Base/SelectAuthenticator.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/remediators/SelectAuthenticatorAuthenticate.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/remediators/SelectAuthenticatorEnroll.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/remediators/SelectAuthenticatorUnlockAccount.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/remediators/SelectEnrollProfile.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/remediators/Base/AuthenticatorData.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/remediators/AuthenticatorVerificationData.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/remediators/AuthenticatorEnrollmentData.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/remediators/Skip.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/util.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/remediate.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/flow/AuthenticationFlow.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/flow/PasswordRecoveryFlow.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/flow/RegistrationFlow.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/flow/AccountUnlockFlow.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/flow/FlowSpecification.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/run.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/authenticate.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/cancel.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/emailVerify.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/proceed.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/poll.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/startTransaction.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/register.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/recoverPassword.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/handleInteractionCodeRedirect.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/unlockAccount.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/transactionMeta.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/types/idx-js.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/idx/types/api.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/oidc/decodeToken.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/oidc/endpoints/token.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/oidc/endpoints/well-known.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/oidc/exchangeCodeForTokens.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/oidc/handleOAuthResponse.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/oidc/endpoints/authorize.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/oidc/revokeToken.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/oidc/getToken.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/oidc/getWithoutPrompt.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/oidc/renewTokensWithRefresh.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/oidc/renewToken.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/oidc/renewTokens.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/oidc/getUserInfo.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/oidc/getWithPopup.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/oidc/getWithRedirect.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/oidc/parseFromUrl.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/oidc/util/defaultTokenParams.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/oidc/util/browser.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/oidc/util/errors.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/oidc/util/loginRedirect.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/oidc/util/oauthMeta.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/oidc/util/validateClaims.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/oidc/util/validateToken.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/oidc/util/oauth.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/oidc/util/pkce.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/oidc/util/prepareTokenParams.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/oidc/util/refreshToken.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/oidc/util/urlParams.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/oidc/verifyToken.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/tx/AuthTransaction.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/tx/api.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/tx/poll.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/tx/util.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/types/Token.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/types/Transaction.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/util/console.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/util/misc.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/util/object.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/util/types.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/lib/util/url.ts","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/p-cancelable/index.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/cross-fetch/dist/browser-ponyfill.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/detect-node/browser.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/regenerator-runtime/runtime.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/tiny-emitter/index.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/esm/createClass.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/esm/defineProperty.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/esm/inherits.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/esm/typeof.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/webpack/bootstrap","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/webpack/runtime/compat get default export","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/webpack/runtime/define property getters","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/webpack/runtime/global","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/webpack/runtime/hasOwnProperty shorthand","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/OktaAuth/webpack/runtime/make namespace object","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/cross-fetch/dist/browser-ponyfill.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/handlebars/lib/handlebars.runtime.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/handlebars/lib/handlebars/base.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/handlebars/lib/handlebars/decorators.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/handlebars/lib/handlebars/decorators/inline.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/handlebars/lib/handlebars/exception.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/handlebars/lib/handlebars/helpers.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/handlebars/lib/handlebars/helpers/block-helper-missing.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/handlebars/lib/handlebars/helpers/each.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/handlebars/lib/handlebars/helpers/helper-missing.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/handlebars/lib/handlebars/helpers/if.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/handlebars/lib/handlebars/helpers/log.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/handlebars/lib/handlebars/helpers/lookup.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/handlebars/lib/handlebars/helpers/with.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/handlebars/lib/handlebars/internal/create-new-lookup-object.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/handlebars/lib/handlebars/internal/proto-access.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/handlebars/lib/handlebars/internal/wrapHelper.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/handlebars/lib/handlebars/logger.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/handlebars/lib/handlebars/no-conflict.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/handlebars/lib/handlebars/runtime.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/handlebars/lib/handlebars/safe-string.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/handlebars/lib/handlebars/utils.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/q/q.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/u2f-api-polyfill/u2f-api-polyfill.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/packages/@okta/courage-dist/jquery.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/packages/@okta/qtip2/dist/jquery.qtip.js","node_modules/@okta/okta-signin-widget/dist/js/webpack:/OktaSignIn/node_modules/underscore/underscore-umd-min.js","app/login.js"],"sourcesContent":["// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(5958);\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","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"OktaSignIn\"] = factory();\n\telse\n\t\troot[\"OktaSignIn\"] = factory();\n})(self, function() {\nreturn ","'use strict';\n\nconst converters = {\n\tdays: value => value * 864e5,\n\thours: value => value * 36e5,\n\tminutes: value => value * 6e4,\n\tseconds: value => value * 1e3,\n\tmilliseconds: value => value,\n\tmicroseconds: value => value / 1e3,\n\tnanoseconds: value => value / 1e6\n};\n\nconst toMilliseconds = object => Object.entries(object).reduce((milliseconds, [key, value]) => {\n\tif (typeof value !== 'number') {\n\t\tthrow new TypeError(`Expected a \\`number\\` for key \\`${key}\\`, got \\`${value}\\` (${typeof value})`);\n\t}\n\n\tif (!converters[key]) {\n\t\tthrow new Error('Unsupported time key');\n\t}\n\n\treturn milliseconds + converters[key](value);\n}, 0);\n\nmodule.exports = toMilliseconds;\n// TODO: remove this for next major version\nmodule.exports.default = toMilliseconds;\n","'use strict';\nmodule.exports = milliseconds => {\n\tif (typeof milliseconds !== 'number') {\n\t\tthrow new TypeError('Expected a number');\n\t}\n\n\tconst roundTowardsZero = milliseconds > 0 ? Math.floor : Math.ceil;\n\n\treturn {\n\t\tdays: roundTowardsZero(milliseconds / 86400000),\n\t\thours: roundTowardsZero(milliseconds / 3600000) % 24,\n\t\tminutes: roundTowardsZero(milliseconds / 60000) % 60,\n\t\tseconds: roundTowardsZero(milliseconds / 1000) % 60,\n\t\tmilliseconds: roundTowardsZero(milliseconds) % 1000,\n\t\tmicroseconds: roundTowardsZero(milliseconds * 1000) % 1000,\n\t\tnanoseconds: roundTowardsZero(milliseconds * 1e6) % 1000\n\t};\n};\n","/*!\n * JavaScript Cookie v2.1.0\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n(function (factory) {\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t} else if (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t} else {\n\t\tvar _OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = _OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api (key, value, attributes) {\n\t\t\tvar result;\n\n\t\t\t// Write\n\n\t\t\tif (arguments.length > 1) {\n\t\t\t\tattributes = extend({\n\t\t\t\t\tpath: '/'\n\t\t\t\t}, api.defaults, attributes);\n\n\t\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\t\tvar expires = new Date();\n\t\t\t\t\texpires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5);\n\t\t\t\t\tattributes.expires = expires;\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tresult = JSON.stringify(value);\n\t\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\t\tvalue = result;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\n\t\t\t\tif (!converter.write) {\n\t\t\t\t\tvalue = encodeURIComponent(String(value))\n\t\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\t\t\t\t} else {\n\t\t\t\t\tvalue = converter.write(value, key);\n\t\t\t\t}\n\n\t\t\t\tkey = encodeURIComponent(String(key));\n\t\t\t\tkey = key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent);\n\t\t\t\tkey = key.replace(/[\\(\\)]/g, escape);\n\n\t\t\t\treturn (document.cookie = [\n\t\t\t\t\tkey, '=', value,\n\t\t\t\t\tattributes.expires && '; expires=' + attributes.expires.toUTCString(), // use expires attribute, max-age is not supported by IE\n\t\t\t\t\tattributes.path && '; path=' + attributes.path,\n\t\t\t\t\tattributes.domain && '; domain=' + attributes.domain,\n\t\t\t\t\tattributes.secure ? '; secure' : ''\n\t\t\t\t].join(''));\n\t\t\t}\n\n\t\t\t// Read\n\n\t\t\tif (!key) {\n\t\t\t\tresult = {};\n\t\t\t}\n\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all. Also prevents odd result when\n\t\t\t// calling \"get()\"\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar rdecode = /(%[0-9A-Z]{2})+/g;\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar name = parts[0].replace(rdecode, decodeURIComponent);\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tcookie = converter.read ?\n\t\t\t\t\t\tconverter.read(cookie, name) : converter(cookie, name) ||\n\t\t\t\t\t\tcookie.replace(rdecode, decodeURIComponent);\n\n\t\t\t\t\tif (this.json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tresult = cookie;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!key) {\n\t\t\t\t\t\tresult[name] = cookie;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\n\t\tapi.get = api.set = api;\n\t\tapi.getJSON = function () {\n\t\t\treturn api.apply({\n\t\t\t\tjson: true\n\t\t\t}, [].slice.call(arguments));\n\t\t};\n\t\tapi.defaults = {};\n\n\t\tapi.remove = function (key, attributes) {\n\t\t\tapi(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n","// Chosen, a Select Box Enhancer for jQuery and Prototype\n// by Patrick Filler for Harvest, http://getharvest.com\n//\n// Version 0.11.1\n// Full source at https://github.com/harvesthq/chosen\n// Copyright (c) 2011 Harvest http://getharvest.com\n\n// MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md\n// This file is generated by `grunt build`, do not edit it by hand.\n\ndefine(['jquery'], function (jQuery) {\n (function() {\n var SelectParser;\n\n SelectParser = (function() {\n function SelectParser() {\n this.options_index = 0;\n this.parsed = [];\n }\n\n SelectParser.prototype.add_node = function(child) {\n if (child.nodeName.toUpperCase() === \"OPTGROUP\") {\n return this.add_group(child);\n } else {\n return this.add_option(child);\n }\n };\n\n SelectParser.prototype.add_group = function(group) {\n var group_position, option, _i, _len, _ref, _results;\n\n group_position = this.parsed.length;\n this.parsed.push({\n array_index: group_position,\n group: true,\n label: group.label,\n children: 0,\n disabled: group.disabled\n });\n _ref = group.childNodes;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n option = _ref[_i];\n _results.push(this.add_option(option, group_position, group.disabled));\n }\n return _results;\n };\n\n SelectParser.prototype.add_option = function(option, group_position, group_disabled) {\n if (option.nodeName.toUpperCase() === \"OPTION\") {\n if (option.text !== \"\") {\n if (group_position != null) {\n this.parsed[group_position].children += 1;\n }\n this.parsed.push({\n array_index: this.parsed.length,\n options_index: this.options_index,\n value: option.value,\n text: option.text,\n html: option.innerHTML,\n selected: option.selected,\n disabled: group_disabled === true ? group_disabled : option.disabled,\n group_array_index: group_position,\n classes: option.className,\n style: option.style.cssText\n });\n } else {\n this.parsed.push({\n array_index: this.parsed.length,\n options_index: this.options_index,\n empty: true\n });\n }\n return this.options_index += 1;\n }\n };\n\n return SelectParser;\n\n })();\n\n SelectParser.select_to_array = function(select) {\n var child, parser, _i, _len, _ref;\n\n parser = new SelectParser();\n _ref = select.childNodes;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n child = _ref[_i];\n parser.add_node(child);\n }\n return parser.parsed;\n };\n\n this.SelectParser = SelectParser;\n\n }).call(this);\n\n (function() {\n var AbstractChosen, root;\n\n root = this;\n\n AbstractChosen = (function() {\n function AbstractChosen(form_field, options) {\n this.form_field = form_field;\n this.options = options != null ? options : {};\n if (!AbstractChosen.browser_is_supported()) {\n return;\n }\n this.is_multiple = this.form_field.multiple;\n this.set_default_text();\n this.set_default_values();\n this.setup();\n this.set_up_html();\n this.register_observers();\n this.finish_setup();\n }\n\n AbstractChosen.prototype.set_default_values = function() {\n var _this = this;\n\n this.click_test_action = function(evt) {\n return _this.test_active_click(evt);\n };\n this.activate_action = function(evt) {\n return _this.activate_field(evt);\n };\n this.active_field = false;\n this.mouse_on_container = false;\n this.results_showing = false;\n this.result_highlighted = null;\n this.result_single_selected = null;\n this.allow_single_deselect = (this.options.allow_single_deselect != null) && (this.form_field.options[0] != null) && this.form_field.options[0].text === \"\" ? this.options.allow_single_deselect : false;\n this.disable_search_threshold = this.options.disable_search_threshold || 0;\n this.disable_search = this.options.disable_search || false;\n this.enable_split_word_search = this.options.enable_split_word_search != null ? this.options.enable_split_word_search : true;\n this.search_contains = this.options.search_contains || false;\n this.single_backstroke_delete = this.options.single_backstroke_delete || false;\n this.max_selected_options = this.options.max_selected_options || Infinity;\n return this.inherit_select_classes = this.options.inherit_select_classes || false;\n };\n\n AbstractChosen.prototype.set_default_text = function() {\n if (this.form_field.getAttribute(\"data-placeholder\")) {\n this.default_text = this.form_field.getAttribute(\"data-placeholder\");\n } else if (this.is_multiple) {\n this.default_text = this.options.placeholder_text_multiple || this.options.placeholder_text || AbstractChosen.default_multiple_text;\n } else {\n this.default_text = this.options.placeholder_text_single || this.options.placeholder_text || AbstractChosen.default_single_text;\n }\n return this.results_none_found = this.form_field.getAttribute(\"data-no_results_text\") || this.options.no_results_text || AbstractChosen.default_no_result_text;\n };\n\n AbstractChosen.prototype.mouse_enter = function() {\n return this.mouse_on_container = true;\n };\n\n AbstractChosen.prototype.mouse_leave = function() {\n return this.mouse_on_container = false;\n };\n\n AbstractChosen.prototype.input_focus = function(evt) {\n var _this = this;\n\n if (this.is_multiple) {\n if (!this.active_field) {\n return setTimeout((function() {\n return _this.container_mousedown();\n }), 50);\n }\n } else {\n if (!this.active_field) {\n return this.activate_field();\n }\n }\n };\n\n AbstractChosen.prototype.input_blur = function(evt) {\n var _this = this;\n\n if (!this.mouse_on_container) {\n this.active_field = false;\n return setTimeout((function() {\n return _this.blur_test();\n }), 100);\n }\n };\n\n AbstractChosen.prototype.result_add_option = function(option) {\n var classes, style;\n\n option.dom_id = this.container_id + \"_o_\" + option.array_index;\n classes = [];\n if (!option.disabled && !(option.selected && this.is_multiple)) {\n classes.push(\"active-result\");\n }\n if (option.disabled && !(option.selected && this.is_multiple)) {\n classes.push(\"disabled-result\");\n }\n if (option.selected) {\n classes.push(\"result-selected\");\n }\n if (option.group_array_index != null) {\n classes.push(\"group-option\");\n }\n if (option.classes !== \"\") {\n classes.push(option.classes);\n }\n style = option.style.cssText !== \"\" ? \" style=\\\"\" + option.style + \"\\\"\" : \"\";\n return '
  • ' + option.html + '
  • ';\n };\n\n AbstractChosen.prototype.results_update_field = function() {\n this.set_default_text();\n if (!this.is_multiple) {\n this.results_reset_cleanup();\n }\n this.result_clear_highlight();\n this.result_single_selected = null;\n return this.results_build();\n };\n\n AbstractChosen.prototype.results_toggle = function() {\n if (this.results_showing) {\n return this.results_hide();\n } else {\n return this.results_show();\n }\n };\n\n AbstractChosen.prototype.results_search = function(evt) {\n if (this.results_showing) {\n return this.winnow_results();\n } else {\n return this.results_show();\n }\n };\n\n AbstractChosen.prototype.choices_count = function() {\n var option, _i, _len, _ref;\n\n if (this.selected_option_count != null) {\n return this.selected_option_count;\n }\n this.selected_option_count = 0;\n _ref = this.form_field.options;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n option = _ref[_i];\n if (option.selected) {\n this.selected_option_count += 1;\n }\n }\n return this.selected_option_count;\n };\n\n AbstractChosen.prototype.choices_click = function(evt) {\n evt.preventDefault();\n if (!(this.results_showing || this.is_disabled)) {\n return this.results_show();\n }\n };\n\n AbstractChosen.prototype.keyup_checker = function(evt) {\n var stroke, _ref;\n\n stroke = (_ref = evt.which) != null ? _ref : evt.keyCode;\n this.search_field_scale();\n switch (stroke) {\n case 8:\n if (this.is_multiple && this.backstroke_length < 1 && this.choices_count() > 0) {\n return this.keydown_backstroke();\n } else if (!this.pending_backstroke) {\n this.result_clear_highlight();\n return this.results_search();\n }\n break;\n case 13:\n evt.preventDefault();\n if (this.results_showing) {\n return this.result_select(evt);\n }\n break;\n case 27:\n if (this.results_showing) {\n this.results_hide();\n }\n return true;\n case 9:\n case 38:\n case 40:\n case 16:\n case 91:\n case 17:\n break;\n default:\n return this.results_search();\n }\n };\n\n AbstractChosen.prototype.generate_field_id = function() {\n var new_id;\n\n new_id = this.generate_random_id();\n this.form_field.id = new_id;\n return new_id;\n };\n\n AbstractChosen.prototype.generate_random_char = function() {\n var chars, newchar, rand;\n\n chars = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\n rand = Math.floor(Math.random() * chars.length);\n return newchar = chars.substring(rand, rand + 1);\n };\n\n AbstractChosen.prototype.container_width = function() {\n if (this.options.width != null) {\n return this.options.width;\n } else {\n return \"\" + this.form_field.offsetWidth + \"px\";\n }\n };\n\n AbstractChosen.browser_is_supported = function() {\n var _ref;\n\n if (window.navigator.appName === \"Microsoft Internet Explorer\") {\n return (null !== (_ref = document.documentMode) && _ref >= 8);\n }\n return true;\n };\n\n AbstractChosen.default_multiple_text = \"Select Some Options\";\n\n AbstractChosen.default_single_text = \"Select an Option\";\n\n AbstractChosen.default_no_result_text = \"No results match\";\n\n return AbstractChosen;\n\n })();\n\n root.AbstractChosen = AbstractChosen;\n\n }).call(this);\n\n (function() {\n var $, Chosen, root, _ref,\n __hasProp = {}.hasOwnProperty,\n __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };\n\n root = this;\n\n // OKTA-93521 - plugin assumes root is global scope\n var AbstractChosen = root.AbstractChosen;\n\n $ = jQuery;\n\n $.fn.extend({\n chosen: function(options) {\n if (!AbstractChosen.browser_is_supported()) {\n return this;\n }\n return this.each(function(input_field) {\n var $this;\n\n $this = $(this);\n if (!$this.hasClass(\"chzn-done\")) {\n return $this.data('chosen', new Chosen(this, options));\n }\n });\n }\n });\n\n Chosen = (function(_super) {\n __extends(Chosen, _super);\n\n function Chosen() {\n _ref = Chosen.__super__.constructor.apply(this, arguments);\n return _ref;\n }\n\n Chosen.prototype.setup = function() {\n this.form_field_jq = $(this.form_field);\n this.current_selectedIndex = this.form_field.selectedIndex;\n return this.is_rtl = this.form_field_jq.hasClass(\"chzn-rtl\");\n };\n\n Chosen.prototype.finish_setup = function() {\n return this.form_field_jq.addClass(\"chzn-done\");\n };\n\n Chosen.prototype.set_up_html = function() {\n var container_classes, container_props;\n\n this.container_id = this.form_field.id.length ? this.form_field.id.replace(/[^\\w]/g, '_') : this.generate_field_id();\n this.container_id += \"_chzn\";\n container_classes = [\"chzn-container\"];\n container_classes.push(\"chzn-container-\" + (this.is_multiple ? \"multi\" : \"single\"));\n if (this.inherit_select_classes && this.form_field.className) {\n container_classes.push(this.form_field.className);\n }\n if (this.is_rtl) {\n container_classes.push(\"chzn-rtl\");\n }\n container_props = {\n 'id': this.container_id,\n 'class': container_classes.join(' '),\n 'style': \"width: \" + (this.container_width()) + \";\",\n 'title': this.form_field.title\n };\n this.container = $(\"
    \", container_props);\n if (this.is_multiple) {\n this.container.html('
    ');\n } else {\n this.container.html('' + this.default_text + '
    ');\n }\n this.form_field_jq.hide().after(this.container);\n this.dropdown = this.container.find('div.chzn-drop').first();\n this.search_field = this.container.find('input').first();\n this.search_results = this.container.find('ul.chzn-results').first();\n this.search_field_scale();\n this.search_no_results = this.container.find('li.no-results').first();\n if (this.is_multiple) {\n this.search_choices = this.container.find('ul.chzn-choices').first();\n this.search_container = this.container.find('li.search-field').first();\n } else {\n this.search_container = this.container.find('div.chzn-search').first();\n this.selected_item = this.container.find('.chzn-single').first();\n }\n this.results_build();\n this.set_tab_index();\n this.set_label_behavior();\n return this.form_field_jq.trigger(\"liszt:ready\", {\n chosen: this\n });\n };\n\n Chosen.prototype.register_observers = function() {\n var _this = this;\n\n this.container.mousedown(function(evt) {\n _this.container_mousedown(evt);\n });\n this.container.mouseup(function(evt) {\n _this.container_mouseup(evt);\n });\n this.container.mouseenter(function(evt) {\n _this.mouse_enter(evt);\n });\n this.container.mouseleave(function(evt) {\n _this.mouse_leave(evt);\n });\n this.search_results.mouseup(function(evt) {\n _this.search_results_mouseup(evt);\n });\n this.search_results.mouseover(function(evt) {\n _this.search_results_mouseover(evt);\n });\n this.search_results.mouseout(function(evt) {\n _this.search_results_mouseout(evt);\n });\n this.search_results.bind('mousewheel DOMMouseScroll', function(evt) {\n _this.search_results_mousewheel(evt);\n });\n this.form_field_jq.bind(\"liszt:updated\", function(evt) {\n _this.results_update_field(evt);\n });\n this.form_field_jq.bind(\"liszt:activate\", function(evt) {\n _this.activate_field(evt);\n });\n this.form_field_jq.bind(\"liszt:open\", function(evt) {\n _this.container_mousedown(evt);\n });\n this.search_field.blur(function(evt) {\n _this.input_blur(evt);\n });\n this.search_field.keyup(function(evt) {\n _this.keyup_checker(evt);\n });\n this.search_field.keydown(function(evt) {\n _this.keydown_checker(evt);\n });\n this.search_field.focus(function(evt) {\n _this.input_focus(evt);\n });\n if (this.is_multiple) {\n return this.search_choices.click(function(evt) {\n _this.choices_click(evt);\n });\n } else {\n return this.container.click(function(evt) {\n evt.preventDefault();\n });\n }\n };\n\n Chosen.prototype.search_field_disabled = function() {\n this.is_disabled = this.form_field_jq[0].disabled;\n if (this.is_disabled) {\n this.container.addClass('chzn-disabled');\n this.search_field[0].disabled = true;\n if (!this.is_multiple) {\n this.selected_item.unbind(\"focus\", this.activate_action);\n }\n return this.close_field();\n } else {\n this.container.removeClass('chzn-disabled');\n this.search_field[0].disabled = false;\n if (!this.is_multiple) {\n return this.selected_item.bind(\"focus\", this.activate_action);\n }\n }\n };\n\n Chosen.prototype.container_mousedown = function(evt) {\n if (!this.is_disabled) {\n if (evt && evt.type === \"mousedown\" && !this.results_showing) {\n evt.preventDefault();\n }\n if (!((evt != null) && ($(evt.target)).hasClass(\"search-choice-close\"))) {\n if (!this.active_field) {\n if (this.is_multiple) {\n this.search_field.val(\"\");\n }\n $(document).click(this.click_test_action);\n this.results_show();\n } else if (!this.is_multiple && evt && (($(evt.target)[0] === this.selected_item[0]) || $(evt.target).parents(\"a.chzn-single\").length)) {\n evt.preventDefault();\n this.results_toggle();\n }\n return this.activate_field();\n }\n }\n };\n\n Chosen.prototype.container_mouseup = function(evt) {\n if (evt.target.nodeName === \"ABBR\" && !this.is_disabled) {\n return this.results_reset(evt);\n }\n };\n\n Chosen.prototype.search_results_mousewheel = function(evt) {\n var delta, _ref1, _ref2;\n\n delta = -((_ref1 = evt.originalEvent) != null ? _ref1.wheelDelta : void 0) || ((_ref2 = evt.originialEvent) != null ? _ref2.detail : void 0);\n if (delta != null) {\n evt.preventDefault();\n if (evt.type === 'DOMMouseScroll') {\n delta = delta * 40;\n }\n return this.search_results.scrollTop(delta + this.search_results.scrollTop());\n }\n };\n\n Chosen.prototype.blur_test = function(evt) {\n if (!this.active_field && this.container.hasClass(\"chzn-container-active\")) {\n return this.close_field();\n }\n };\n\n Chosen.prototype.close_field = function() {\n $(document).unbind(\"click\", this.click_test_action);\n this.active_field = false;\n this.results_hide();\n this.container.removeClass(\"chzn-container-active\");\n this.clear_backstroke();\n this.show_search_field_default();\n return this.search_field_scale();\n };\n\n Chosen.prototype.activate_field = function() {\n this.container.addClass(\"chzn-container-active\");\n this.active_field = true;\n this.search_field.val(this.search_field.val());\n return this.search_field.focus();\n };\n\n Chosen.prototype.test_active_click = function(evt) {\n if ($(evt.target).parents('#' + this.container_id).length) {\n return this.active_field = true;\n } else {\n return this.close_field();\n }\n };\n\n Chosen.prototype.results_build = function() {\n var content, data, _i, _len, _ref1;\n\n this.parsing = true;\n this.selected_option_count = null;\n this.results_data = root.SelectParser.select_to_array(this.form_field);\n if (this.is_multiple) {\n this.search_choices.find(\"li.search-choice\").remove();\n } else if (!this.is_multiple) {\n this.selected_item.addClass(\"chzn-default\").find(\"span\").text(this.default_text);\n if (this.disable_search || this.form_field.options.length <= this.disable_search_threshold) {\n this.search_field[0].readOnly = true;\n this.container.addClass(\"chzn-container-single-nosearch\");\n } else {\n this.search_field[0].readOnly = false;\n this.container.removeClass(\"chzn-container-single-nosearch\");\n }\n }\n content = '';\n _ref1 = this.results_data;\n for (_i = 0, _len = _ref1.length; _i < _len; _i++) {\n data = _ref1[_i];\n if (data.group) {\n content += this.result_add_group(data);\n } else if (!data.empty) {\n content += this.result_add_option(data);\n if (data.selected && this.is_multiple) {\n this.choice_build(data);\n } else if (data.selected && !this.is_multiple) {\n this.selected_item.removeClass(\"chzn-default\").find(\"span\").text(data.text);\n if (this.allow_single_deselect) {\n this.single_deselect_control_build();\n }\n }\n }\n }\n this.search_field_disabled();\n this.show_search_field_default();\n this.search_field_scale();\n this.search_results.html(content);\n return this.parsing = false;\n };\n\n Chosen.prototype.result_add_group = function(group) {\n group.dom_id = this.container_id + \"_g_\" + group.array_index;\n return '
  • ' + $(\"
    \").text(group.label).html() + '
  • ';\n };\n\n Chosen.prototype.result_do_highlight = function(el) {\n var high_bottom, high_top, maxHeight, visible_bottom, visible_top;\n\n if (el.length) {\n this.result_clear_highlight();\n this.result_highlight = el;\n this.result_highlight.addClass(\"highlighted\");\n maxHeight = parseInt(this.search_results.css(\"maxHeight\"), 10);\n visible_top = this.search_results.scrollTop();\n visible_bottom = maxHeight + visible_top;\n high_top = this.result_highlight.position().top + this.search_results.scrollTop();\n high_bottom = high_top + this.result_highlight.outerHeight();\n if (high_bottom >= visible_bottom) {\n return this.search_results.scrollTop((high_bottom - maxHeight) > 0 ? high_bottom - maxHeight : 0);\n } else if (high_top < visible_top) {\n return this.search_results.scrollTop(high_top);\n }\n }\n };\n\n Chosen.prototype.result_clear_highlight = function() {\n if (this.result_highlight) {\n this.result_highlight.removeClass(\"highlighted\");\n }\n return this.result_highlight = null;\n };\n\n Chosen.prototype.results_show = function() {\n if (this.is_multiple && this.max_selected_options <= this.choices_count()) {\n this.form_field_jq.trigger(\"liszt:maxselected\", {\n chosen: this\n });\n return false;\n }\n this.container.addClass(\"chzn-with-drop\");\n this.form_field_jq.trigger(\"liszt:showing_dropdown\", {\n chosen: this\n });\n this.results_showing = true;\n this.search_field.focus();\n this.search_field.val(this.search_field.val());\n return this.winnow_results();\n };\n\n Chosen.prototype.results_hide = function() {\n if (this.results_showing) {\n this.result_clear_highlight();\n this.container.removeClass(\"chzn-with-drop\");\n this.form_field_jq.trigger(\"liszt:hiding_dropdown\", {\n chosen: this\n });\n }\n return this.results_showing = false;\n };\n\n Chosen.prototype.set_tab_index = function(el) {\n var ti;\n\n if (this.form_field_jq.attr(\"tabindex\")) {\n ti = this.form_field_jq.attr(\"tabindex\");\n this.form_field_jq.attr(\"tabindex\", -1);\n return this.search_field.attr(\"tabindex\", ti);\n }\n };\n\n Chosen.prototype.set_label_behavior = function() {\n var _this = this;\n\n this.form_field_label = this.form_field_jq.parents(\"label\");\n if (!this.form_field_label.length && this.form_field.id.length) {\n this.form_field_label = $(\"label[for='\" + this.form_field.id + \"']\");\n }\n if (this.form_field_label.length > 0) {\n return this.form_field_label.click(function(evt) {\n if (_this.is_multiple) {\n return _this.container_mousedown(evt);\n } else {\n return _this.activate_field();\n }\n });\n }\n };\n\n Chosen.prototype.show_search_field_default = function() {\n if (this.is_multiple && this.choices_count() < 1 && !this.active_field) {\n this.search_field.val(this.default_text);\n return this.search_field.addClass(\"default\");\n } else {\n this.search_field.val(\"\");\n return this.search_field.removeClass(\"default\");\n }\n };\n\n Chosen.prototype.search_results_mouseup = function(evt) {\n var target;\n\n target = $(evt.target).hasClass(\"active-result\") ? $(evt.target) : $(evt.target).parents(\".active-result\").first();\n if (target.length) {\n this.result_highlight = target;\n this.result_select(evt);\n return this.search_field.focus();\n }\n };\n\n Chosen.prototype.search_results_mouseover = function(evt) {\n var target;\n\n target = $(evt.target).hasClass(\"active-result\") ? $(evt.target) : $(evt.target).parents(\".active-result\").first();\n if (target) {\n return this.result_do_highlight(target);\n }\n };\n\n Chosen.prototype.search_results_mouseout = function(evt) {\n if ($(evt.target).hasClass(\"active-result\" || $(evt.target).parents('.active-result').first())) {\n return this.result_clear_highlight();\n }\n };\n\n Chosen.prototype.choice_build = function(item) {\n var choice, close_link,\n _this = this;\n\n choice = $('
  • ', {\n \"class\": \"search-choice\"\n }).html(\"\" + item.html + \"\");\n if (item.disabled) {\n choice.addClass('search-choice-disabled');\n } else {\n close_link = $('', {\n href: '#',\n \"class\": 'search-choice-close',\n rel: item.array_index\n });\n close_link.click(function(evt) {\n return _this.choice_destroy_link_click(evt);\n });\n choice.append(close_link);\n }\n return this.search_container.before(choice);\n };\n\n Chosen.prototype.choice_destroy_link_click = function(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n if (!this.is_disabled) {\n return this.choice_destroy($(evt.target));\n }\n };\n\n Chosen.prototype.choice_destroy = function(link) {\n if (this.result_deselect(link.attr(\"rel\"))) {\n this.show_search_field_default();\n if (this.is_multiple && this.choices_count() > 0 && this.search_field.val().length < 1) {\n this.results_hide();\n }\n link.parents('li').first().remove();\n return this.search_field_scale();\n }\n };\n\n Chosen.prototype.results_reset = function() {\n this.form_field.options[0].selected = true;\n this.selected_option_count = null;\n this.selected_item.find(\"span\").text(this.default_text);\n if (!this.is_multiple) {\n this.selected_item.addClass(\"chzn-default\");\n }\n this.show_search_field_default();\n this.results_reset_cleanup();\n this.form_field_jq.trigger(\"change\");\n if (this.active_field) {\n return this.results_hide();\n }\n };\n\n Chosen.prototype.results_reset_cleanup = function() {\n this.current_selectedIndex = this.form_field.selectedIndex;\n return this.selected_item.find(\"abbr\").remove();\n };\n\n Chosen.prototype.result_select = function(evt) {\n var high, high_id, item, position;\n\n if (this.result_highlight) {\n high = this.result_highlight;\n high_id = high.attr(\"id\");\n this.result_clear_highlight();\n if (this.is_multiple && this.max_selected_options <= this.choices_count()) {\n this.form_field_jq.trigger(\"liszt:maxselected\", {\n chosen: this\n });\n return false;\n }\n if (this.is_multiple) {\n high.removeClass(\"active-result\");\n } else {\n this.search_results.find(\".result-selected\").removeClass(\"result-selected\");\n this.result_single_selected = high;\n this.selected_item.removeClass(\"chzn-default\");\n }\n high.addClass(\"result-selected\");\n position = high_id.substr(high_id.lastIndexOf(\"_\") + 1);\n item = this.results_data[position];\n item.selected = true;\n this.form_field.options[item.options_index].selected = true;\n this.selected_option_count = null;\n if (this.is_multiple) {\n this.choice_build(item);\n } else {\n this.selected_item.find(\"span\").first().text(item.text);\n if (this.allow_single_deselect) {\n this.single_deselect_control_build();\n }\n }\n if (!((evt.metaKey || evt.ctrlKey) && this.is_multiple)) {\n this.results_hide();\n }\n this.search_field.val(\"\");\n if (this.is_multiple || this.form_field.selectedIndex !== this.current_selectedIndex) {\n this.form_field_jq.trigger(\"change\", {\n 'selected': this.form_field.options[item.options_index].value\n });\n }\n this.current_selectedIndex = this.form_field.selectedIndex;\n return this.search_field_scale();\n }\n };\n\n Chosen.prototype.result_activate = function(el, option) {\n if (option.disabled) {\n return el.addClass(\"disabled-result\");\n } else if (this.is_multiple && option.selected) {\n return el.addClass(\"result-selected\");\n } else {\n return el.addClass(\"active-result\");\n }\n };\n\n Chosen.prototype.result_deactivate = function(el) {\n return el.removeClass(\"active-result result-selected disabled-result\");\n };\n\n Chosen.prototype.result_deselect = function(pos) {\n var result, result_data;\n\n result_data = this.results_data[pos];\n if (!this.form_field.options[result_data.options_index].disabled) {\n result_data.selected = false;\n this.form_field.options[result_data.options_index].selected = false;\n this.selected_option_count = null;\n result = $(\"#\" + this.container_id + \"_o_\" + pos);\n result.removeClass(\"result-selected\").addClass(\"active-result\").show();\n this.result_clear_highlight();\n this.winnow_results();\n this.form_field_jq.trigger(\"change\", {\n deselected: this.form_field.options[result_data.options_index].value\n });\n this.search_field_scale();\n return true;\n } else {\n return false;\n }\n };\n\n Chosen.prototype.single_deselect_control_build = function() {\n if (!this.allow_single_deselect) {\n return;\n }\n if (!this.selected_item.find(\"abbr\").length) {\n this.selected_item.find(\"span\").first().after(\"\");\n }\n return this.selected_item.addClass(\"chzn-single-with-deselect\");\n };\n\n Chosen.prototype.winnow_results = function() {\n var found, option, part, parts, regex, regexAnchor, result, result_id, results, searchText, startpos, text, zregex, _i, _j, _len, _len1, _ref1;\n\n this.no_results_clear();\n results = 0;\n searchText = this.search_field.val() === this.default_text ? \"\" : $('
    ').text($.trim(this.search_field.val())).html();\n regexAnchor = this.search_contains ? \"\" : \"^\";\n regex = new RegExp(regexAnchor + searchText.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, \"\\\\$&\"), 'i');\n zregex = new RegExp(searchText.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, \"\\\\$&\"), 'i');\n _ref1 = this.results_data;\n for (_i = 0, _len = _ref1.length; _i < _len; _i++) {\n option = _ref1[_i];\n if (!option.empty) {\n if (option.group) {\n $('#' + option.dom_id).css('display', 'none');\n } else {\n found = false;\n result_id = option.dom_id;\n result = $(\"#\" + result_id);\n if (regex.test(option.html)) {\n found = true;\n results += 1;\n } else if (this.enable_split_word_search && (option.html.indexOf(\" \") >= 0 || option.html.indexOf(\"[\") === 0)) {\n parts = option.html.replace(/\\[|\\]/g, \"\").split(\" \");\n if (parts.length) {\n for (_j = 0, _len1 = parts.length; _j < _len1; _j++) {\n part = parts[_j];\n if (regex.test(part)) {\n found = true;\n results += 1;\n }\n }\n }\n }\n if (found) {\n if (searchText.length) {\n startpos = option.html.search(zregex);\n text = option.html.substr(0, startpos + searchText.length) + '' + option.html.substr(startpos + searchText.length);\n text = text.substr(0, startpos) + '' + text.substr(startpos);\n } else {\n text = option.html;\n }\n result.html(text);\n this.result_activate(result, option);\n if (option.group_array_index != null) {\n $(\"#\" + this.results_data[option.group_array_index].dom_id).css('display', 'list-item');\n }\n } else {\n if (this.result_highlight && result_id === this.result_highlight.attr('id')) {\n this.result_clear_highlight();\n }\n this.result_deactivate(result);\n }\n }\n }\n }\n if (results < 1 && searchText.length) {\n return this.no_results(searchText);\n } else {\n return this.winnow_results_set_highlight();\n }\n };\n\n Chosen.prototype.winnow_results_set_highlight = function() {\n var do_high, selected_results;\n\n if (!this.result_highlight) {\n selected_results = !this.is_multiple ? this.search_results.find(\".result-selected.active-result\") : [];\n do_high = selected_results.length ? selected_results.first() : this.search_results.find(\".active-result\").first();\n if (do_high != null) {\n return this.result_do_highlight(do_high);\n }\n }\n };\n\n Chosen.prototype.no_results = function(terms) {\n var no_results_html;\n\n no_results_html = $('
  • ' + this.results_none_found + ' \"\"
  • ');\n no_results_html.find(\"span\").first().html(terms);\n return this.search_results.append(no_results_html);\n };\n\n Chosen.prototype.no_results_clear = function() {\n return this.search_results.find(\".no-results\").remove();\n };\n\n Chosen.prototype.keydown_arrow = function() {\n var next_sib;\n\n if (this.results_showing && this.result_highlight) {\n next_sib = this.result_highlight.nextAll(\"li.active-result\").first();\n if (next_sib) {\n return this.result_do_highlight(next_sib);\n }\n } else {\n return this.results_show();\n }\n };\n\n Chosen.prototype.keyup_arrow = function() {\n var prev_sibs;\n\n if (!this.results_showing && !this.is_multiple) {\n return this.results_show();\n } else if (this.result_highlight) {\n prev_sibs = this.result_highlight.prevAll(\"li.active-result\");\n if (prev_sibs.length) {\n return this.result_do_highlight(prev_sibs.first());\n } else {\n if (this.choices_count() > 0) {\n this.results_hide();\n }\n return this.result_clear_highlight();\n }\n }\n };\n\n Chosen.prototype.keydown_backstroke = function() {\n var next_available_destroy;\n\n if (this.pending_backstroke) {\n this.choice_destroy(this.pending_backstroke.find(\"a\").first());\n return this.clear_backstroke();\n } else {\n next_available_destroy = this.search_container.siblings(\"li.search-choice\").last();\n if (next_available_destroy.length && !next_available_destroy.hasClass(\"search-choice-disabled\")) {\n this.pending_backstroke = next_available_destroy;\n if (this.single_backstroke_delete) {\n return this.keydown_backstroke();\n } else {\n return this.pending_backstroke.addClass(\"search-choice-focus\");\n }\n }\n }\n };\n\n Chosen.prototype.clear_backstroke = function() {\n if (this.pending_backstroke) {\n this.pending_backstroke.removeClass(\"search-choice-focus\");\n }\n return this.pending_backstroke = null;\n };\n\n Chosen.prototype.keydown_checker = function(evt) {\n var stroke, _ref1;\n\n stroke = (_ref1 = evt.which) != null ? _ref1 : evt.keyCode;\n this.search_field_scale();\n if (stroke !== 8 && this.pending_backstroke) {\n this.clear_backstroke();\n }\n switch (stroke) {\n case 8:\n this.backstroke_length = this.search_field.val().length;\n break;\n case 9:\n if (this.results_showing && !this.is_multiple) {\n this.result_select(evt);\n }\n this.mouse_on_container = false;\n break;\n case 13:\n evt.preventDefault();\n break;\n case 38:\n evt.preventDefault();\n this.keyup_arrow();\n break;\n case 40:\n evt.preventDefault();\n this.keydown_arrow();\n break;\n }\n };\n\n Chosen.prototype.search_field_scale = function() {\n var div, h, style, style_block, styles, w, _i, _len;\n\n if (this.is_multiple) {\n h = 0;\n w = 0;\n style_block = \"position:absolute; left: -1000px; top: -1000px; display:none;\";\n styles = ['font-size', 'font-style', 'font-weight', 'font-family', 'line-height', 'text-transform', 'letter-spacing'];\n for (_i = 0, _len = styles.length; _i < _len; _i++) {\n style = styles[_i];\n style_block += style + \":\" + this.search_field.css(style) + \";\";\n }\n div = $('
    ', {\n 'style': style_block\n });\n div.text(this.search_field.val());\n $('body').append(div);\n w = div.width() + 25;\n div.remove();\n if (!this.f_width) {\n this.f_width = this.container.outerWidth();\n }\n if (w > this.f_width - 10) {\n w = this.f_width - 10;\n }\n return this.search_field.css({\n 'width': w + 'px'\n });\n }\n };\n\n Chosen.prototype.generate_random_id = function() {\n var string;\n\n string = \"sel\" + this.generate_random_char() + this.generate_random_char() + this.generate_random_char();\n while ($(\"#\" + string).length > 0) {\n string += this.generate_random_char();\n }\n return string;\n };\n\n return Chosen;\n\n })(AbstractChosen);\n\n root.Chosen = Chosen;\n\n }).call(this);\n\n});","/**\n * There are following local modifications:\n * - Author: Uzi Kilon ukilon@okta.com\n * Bug: OKTA-20830 - solves the conflict when there are multiple labels\n */\n/**\n * --------------------------------------------------------------------\n * jQuery customInput plugin\n * Author: Maggie Costello Wachs maggie@filamentgroup.com, Scott Jehl, scott@filamentgroup.com\n * Copyright (c) 2009 Filament Group\n * licensed under MIT (filamentgroup.com/examples/mit-license.txt)\n * --------------------------------------------------------------------\n*/\ndefine(['jquery'], function (jQuery) {\n var $ = jQuery;\n jQuery.fn.customInput = function(){\n return $(this).each(function(){\n if($(this).is('[type=checkbox],[type=radio]')){\n var input = $(this);\n\n // get the associated label using the input's id\n var label = input.siblings('label[for=\"'+input.attr('id')+'\"]:first');\n if (!label.length) {\n label = input.closest('label[for=\"'+input.attr('id')+'\"]:first');\n }\n // wrap the input + label in a div\n input.add(label).wrapAll('
    ');\n\n // necessary for browsers that don't support the :hover pseudo class on labels\n label.hover(\n function(){ $(this).addClass('hover'); },\n function(){ $(this).removeClass('hover'); }\n );\n\n //bind custom event, trigger it, bind click,focus,blur events\n input.bind('updateState', function(){\n input.is(':checked') ? label.addClass('checked') : label.removeClass('checked checkedHover checkedFocus');\n })\n .trigger('updateState')\n .click(function(){\n $('input[name=\"'+ $(this).attr('name') +'\"]').trigger('updateState');\n })\n .focus(function(){\n label.addClass('focus');\n if(input.is(':checked')){ $(this).addClass('checkedFocus'); }\n })\n .blur(function(){ label.removeClass('focus checkedFocus'); });\n }\n });\n };\n\n});","/*! http://mths.be/placeholder v2.0.7 by @mathias */\ndefine(['jquery'], function($){\n\n\tvar isInputSupported = 'placeholder' in document.createElement('input'),\n\t isTextareaSupported = 'placeholder' in document.createElement('textarea'),\n\t prototype = $.fn,\n\t valHooks = $.valHooks,\n\t hooks,\n\t placeholder;\n\n\tif (isInputSupported && isTextareaSupported) {\n\n\t\tplaceholder = prototype.placeholder = function() {\n\t\t\treturn this;\n\t\t};\n\n\t\tplaceholder.input = placeholder.textarea = true;\n\n\t} else {\n\n\t\tplaceholder = prototype.placeholder = function() {\n\t\t\tvar $this = this;\n\t\t\t$this\n\t\t\t\t.filter((isInputSupported ? 'textarea' : ':input') + '[placeholder]')\n\t\t\t\t.not('.placeholder')\n\t\t\t\t.bind({\n\t\t\t\t\t'focus.placeholder': clearPlaceholder,\n\t\t\t\t\t'blur.placeholder': setPlaceholder\n\t\t\t\t})\n\t\t\t\t.data('placeholder-enabled', true)\n\t\t\t\t.trigger('blur.placeholder');\n\t\t\treturn $this;\n\t\t};\n\n\t\tplaceholder.input = isInputSupported;\n\t\tplaceholder.textarea = isTextareaSupported;\n\n\t\thooks = {\n\t\t\t'get': function(element) {\n\t\t\t\tvar $element = $(element);\n\t\t\t\treturn $element.data('placeholder-enabled') && $element.hasClass('placeholder') ? '' : element.value;\n\t\t\t},\n\t\t\t'set': function(element, value) {\n\t\t\t\tvar $element = $(element);\n\t\t\t\tif (!$element.data('placeholder-enabled')) {\n\t\t\t\t\treturn element.value = value;\n\t\t\t\t}\n\t\t\t\tif (value == '') {\n\t\t\t\t\telement.value = value;\n\t\t\t\t\t// Issue #56: Setting the placeholder causes problems if the element continues to have focus.\n\t\t\t\t\tif (element != document.activeElement) {\n\t\t\t\t\t\t// We can't use `triggerHandler` here because of dummy text/password inputs :(\n\t\t\t\t\t\tsetPlaceholder.call(element);\n\t\t\t\t\t}\n\t\t\t\t} else if ($element.hasClass('placeholder')) {\n\t\t\t\t\tclearPlaceholder.call(element, true, value) || (element.value = value);\n\t\t\t\t} else {\n\t\t\t\t\telement.value = value;\n\t\t\t\t}\n\t\t\t\t// `set` can not return `undefined`; see http://jsapi.info/jquery/1.7.1/val#L2363\n\t\t\t\treturn $element;\n\t\t\t}\n\t\t};\n\n\t\tisInputSupported || (valHooks.input = hooks);\n\t\tisTextareaSupported || (valHooks.textarea = hooks);\n\n\t\t$(function() {\n\t\t\t// Look for forms\n\t\t\t$(document).delegate('form', 'submit.placeholder', function() {\n\t\t\t\t// Clear the placeholder values so they don't get submitted\n\t\t\t\tvar $inputs = $('.placeholder', this).each(clearPlaceholder);\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t$inputs.each(setPlaceholder);\n\t\t\t\t}, 10);\n\t\t\t});\n\t\t});\n\n\t\t// Clear placeholder values upon page reload\n\t\t$(window).bind('beforeunload.placeholder', function() {\n\t\t\t$('.placeholder').each(function() {\n\t\t\t\tthis.value = '';\n\t\t\t});\n\t\t});\n\n\t}\n\n\tfunction args(elem) {\n\t\t// Return an object of element attributes\n\t\tvar newAttrs = {},\n\t\t rinlinejQuery = /^jQuery\\d+$/;\n\t\t$.each(elem.attributes, function(i, attr) {\n\t\t\tif (attr.specified && !rinlinejQuery.test(attr.name)) {\n\t\t\t\tnewAttrs[attr.name] = attr.value;\n\t\t\t}\n\t\t});\n\t\treturn newAttrs;\n\t}\n\n\tfunction clearPlaceholder(event, value) {\n\t\tvar input = this,\n\t\t $input = $(input);\n\t\tif (input.value == $input.attr('placeholder') && $input.hasClass('placeholder')) {\n\t\t\tif ($input.data('placeholder-password')) {\n\t\t\t\t$input = $input.hide().next().show().attr('id', $input.removeAttr('id').data('placeholder-id'));\n\t\t\t\t// If `clearPlaceholder` was called from `$.valHooks.input.set`\n\t\t\t\tif (event === true) {\n\t\t\t\t\treturn $input[0].value = value;\n\t\t\t\t}\n\t\t\t\t$input.focus();\n\t\t\t} else {\n\t\t\t\tinput.value = '';\n\t\t\t\t$input.removeClass('placeholder');\n\t\t\t\tinput == document.activeElement && input.select();\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction setPlaceholder() {\n\t\tvar $replacement,\n\t\t input = this,\n\t\t $input = $(input),\n\t\t $origInput = $input,\n\t\t id = this.id;\n\t\tif (input.value == '') {\n\t\t\tif (input.type == 'password') {\n\t\t\t\tif (!$input.data('placeholder-textinput')) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t$replacement = $input.clone().attr({ 'type': 'text' });\n\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t$replacement = $('').attr($.extend(args(this), { 'type': 'text' }));\n\t\t\t\t\t}\n\t\t\t\t\t$replacement\n\t\t\t\t\t\t.removeAttr('name')\n\t\t\t\t\t\t.data({\n\t\t\t\t\t\t\t'placeholder-password': true,\n\t\t\t\t\t\t\t'placeholder-id': id\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.bind('focus.placeholder', clearPlaceholder);\n\t\t\t\t\t$input\n\t\t\t\t\t\t.data({\n\t\t\t\t\t\t\t'placeholder-textinput': $replacement,\n\t\t\t\t\t\t\t'placeholder-id': id\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.before($replacement);\n\t\t\t\t}\n\t\t\t\t$input = $input.removeAttr('id').hide().prev().attr('id', id).show();\n\t\t\t\t// Note: `$input[0] != input` now!\n\t\t\t}\n\t\t\t$input.addClass('placeholder');\n\t\t\t$input[0].value = $input.attr('placeholder');\n\t\t} else {\n\t\t\t$input.removeClass('placeholder');\n\t\t}\n\t}\n});","import ListView from '../framework/ListView';\nimport BaseView from './BaseView';\n\n/**\n * See {@link src/framework/ListView} for more detail and examples from the base class.\n * @class module:Okta.ListView\n * @extends src/framework/ListView\n * @mixes module:Okta.View\n */\nexport default BaseView.decorate(ListView);\n","import hbs from 'handlebars-inline-precompile';\nimport _ from '../../util/underscore-wrapper';\nimport ViewUtil from '../../util/ViewUtil';\nimport BaseView from '../BaseView';\nconst disabledEvents = {\n click: function (e) {\n e.preventDefault();\n e.stopPropagation();\n }\n};\n\n/**\n * A configurable button\n * @class module:Okta.internal.views.components.BaseButtonLink\n * @extends module:Okta.View\n * @example\n * var View = BaseButtonLink.extend({\n * title: 'Click Me',\n * icon: 'help-text'\n * })\n */\nexport default BaseView.extend(\n /** @lends module:Okta.internal.views.components.BaseButtonLink.prototype */ {\n attributes() {\n const defaultAttrs = {\n 'data-se': 'button'\n };\n const additionalAttr = this.__getAttribute('attrs');\n return _.extend(defaultAttrs, additionalAttr);\n },\n /**\n * The main text for the button\n * @name title\n * @memberof module:Okta.internal.views.components.BaseButtonLink\n * @type {(String|Function)}\n * @instance\n */\n\n /**\n * The link for the button\n * @name href\n * @memberof module:Okta.internal.views.components.BaseButtonLink\n * @type {(String|Function)}\n * @instance\n */\n\n /**\n * CSS class for the icon to display. See [Style guide](http://rain.okta1.com:1802/su/dev/style-guide#icons)\n * @name icon\n * @memberof module:Okta.internal.views.components.BaseButtonLink\n * @type {(String|Function)}\n * @instance\n */\n\n /**\n * A [Backbone events](http://backbonejs.org/#View-delegateEvents) hash\n * @name events\n * @memberof module:Okta.internal.views.components.BaseButtonLink\n * @type {Object}\n * @instance\n */\n\n tagName: 'a',\n\n template: hbs('{{#if icon}}{{/if}}{{#if title}}{{title}}{{/if}}'),\n\n /**\n * Make this button visible, default to true.\n * @type {(Boolean|Function)}\n * @default true\n */\n visible: true,\n\n /**\n * Make this button enabled, default to true.\n * @type {(Boolean|Function)}\n * @default true\n */\n enabled: true,\n\n /**\n * The setting to determine when the button is enabled, default to {} and\n * enabled takes a higher priority.\n * @type {(Object|Function)}\n * @default {}\n */\n enableWhen: {},\n\n /**\n * The setting to determine when the button is visible, default to {} and\n * visible takes a higher priority.\n * @type {(Object|Function)}\n * @default {}\n */\n showWhen: {},\n\n constructor: function (options) {\n this.options = options || {};\n const data = this.getTemplateData();\n\n this.disabled = false;\n\n BaseView.apply(this, arguments);\n\n this.$el.addClass('link-button');\n if (data.icon) {\n this.$el.addClass('link-button-icon');\n if (!data.title) {\n this.$el.addClass('icon-only');\n }\n }\n },\n\n getTemplateData: function () {\n return {\n href: this.__getAttribute('href'),\n title: this.__getAttribute('title'),\n icon: this.__getAttribute('icon')\n };\n },\n\n initialize: function () {\n ViewUtil.applyDoWhen(this, _.resultCtx(this, 'enableWhen', this), this.toggle);\n ViewUtil.applyDoWhen(this, _.resultCtx(this, 'showWhen', this), this.toggleVisible);\n },\n\n render: function () {\n BaseView.prototype.render.apply(this, arguments);\n\n if (!_.result(this, 'enabled')) {\n this.toggle(false);\n }\n\n if (!_.result(this, 'visible')) {\n this.toggleVisible(false);\n }\n\n const data = this.getTemplateData();\n\n this.$el.attr('href', data.href || '#');\n\n return this;\n },\n\n __getAttribute: function (name, defaultValue) {\n let value = _.resultCtx(this.options, name, this);\n\n if (_.isUndefined(value)) {\n value = _.result(this, name);\n }\n return !_.isUndefined(value) ? value : defaultValue;\n },\n\n enable: function () {\n this.toggle(true);\n },\n\n disable: function () {\n this.toggle(false);\n },\n\n show: function () {\n this.toggleVisible(true);\n },\n\n hide: function () {\n this.toggleVisible(false);\n },\n\n toggle: function (enable) {\n const bool = !!enable && _.result(this, 'enabled');\n //this is to toggle the enability\n\n this.disabled = !bool;\n this.$el.toggleClass('link-button-disabled btn-disabled disabled', this.disabled);\n this.delegateEvents(this.disabled ? disabledEvents : null);\n },\n\n toggleVisible: function (visible) {\n const hidden = !visible || !_.result(this, 'visible');\n\n this.$el.toggleClass('hide', hidden);\n }\n }\n);\n","import $ from '../../util/jquery-wrapper';\nimport _ from '../../util/underscore-wrapper';\nimport BaseView from '../BaseView';\nimport hbs from 'handlebars-inline-precompile';\n\nconst optionsTemplate = hbs(\n '\\\n \\\n {{#if icon}}\\\n \\\n {{/if}}\\\n {{#if title}}\\\n {{title}}\\\n {{/if}}\\\n {{#if subtitle}}\\\n

    {{subtitle}}

    \\\n {{/if}}\\\n
    \\\n '\n);\nconst BaseDropDownDropDownOption = BaseView.extend({\n tagName: 'li',\n\n events: {\n click: function (e) {\n e.preventDefault();\n this.action && this.action.call(this);\n }\n },\n\n constructor: function () {\n BaseView.apply(this, arguments);\n this.$el.addClass('okta-dropdown-option option');\n },\n\n render: function () {\n this.$el.html(\n optionsTemplate({\n icon: _.result(this, 'icon'),\n className: _.result(this, 'className') || '',\n title: _.result(this, 'title'),\n subtitle: _.result(this, 'subtitle'),\n seleniumId: _.result(this, 'seleniumId')\n })\n );\n if (_.result(this, 'disabled')) {\n this.disable();\n }\n return this;\n },\n\n disable: function () {\n this.$el.addClass('option-disabled');\n this.$el.find('a').attr('tabindex', '-1');\n }\n});\nexport default BaseView.extend({\n events: {\n 'click a.option-selected': function (e) {\n e.preventDefault();\n if (_.result(this, 'disabled')) {\n e.stopPropagation();\n }\n },\n 'click .dropdown-disabled': function (e) {\n e.preventDefault();\n e.stopPropagation();\n }\n },\n\n items: [],\n\n constructor: function () {\n const className = this.className;\n\n // In this very specific case we want to NOT append className to $el\n // but to the tag in the template\n // so we want to disable backbone default functionality.\n\n this.className = null;\n\n BaseView.apply(this, arguments);\n\n this.className = className;\n\n this.$el.addClass('dropdown more-actions float-l');\n\n _.each(\n _.result(this, 'items'),\n function (option) {\n this.addOption(option, this.options);\n },\n this\n );\n },\n\n template: hbs('\\\n \\\n {{#if icon}}\\\n \\\n {{/if}}\\\n {{#if screenReaderText}}\\\n {{screenReaderText}}\\\n {{/if}}\\\n {{title}}\\\n \\\n \\\n
    \\\n \\\n
    \\\n '),\n\n getTemplateData: function () {\n const className = [_.result(this, 'className') || '', _.result(this, 'disabled') ? 'dropdown-disabled' : ''];\n\n return {\n icon: _.result(this, 'icon'),\n className: $.trim(className.join(' ')),\n title: _.result(this, 'title'),\n screenReaderText: _.result(this, 'screenReaderText')\n };\n },\n\n addOption: function (proto, options) {\n this.add(BaseDropDownDropDownOption.extend(proto), 'ul.options-wrap', { options: options || {} });\n }\n});\n","import _ from '../../util/underscore-wrapper';\nimport BaseView from '../BaseView';\nimport hbs from 'handlebars-inline-precompile';\n\nconst defaults = {\n level: 'success',\n message: 'Great Success!',\n hide: true,\n fade: 400,\n delay: 3000,\n width: 0,\n dismissable: false\n};\nexport default BaseView.extend({\n className: 'infobox infobox-confirm infobox-confirm-fixed',\n\n events: {\n 'click .infobox-dismiss-link': function (e) {\n e.preventDefault();\n this.fadeOut();\n }\n },\n\n template: hbs('\\\n {{#if dismissable}}\\\n \\\n \\\n \\\n {{/if}}\\\n \\\n {{#if title}}

    {{title}}

    {{/if}}\\\n

    {{message}}

    \\\n '),\n\n initialize: function () {\n this.options = _.defaults({}, this.options, defaults);\n this.$el.addClass('infobox-' + this.options.level);\n if (this.options.width) {\n this.$el.width(this.options.width);\n }\n },\n\n getTemplateData: function () {\n return _.extend(_.pick(this.options, 'level', 'message', 'title'), {\n dismissable: this.options.hide === false || this.options.dismissable === true\n });\n },\n\n postRender: function () {\n if (this.options.hide) {\n _.delay(_.bind(this.fadeOut, this), this.options.delay);\n }\n },\n\n fadeOut: function () {\n this.$el.fadeOut(this.options.fade, _.bind(this.remove, this));\n }\n});\n","import BaseView from '../../BaseView';\nimport FormUtil from '../helpers/FormUtil';\nexport default BaseView.extend({\n el: '',\n\n formTitle: '',\n\n modelEvents: {\n 'change:__edit__': 'toggle'\n },\n\n initialize: function () {\n this.addButton();\n },\n\n addButton: function () {\n if (this.model.get('__edit__')) {\n this.add(FormUtil.createReadFormButton({ type: 'cancel' }));\n } else {\n this.add(\n FormUtil.createReadFormButton({\n type: 'edit',\n formTitle: this.formTitle,\n className: 'disable-in-read-only'\n })\n );\n }\n },\n\n toggle: function () {\n this.removeChildren();\n this.addButton();\n }\n});\n","/* eslint max-statements: 0 */\nimport $ from '../../../util/jquery-wrapper';\nimport _ from '../../../util/underscore-wrapper';\nimport SchemaUtil from '../../../util/SchemaUtil';\nimport StringUtil from '../../../util/StringUtil';\nconst NAME = 'name';\nconst ENUM_KEY_PREFIX = '_enum_';\n\n/**\n * Generate Input Options in order to create an input in an Form for Enum type attribute.\n * @param {Object} config informations for creating input options\n * config.name schema property name\n * config.title schema property title\n * config.readOnly create an read only input?\n * config.explain sub-title to the input\n * config.enumValues list of enum values for creating input options (Dropdown/SimpleCheckBoxSet)\n * config.displayType display type of schema property\n *\n * @return {Object} inputOptions options for create an Input view. (Dropdown/SimpleCheckBoxSet)\n *\n */\nfunction getEnumInputOptions(config) {\n const enumOneOf = convertToOneOf(config.enumValues);\n const inputOptions = {\n name: config.name,\n label: config.title,\n readOnly: config.readOnly,\n customExplain: config.explain,\n params: { enumOneOf: enumOneOf },\n options: getDropdownOptionsFromOneOf(enumOneOf)\n };\n\n // input type\n if (SchemaUtil.isArrayDataType(config.displayType)) {\n inputOptions.type = 'checkboxset';\n inputOptions.to = valuesToEnumObjects;\n inputOptions.from = enumObjectsToValues;\n } else {\n inputOptions.type = 'select';\n inputOptions.to = valueToEnumObject;\n inputOptions.from = enumObjectToValue;\n }\n\n inputOptions.input = null;\n return inputOptions;\n}\n\nfunction getDropdownOptions(values) {\n return _.isArray(values) ? getDropdownOptionsFromOneOf(convertToOneOf(values)) : {};\n}\n\nfunction getDropdownOptionsFromOneOf(values) {\n if (!isOneOfEnumObject(values)) {\n return {};\n }\n\n return _.reduce(\n values,\n function (options, value, index) {\n options[convertIndexToEnumIndex(index)] = value.title;\n return options;\n },\n {}\n );\n}\n\nfunction convertToOneOf(values) {\n // assume this is a legacy enum array and convert to oneOf object\n if (!_.all(values, $.isPlainObject)) {\n return convertEnumToOneOf(values);\n\n // we assume object without const and title is an enum object which need special conversion\n } else if (!isOneOfEnumObject(values)) {\n return convertEnumObjectToOneOf(values);\n }\n\n return values;\n}\n\nfunction isOneOfEnumObject(values) {\n return (\n _.isArray(values) &&\n _.all(values, function (value) {\n return _.has(value, 'const') && _.has(value, 'title');\n })\n );\n}\n\nfunction convertEnumToOneOf(values) {\n return _.map(values, function (value) {\n return {\n const: value,\n title: valueToTitle(value)\n };\n });\n}\n\nfunction valueToTitle(value) {\n if (_.isObject(value)) {\n return JSON.stringify(value);\n }\n\n if (_.isNumber(value)) {\n return value + '';\n }\n\n return value;\n}\n\nfunction convertEnumObjectToOneOf(values) {\n const findKey = _.partial(_.has, _, NAME);\n // If all object found the key NAME, use the NAME's value as display name\n\n if (_.all(values, findKey)) {\n return _.chain(values)\n .filter(function (value) {\n return $.isPlainObject(value) && _.has(value, NAME);\n })\n .map(function (value) {\n return { const: value, title: value[NAME] };\n })\n .value();\n }\n\n // Assume a legacy object array does not need special handling and just convert to const/title enum\n return convertEnumToOneOf(values);\n}\n\nfunction convertIndexToEnumIndex(index) {\n return `${ENUM_KEY_PREFIX}${index}`;\n}\n\nfunction enumObjectToValue(obj) {\n const index = _.findIndex(this.options.params.enumOneOf, function (oneOfObj) {\n return _.isObject(obj) ? _.isEqual(oneOfObj.const, obj) : oneOfObj.const === obj;\n });\n // Cannot rely on comparator in findIndex when compare objects so need special handling\n\n return index > -1 ? convertIndexToEnumIndex(index) : obj;\n}\n\nfunction valueToEnumObject(val) {\n if (!_.isString(val) || val.indexOf(ENUM_KEY_PREFIX) !== 0) {\n return val;\n }\n\n const index = val.replace(ENUM_KEY_PREFIX, '');\n const enumValue =\n this.options.params && _.isArray(this.options.params.enumOneOf) ? this.options.params.enumOneOf[index] : null;\n\n // @see `getEnumInputOptions` how enumValues has been set.\n\n return _.has(enumValue, 'const') ? enumValue.const : enumValue;\n}\n\nfunction valuesToEnumObjects(values) {\n return _.map(values, valueToEnumObject.bind(this));\n}\n\nfunction enumObjectsToValues(values) {\n return _.map(values, enumObjectToValue.bind(this));\n}\n\nfunction isStringConstraint(value) {\n return _.isString(value) && $.trim(value) !== '';\n}\n\nfunction isNumberConstraint(value) {\n return _.isNumber(value) || _.isNumber(StringUtil.parseFloat($.trim(value)));\n}\n\nfunction isIntegerConstraint(value) {\n const integer = _.isNumber(value) ? value : StringUtil.parseInt($.trim(value));\n\n return typeof integer === 'number' && isFinite(integer) && Math.floor(integer) === integer;\n}\n\nfunction isObjectConstraint(value) {\n if (_.isObject(value) && !_.isArray(value)) {\n return true;\n }\n\n const object = StringUtil.parseObject($.trim(value));\n\n return _.isObject(object) && !_.isArray(object);\n}\n\nfunction isConstraintValueMatchType(value, type) {\n switch (type) {\n case SchemaUtil.STRING:\n return isStringConstraint(value);\n case SchemaUtil.NUMBER:\n return isNumberConstraint(value);\n case SchemaUtil.INTEGER:\n return isIntegerConstraint(value);\n case SchemaUtil.OBJECT:\n return isObjectConstraint(value);\n }\n}\n\nexport default {\n getEnumInputOptions: getEnumInputOptions,\n getDropdownOptions: getDropdownOptions,\n convertToOneOf: convertToOneOf,\n isConstraintValueMatchType: isConstraintValueMatchType\n};\n","import BaseView from '../../BaseView';\nimport hbs from 'handlebars-inline-precompile';\n\nexport default BaseView.extend({\n template: hbs('\\\n
    \\\n \\\n {{#if errorSummary}}\\\n

    {{errorSummary}}

    \\\n {{else}}\\\n

    {{i18n code=\"oform.errorbanner.title\" bundle=\"courage\"}}

    \\\n {{/if}}\\\n
    \\\n '),\n modelEvents: {\n 'form:clear-errors': 'remove'\n }\n});\n","import _ from '../../../util/underscore-wrapper';\nimport Logger from '../../../util/Logger';\nimport Util from '../../../util/Util';\nimport StringUtil from '../../../util/StringUtil';\nimport BaseView from '../../BaseView';\nimport hbs from 'handlebars-inline-precompile';\n\nconst isABaseView = Util.isABaseView;\n/**\n * @class InputContainer\n * @private\n *\n * TODO: OKTA-80796\n * Attention: Please change with caution since this is used in other places\n */\n\nexport default BaseView.extend({\n attributes: function () {\n return {\n 'data-se': 'o-form-input-container'\n };\n },\n\n className: function () {\n let className = 'o-form-input';\n\n if (this.options.wide) {\n className += ' o-form-wide';\n }\n if (_.contains([1, 2, 3, 4], this.options.multi)) {\n className += ' o-form-multi-input-' + this.options.multi;\n if (_.isArray(this.options.input)) {\n const inputGroup = _.find(this.options.input, function (input) {\n return _.contains(['text+select', 'select+text'], input.options.type);\n });\n\n inputGroup && (className += ' o-form-multi-input-group-' + this.options.multi);\n }\n }\n return className;\n },\n\n _getNames: function () {\n const names = _.isArray(this.options.name) ? this.options.name : [this.options.name];\n /*eslint complexity: 0 */\n\n if (this.options.type === 'group') {\n names.push.apply(names, _.pluck(this.options.input[0].options.params.inputs, 'name'));\n } else if (_.isArray(this.options.name)) {\n if (this.options.input && this.options.input.options && this.options.input.options.name) {\n names.push(this.options.input.options.name);\n }\n } else if (this.options.input) {\n if (_.isArray(this.options.input)) {\n _.each(this.options.input, function (inputItem) {\n names.push(inputItem.options.name);\n });\n } else {\n names.push(this.options.input.options.name);\n }\n }\n return _.uniq(_.compact(names));\n },\n\n _getInputElement: function () {\n // NOTE: this.options.input is sometimes not an array under test\n const lastInput = Array.isArray(this.options.input)\n ? _.last(this.options.input)\n : this.options.input;\n // FIXME: replace with _.get\n const id = lastInput\n && lastInput.options\n && lastInput.options.inputId;\n const el = id ? this.$('#' + id) : null;\n return el && el.length ? el : null;\n },\n\n constructor: function () {\n /* eslint max-statements: [2, 18] */\n BaseView.apply(this, arguments);\n\n const explainTop = this.options['explain-top'] && this.options['label-top'];\n if (this.options.input) {\n if (_.isArray(this.options.input)) {\n _.each(\n this.options.input,\n function (inputItem) {\n this.add(inputItem, { prepend: !explainTop });\n },\n this\n );\n } else {\n this.add(this.options.input, { prepend: !explainTop });\n }\n }\n\n this.__setExplain(this.options);\n\n const names = this._getNames();\n\n this.listenTo(this.model, 'form:field-error', function (name, errors) {\n if (_.contains(names, name)) {\n this.__setError(errors, explainTop);\n }\n });\n\n this.listenTo(this.model, 'form:clear-errors change:' + names.join(' change:'), this.__clearError);\n this.listenTo(this.model, 'form:clear-error:' + names.join(' form:clear-error:'), this.__clearError);\n\n if (_.resultCtx(this.options, 'autoRender', this)) {\n this.listenTo(this.model, 'change:' + this.options.name, this.render);\n }\n\n this.__errorState = false;\n },\n\n /**\n * Populates the explain on the input container (if it exists). There are\n * two ways to use this:\n * 1. Raw text - wraps in the correct html template\n * 2. Custom html\n * - pass in a View class (preferred)\n * - pass in an instance of a View\n * Some additional notes:\n * - You can pass a function that returns any of the above\n * - This maintains support for the deprecated \"customExplain\" property\n * that was used before. This pattern is superseded by explain, so use\n * that instead.\n * @private\n */\n __setExplain: function (options) {\n let explain;\n\n // Deprecated - if you need custom html, use explain instead\n if (options.customExplain) {\n Logger.warn('Deprecated - use explain instead of customExplain');\n this.add(this.options.customExplain);\n return;\n }\n\n explain = options.explain;\n if (_.isFunction(explain) && !isABaseView(explain)) {\n explain = _.resultCtx(this.options, 'explain', this);\n }\n if (!explain) {\n return;\n }\n\n if (isABaseView(explain)) {\n this.template = hbs('

    ');\n this.add(explain, ' > .o-form-explain');\n } else {\n this.template = hbs('

    {{explain}}

    ');\n }\n },\n\n /**\n * Highlight the input as invalid (validation failed)\n * Adds an explaination message of the error\n * @private\n */\n __setError: function (errors, explainTop) {\n this.__errorState = true;\n this.$el.addClass('o-form-has-errors');\n\n const errorId = _.uniqueId('input-container-error');\n\n const html = this.__getHTMLForError(_.flatten(errors), errorId);\n\n const $elExplain = this.$('.o-form-explain')\n .not('.o-form-input-error')\n .first();\n\n if ($elExplain.length && !explainTop) {\n $elExplain.before(html);\n } else {\n this.$el.append(html);\n }\n\n const target = this._getInputElement() || this.$el;\n target.attr('aria-describedby', errorId);\n target.attr('aria-invalid', true);\n },\n\n __getHTMLForError: function (errors, errorId) {\n const tmpl = hbs`\n

    \n {{text}}

    \n `;\n\n const iconLabel = StringUtil.localize('oform.error.icon.ariaLabel', 'courage'); // 'Error'\n\n if (this.options.multirowError) {\n let html = '';\n errors.forEach(error => {\n html = html + tmpl({\n errorId: errorId,\n iconLabel: iconLabel,\n text: error\n });\n });\n return html;\n }\n\n return tmpl({\n errorId: errorId,\n iconLabel: iconLabel,\n text: errors.join(', ')\n });\n\n },\n\n /**\n * Un-highlight the input and remove explaination text\n * @private\n */\n __clearError: function () {\n if (this.__errorState) {\n this.$('.o-form-input-error').remove();\n\n const target = this._getInputElement() || this.$el;\n target.attr('aria-describedby', null);\n target.attr('aria-invalid', null);\n\n this.$el.removeClass('o-form-has-errors');\n this.__errorState = false;\n _.defer(() => {\n this.model.trigger('form:resize');\n });\n }\n },\n\n focus: function () {\n this.each(function (view) {\n if (view.focus) {\n return view.focus();\n }\n });\n\n return this;\n }\n});\n","/* eslint complexity: 0, max-statements: 0 */\nimport _ from '../../../util/underscore-wrapper';\nimport InputRegistry from './InputRegistry';\n\nfunction createInput(Input, options) {\n if (InputRegistry.isBaseInput(Input)) {\n return Input.prototype ? new Input(_.omit(options, 'input')) : Input;\n } else {\n return Input;\n }\n}\n\nfunction create(options) {\n options = _.clone(options);\n if (options.input) {\n return createInput(options.input, options);\n }\n const Input = InputRegistry.get(options);\n\n if (!Input) {\n throw new Error('unknown input: ' + options.type);\n }\n return createInput(Input, options);\n}\n\nfunction supports(options) {\n return !!options.input || !!InputRegistry.get(options);\n}\n\nexport default {\n create: create,\n supports: supports\n};\n","import _ from '../../../util/underscore-wrapper';\nimport 'qtip';\nimport BaseView from '../../BaseView';\nimport hbs from 'handlebars-inline-precompile';\n/**\n * @class InputLabel\n * @extends {Okta.View}\n * @private\n * The input's label.\n */\nexport default BaseView.extend({\n className: 'okta-form-label o-form-label',\n\n attributes: {\n 'data-se': 'o-form-label'\n },\n\n /**\n * @constructor\n * @param {Object} options options hash\n * @param {String} [options.type] Input type\n * @param {String|Function} [options.label] Label text\n * @param {String|Function} [options.sublabel] Sub label text\n * @param {String|Function} [options.tooltip] Tooltip text\n * @param {String|Function} [options.inputId] Id of the inputs\n * @param {String|Function} [options.id] Id of the inputs\n */\n constructor: function (options) {\n /* eslint max-statements: [2, 16] complexity: [2, 7]*/\n _.defaults(options, { inputId: options.id });\n delete options.id;\n\n BaseView.apply(this, arguments);\n },\n\n // standardLabel: space added in the end of the label to avoid selecting label text with double click in read mode\n template: hbs`\n {{#if group}}\n \n {{/if}}\n {{#if _isLabelView }}\n \n {{/if}}\n {{#if _isRadioOrCheckbox }}\n {{label}}\n {{/if}}\n {{#if _standardLabel }}\n \n {{/if}}\n {{#if sublabel }}\n {{sublabel}}\n {{/if}}\n {{#if tooltip }}\n \n {{/if}}\n {{#if group}}\n \n {{/if}}\n `,\n\n getTemplateData: function () {\n const options = { label: '' };\n\n _.each(\n ['inputId', 'label', 'sublabel', 'tooltip', 'group'],\n function (option) {\n options[option] = _.resultCtx(this.options, option, this);\n },\n this\n );\n\n if (this._isLabelView(options.label)) {\n options._isLabelView = true;\n } else if (_.contains(['radio', 'checkbox'], this.options.type) || !options.label) {\n options._isRadioOrCheckbox = true;\n } else {\n options._standardLabel = true;\n }\n if (options.tooltip) {\n if (_.isString(options.tooltip)) {\n options.tooltip = {\n text: options.tooltip\n };\n }\n }\n return options;\n },\n\n _isLabelView: function (label) {\n return !_.isUndefined(label) && label instanceof BaseView;\n },\n\n postRender: function () {\n const options = this.getTemplateData();\n\n if (this._isLabelView(options.label)) {\n this.removeChildren();\n this.add(options.label, 'label');\n }\n\n if (options.tooltip) {\n this.$('.o-form-tooltip').qtip(\n _.extend(\n {\n style: { classes: 'qtip-custom qtip-shadow' },\n position: {\n my: (window.okta && window.okta.theme === 'dstheme') ? 'bottom center' : 'bottom left',\n at: 'top center'\n },\n hide: { fixed: true },\n show: { delay: 0 }\n },\n options.tooltip.options\n )\n );\n }\n }\n});\n","import _ from '../../../util/underscore-wrapper';\nimport BaseView from '../../BaseView';\nimport FormUtil from './FormUtil';\n\nfunction runCallback(callback, field) {\n callback.apply(\n this,\n _.map(\n field.split(/\\s+/),\n function (field) {\n return this.model.get(field);\n },\n this\n )\n );\n}\n\nfunction runIf(fn, ctx) {\n if (_.isFunction(fn)) {\n fn.call(ctx);\n }\n}\n\n/**\n * @class InputWrapper\n * @extends Okta.View\n * @private\n * The outer wrapper that warps the label and the input container\n */\nexport default BaseView.extend({\n tagName: function () {\n if (this.options.group) {\n return 'fieldset';\n }\n return 'div';\n },\n className: function () {\n let className = 'o-form-fieldset';\n\n if (this.options['label-top']) {\n className += ' o-form-label-top';\n }\n\n if (this.options.readOnly) {\n className += ' o-form-read-mode';\n }\n\n return className;\n },\n\n attributes: function () {\n return {\n 'data-se': this.options['data-se'] || 'o-form-fieldset'\n };\n },\n\n /**\n * @constructor\n * @param {Object} options options hash\n * @param {Object} [options.events]\n * @param {Object} [options.bindings]\n * @param {Object} [options.showWhen]\n * @param {Function} [options.initialize] post initialize callback\n * @param {Function} [options.render] post render callback\n */\n constructor: function (options) {\n if (options.className) {\n this.inputWrapperClassName = this.className;\n this.optionsClassName = options.className;\n options.className = function () {\n return _.result(this, 'inputWrapperClassName', '') + ' ' + _.result(this, 'optionsClassName');\n };\n }\n BaseView.apply(this, arguments);\n _.each(\n options.events || {},\n function (callback, event) {\n this.listenTo(this.model, event, callback);\n },\n this\n );\n\n _.each(\n options.bindings || {},\n function (callback, field) {\n this.listenTo(\n this.model,\n FormUtil.changeEventString(field.split(/\\s+/)),\n _.bind(runCallback, this, callback, field)\n );\n },\n this\n );\n\n FormUtil.applyShowWhen(this, options.showWhen);\n FormUtil.applyToggleWhen(this, options.toggleWhen);\n\n runIf(options.initialize, this);\n },\n\n postRender: function () {\n _.each(this.options.bindings || {}, runCallback, this);\n runIf(this.options.render, this);\n },\n\n /**\n * @return {InputLabel}\n */\n getLabel: function () {\n return this.size() > 1 ? this.at(0) : null;\n },\n /**\n * @deprecated ambiguous naming, use {@link #getInputContainer}\n */\n getInput: function () {\n return this.getInputContainer();\n },\n\n /**\n * @return {InputContainer}\n */\n getInputContainer: function () {\n return this.at(this.size() > 1 ? 1 : 0);\n },\n\n /**\n * @return {BaseInput[]}\n */\n getInputs: function () {\n return this.getInputContainer().toArray();\n },\n\n focus: function () {\n return this.getInput().focus();\n }\n});\n","import Select from './Select';\nconst options = {\n undefined: 'undefined',\n true: 'true',\n false: 'false'\n};\n\nconst from = function (val) {\n if (val) {\n return 'true';\n }\n if (val === false) {\n return 'false';\n }\n return 'undefined';\n};\n\nconst to = function (val) {\n switch (val) {\n case 'undefined':\n return null;\n case 'true':\n return true;\n case 'false':\n return false;\n default:\n return null;\n }\n};\n\nexport default Select.extend({\n initialize: function () {\n this.options.options = options;\n this.options.from = from;\n this.options.to = to;\n }\n});\n","import _ from '../../../util/underscore-wrapper';\nimport Keys from '../../../util/Keys';\nimport 'vendor/plugins/jquery.custominput';\nimport BaseInput from '../BaseInput';\nimport hbs from 'handlebars-inline-precompile';\n\nexport default BaseInput.extend({\n template: hbs`\n \n \n `,\n /**\n * @Override\n */\n events: {\n 'change :checkbox': 'update',\n keyup: function (e) {\n e.preventDefault();\n if (Keys.isSpaceBar(e)) {\n this.$(':checkbox').click();\n } else if (Keys.isEnter(e)) {\n this.model.trigger('form:save');\n }\n }\n },\n\n /**\n * @Override\n */\n editMode: function () {\n let placeholder = _.resultCtx(this.options, 'placeholder', this);\n\n if (placeholder === '') {\n placeholder = _.resultCtx(this.options, 'label', this);\n } else if (placeholder === false) {\n placeholder = '';\n }\n\n this.$el.html(this.template(_.extend(_.omit(this.options, 'placeholder'), { placeholder: placeholder })));\n const $input = this.$(':checkbox');\n\n $input.prop('checked', this.getModelValue() || false);\n\n this.$('input').customInput();\n this.model.trigger('form:resize');\n\n return this;\n },\n\n /**\n * @Override\n */\n readMode: function () {\n this.editMode();\n this.$(':checkbox').prop('disabled', true);\n return this;\n },\n\n /**\n * @Override\n */\n val: function () {\n return this.$(':checkbox').prop('checked');\n },\n\n /**\n * @Override\n */\n focus: function () {\n return this.$(':checkbox').focus();\n }\n});\n","import _ from '../../../util/underscore-wrapper';\nimport SchemaUtil from '../../../util/SchemaUtil';\nimport StringUtil from '../../../util/StringUtil';\nimport Time from '../../../util/Time';\nimport BaseView from '../../BaseView';\nimport hbs from 'handlebars-inline-precompile';\nconst isVowel = function (string) {\n return /^[aeiou]/.test(string);\n};\n\nconst getArticle = function (string) {\n return isVowel(string) ? 'an' : 'a';\n};\n\nconst template = hbs(\n '\\\n
    \\\n \\\n \\\n \\\n \\\n \\\n \\\n
    \\\n

    \\\n {{errorExplain}}\\\n

    \\\n '\n);\nconst errorClass = 'o-form-has-errors';\nconst updateArrayEvent = 'updateArray';\nexport default BaseView.extend({\n tagName: 'div',\n\n className: 'o-form-input-group',\n\n events: {\n 'click a': function (e) {\n e.preventDefault();\n this.remove();\n },\n 'keyup input': function () {\n this.update();\n }\n },\n\n isEditMode: function () {\n return !this.options.readOnly && (this.options.read !== true || this.model.get('__edit__') === true);\n },\n\n initialize: function () {\n this.template = template(\n _.extend(this.options, {\n placeholder: this.getPlaceholderText(),\n errorExplain: this.getErrorExplainText()\n })\n );\n this.update = _.debounce(this.update, this.options.debounceDelay || Time.DEBOUNCE_DELAY);\n },\n\n render: function () {\n if (this.isEditMode()) {\n this.$el.html(this.template);\n } else {\n this.$el.text(this.options.value);\n this.$('a').hide();\n }\n return this;\n },\n\n remove: function () {\n this.trigger(updateArrayEvent, null);\n this.$el.slideUp(() => {\n BaseView.prototype.remove.call(this, arguments);\n });\n },\n\n update: function () {\n let updatedValue = this.$('input').val();\n\n const parseFunc = _.object(\n [SchemaUtil.DATATYPE.number, SchemaUtil.DATATYPE.integer],\n [StringUtil.parseFloat, this.parseInt]\n );\n\n if (_.has(parseFunc, this.options.itemType)) {\n updatedValue = parseFunc[this.options.itemType](updatedValue);\n !_.isNumber(updatedValue) ? this.markInvalid() : this.clearInvalid();\n }\n this.trigger(updateArrayEvent, updatedValue);\n },\n\n markInvalid: function () {\n this.$el.addClass(errorClass);\n },\n\n clearInvalid: function () {\n this.$el.removeClass(errorClass);\n },\n\n getPlaceholderText: function () {\n const text = ['Enter'];\n\n text.push(getArticle(this.options.itemType));\n text.push(this.options.itemType.toLowerCase());\n return text.join(' ');\n },\n\n getErrorExplainText: function () {\n const text = ['Value must be'];\n\n text.push(getArticle(this.options.itemType));\n text.push(this.options.itemType.toLowerCase());\n return text.join(' ');\n },\n\n parseInt: function (string) {\n // native javascript parseInt is aggressive\n // there're cases we don't want a string to be parsed even though it is convertable\n // so that we don't convert a string silently before warning a user the potential error\n // this is to make sure the string is in an integer format before we parse it\n if (/^-?\\d+$/.test(string)) {\n const num = parseInt(string, 10);\n\n return !_.isNaN(num) ? num : string;\n }\n return string;\n }\n});\n","import _ from '../../../util/underscore-wrapper';\nimport ButtonFactory from '../../../util/ButtonFactory';\nimport BaseView from '../../BaseView';\nimport BaseInput from '../BaseInput';\n\nfunction countInputs(inputs) {\n return _.filter(inputs || [], function (input) {\n return !_.contains(['label', 'button', 'select'], input.type);\n }).length;\n}\n\nconst InputGroupLabelInput = BaseInput.extend({\n tagName: 'span',\n initialize: function () {\n this.$el.text(this.getModelValue());\n },\n editMode: function () {\n this.toggle(true);\n },\n readMode: function () {\n this.toggle(false);\n },\n getModelValue: function () {\n return this.options.label;\n },\n toggle: function (isEditMode) {\n this.$el.toggleClass('o-form-label-inline', isEditMode);\n this.$el.toggleClass('o-form-control', !isEditMode);\n },\n focus: _.noop\n});\n\nfunction createButtonInput(options) {\n return ButtonFactory.create(\n _.defaults(\n {\n getReadModeString: _.constant(' '),\n focus: _.noop\n },\n _.pick(options, 'click', 'title', 'href', 'icon')\n )\n );\n}\n\nconst InputGroupInputGroupView = BaseView.extend({\n getParams: BaseInput.prototype.getParams,\n getParam: BaseInput.prototype.getParam,\n\n className: function () {\n let className;\n\n // Allows views to group multiple inputs under one label without any of the other\n // styling/rendering changes that come with using a group input\n if (this.getParam('noBaseClasses')) {\n return '';\n }\n if (this.getParam('display') === 'text') {\n className = 'o-form-input-group-subtle';\n } else {\n className = 'o-form-input-group';\n }\n if (countInputs(this.getParam('inputs')) > 1) {\n className += ' o-form-input-group-2';\n }\n return className;\n },\n\n initialize: function () {\n _.each(\n this.getParam('inputs'),\n function (input) {\n switch (input.type) {\n case 'label':\n this.add(InputGroupLabelInput, { options: input });\n break;\n case 'button':\n this.add(createButtonInput(input));\n break;\n default:\n input = _.defaults(\n {\n model: this.model,\n params: _.extend(\n {\n autoWidth: true\n },\n input.params || {}\n )\n },\n input\n );\n this.add(this.getParams().create(input));\n }\n },\n this\n );\n },\n\n focus: function () {\n this.first().focus();\n }\n});\nexport default BaseInput.extend(\n {\n constructor: function (options) {\n this.inputGroupView = new InputGroupInputGroupView(options);\n BaseInput.apply(this, arguments);\n },\n\n editMode: function () {\n this.inputGroupView.remove();\n this.inputGroupView = new InputGroupInputGroupView(this.options);\n this.$el.html(this.inputGroupView.render().el);\n },\n\n readMode() {\n // Allows the user to use to the default \"read mode\" of the child inputs instead of\n // rendering a single read mode string for all the child inputs\n if (this.getParam('useChildInputsReadMode')) {\n this.editMode();\n } else {\n BaseInput.prototype.readMode.apply(this, arguments);\n }\n },\n\n toStringValue: function () {\n const strings = this.inputGroupView.map(function (input) {\n return input.getReadModeString();\n });\n\n return strings.length && _.every(strings) ? strings.join(' ') : ' ';\n },\n\n focus: function () {\n this.inputGroupView.focus();\n }\n },\n {\n // test hooks\n LabelInput: InputGroupLabelInput,\n InputGroupView: InputGroupInputGroupView\n }\n);\n","/*!\n * Copyright (c) 2015-2018, 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 _ from '../../../util/underscore-wrapper';\nimport TextBox from './TextBox';\nimport hbs from 'handlebars-inline-precompile';\n\nconst toggleTemplate = hbs`\n \n \n \n \n `;\n\nconst toggleTimeout = 30000;\nexport default TextBox.extend({\n initialize: function () {\n if (this.__showPasswordToggle()) {\n this.events['click .password-toggle .button-show'] = '__showPassword';\n this.events['click .password-toggle .button-hide'] = '__hidePassword';\n }\n this.delegateEvents();\n },\n\n postRender: function () {\n if (this.isEditMode() && this.__showPasswordToggle()) {\n this.$el.append(toggleTemplate);\n this.$el.find('input[type=\"password\"]').addClass('password-with-toggle');\n }\n TextBox.prototype.postRender.apply(this, arguments);\n },\n\n __showPasswordToggle: function () {\n return this.options.params && this.options.params.showPasswordToggle;\n },\n\n __showPassword: function () {\n TextBox.prototype.changeType.apply(this, ['text']);\n this.$('.password-toggle .button-show').hide();\n this.$('.password-toggle .button-hide').show();\n this.passwordToggleTimer = _.delay(() => {\n this.__hidePassword();\n }, toggleTimeout);\n },\n\n __hidePassword: function () {\n TextBox.prototype.changeType.apply(this, ['password']);\n this.$('.password-toggle .button-show').show();\n this.$('.password-toggle .button-hide').hide();\n // clear timeout\n if (this.passwordToggleTimer) {\n clearTimeout(this.passwordToggleTimer);\n }\n }\n});\n","/* eslint max-statements: [2, 12], max-params: [2, 6] */\nimport $ from '../../../util/jquery-wrapper';\nimport _ from '../../../util/underscore-wrapper';\nimport Keys from '../../../util/Keys';\nimport Util from '../../../util/Util';\nimport BaseView from '../../BaseView';\nimport 'vendor/plugins/jquery.custominput';\nimport BaseInput from '../BaseInput';\nimport hbs from 'handlebars-inline-precompile';\n\nconst isABaseView = Util.isABaseView;\nconst RadioRadioOption = BaseView.extend({\n template: hbs`\n \n \n `,\n initialize: function (options) {\n let explain;\n\n explain = options.explain;\n if (_.isFunction(explain) && !isABaseView(explain)) {\n explain = _.resultCtx(this.options, 'explain', this);\n }\n if (!explain) {\n return;\n }\n\n if (isABaseView(explain)) {\n this.add('

    ', '.radio-label');\n this.add(explain, '.o-form-explain');\n } else {\n this.add(BaseView.extend({\n className: 'o-form-explain',\n tagName: 'p',\n template: hbs`{{explain}}`\n }), '.radio-label');\n }\n }\n});\nexport default BaseInput.extend({\n /**\n * @Override\n */\n events: {\n 'change :radio': 'update',\n keyup: function (e) {\n if (Keys.isSpaceBar(e)) {\n $(e.target).click();\n } else if (Keys.isEnter(e)) {\n this.model.trigger('form:save');\n }\n }\n },\n\n /**\n * @Override\n */\n editMode: function () {\n const templates = [];\n\n this.$el.empty();\n\n _.each(\n this.options.options,\n function (value, key) {\n const options = {\n optionId: _.uniqueId('option'),\n name: this.options.inputId,\n realName: this.options.name,\n value: key\n };\n\n if (!_.isObject(value)) {\n value = { label: value };\n }\n _.extend(options, value);\n\n templates.push(new RadioRadioOption(options).render().el);\n },\n this\n );\n this.$el.append(templates);\n let value = this.getModelValue();\n\n if (value) {\n this.$(':radio[value=' + value + ']').prop('checked', true);\n }\n\n this.$('input').customInput();\n this.model.trigger('form:resize');\n\n if (this.getParam('inline') === true) {\n this.$('div.custom-radio').addClass('inline');\n }\n\n return this;\n },\n\n /**\n * @Override\n */\n readMode: function () {\n this.editMode();\n this.$(':radio').prop('disabled', true);\n return this;\n },\n\n /**\n * @Override\n */\n val: function () {\n return this.$(':radio:checked').val();\n },\n\n /**\n * @Override\n */\n focus: function () {\n return this.$('label:eq(0)').focus();\n }\n});\n","import $ from '../../../util/jquery-wrapper';\nimport _ from '../../../util/underscore-wrapper';\nimport Keys from '../../../util/Keys';\nimport 'vendor/plugins/chosen.jquery';\nimport BaseInput from '../BaseInput';\nimport hbs from 'handlebars-inline-precompile';\n\nconst template = hbs('');\nconst option = hbs('');\nconst CHOSEN_WINDOW_MARGIN = 20;\n\n// Chosen has known problems when it's at the bottom of a container that has\n// overflow:hidden set. Because it attaches to the parent container, its\n// dropdown will be cut off in the UI. Any modal with a chosen select element\n// at the bottom will manifest this behavior.\n//\n// The fix (aside from replacing Chosen) is to change Chosen's behavior -\n// use the existing styles, but attach it to 'body' and position it correctly\n// so that it is not affected by a parent overflow.\n//\n// More details can be found in OKTA-46489, OKTA-83570\n\nconst CHOSEN_MAX_HEIGHT = 240;\nconst CHOSEN_Z_INDEX = 50000;\n\nfunction defer(fn) {\n if (this.params.autoWidth) {\n return fn.call(this);\n } else {\n return _.defer(_.bind(fn, this));\n }\n}\n\nfunction findSelectWidth(self) {\n self.$select.hide();\n const select = $(self.$select[0]).hide();\n\n $('body').append(select);\n const width = (self.params.width = select.width() * 1.2 + 'px');\n\n self.$el.append(select.show());\n return width;\n}\n\nfunction recalculateChosen($chosen, $results, $clone) {\n const offset = $clone.offset();\n\n $chosen.css({\n left: offset.left,\n top: offset.top\n });\n // Update the max-height to fit within the constraints of the window. This\n // is especially important for modals because page scrolling is disabled.\n const $win = $(window);\n const rHeight = $results.outerHeight();\n const rBottom = rHeight + $results.offset().top - $win.scrollTop();\n const wHeight = $win.height() - CHOSEN_WINDOW_MARGIN;\n const maxHeight = Math.min(rHeight + wHeight - rBottom, CHOSEN_MAX_HEIGHT);\n\n $results.css('max-height', maxHeight);\n}\n\n// eslint-disable-next-line max-statements\nfunction fixChosenModal($select, textPlaceholder) {\n const $chosen = $select.next('.chzn-container');\n const $clone = $chosen.clone();\n const $results = $chosen.find('.chzn-results');\n const $searchInput = $chosen.find('.chzn-search input[type=text]');\n $searchInput.on('keyup', () => {\n $chosen\n .find('#' + $select.attr('id') + '_txt')\n .attr('aria-activedescendant', $results.find('.active-result.highlighted').attr('id'));\n const noResult = $results.find('li.no-results');\n if (noResult.length) {\n noResult.attr('role', 'alert');\n }\n });\n\n // Use a hidden clone to maintain layout and calculate offset. This is\n // necessary for more complex layouts (like adding a group rule) where\n // the chosen element is floated.\n $clone.css('visibility', 'hidden');\n $clone.removeAttr('id');\n $clone.find('li').removeAttr('id');\n\n // Save the original styles - we'll revert to them when the select closes\n const baseStyles = {\n left: $chosen.css('left'),\n top: $chosen.css('top'),\n position: $chosen.css('position'),\n float: $chosen.css('float'),\n 'z-index': $chosen.css('z-index')\n };\n\n $results.hide();\n\n // Handler for any resize events that happen when the results list is open\n\n const resizeHandler = _.debounce(function () {\n recalculateChosen($chosen, $results, $clone);\n }, 10);\n\n // When the dropdown opens, attach it to body, with the correct absolute\n // position coordinates\n $select.off('.fixChosen'); // Remove events we could have added before\n $select.on('liszt:showing_dropdown.fixChosen', function () {\n $chosen.width($chosen.width());\n $select.after($clone);\n // .chzn-container can trigger the vertical scrollbar if it causes scrollHeight > window height after append to\n // the body. Force top -999999 to avoid the scrollbar so $chosen can find the right offset for relocation.\n $chosen.css({\n position: 'absolute',\n float: 'none',\n 'z-index': CHOSEN_Z_INDEX,\n top: -999999\n });\n $('body').append($chosen);\n\n $('.chzn-search > :text').prop('placeholder', textPlaceholder);\n\n $results.show();\n recalculateChosen($chosen, $results, $clone);\n // Capture scroll events:\n // - for forms that use fixed positioning (like editing attributes in\n // Profile Editor) - window scroll\n // - for forms that are too long for the modal - o-form-content scroll\n $select.parents().scroll(resizeHandler);\n $(window).on('resize scroll', resizeHandler);\n });\n\n // When the dropdown closes or the element is removed, revert to the\n // original styles and reattach it to its original placement in the dom.\n $select.on('liszt:hiding_dropdown.fixChosen remove.fixChosen', function () {\n $select.parents().off('scroll', resizeHandler);\n $(window).off('resize scroll', resizeHandler);\n $chosen.css(baseStyles);\n $results.hide();\n $results.css('max-height', CHOSEN_MAX_HEIGHT);\n $clone.remove();\n $select.after($chosen);\n });\n\n // Do not change the order of event listeners. This event must execute after \n // \"liszt:hiding_dropdown.fixChosen remove.fixChosen\"\n $select.on('liszt:hiding_dropdown.fixChosen', function () {\n $searchInput.focus(); // set focus back to input only when the dropdown is closed\n });\n}\n\nexport default BaseInput.extend({\n className: 'o-form-select',\n\n /**\n * @Override\n */\n events: {\n 'change select': 'update',\n 'keyup .chzn-search > :text': function (e) {\n if (Keys.isEsc(e)) {\n this.$('.chzn-search > :text').val('');\n e.stopPropagation();\n }\n }\n },\n\n constructor: function () {\n this.template = template;\n this.option = this.option || option;\n BaseInput.apply(this, arguments);\n this.params = this.options.params || {};\n },\n\n /**\n * @Override\n */\n editMode: function () {\n /* eslint max-statements: [2, 13] */\n\n this.$el.html(template(this.options));\n this.$select = this.$('select');\n\n const options = this.getOptions();\n\n _.each(\n options,\n function (value, key) {\n this.$select.append(this.option({ key: key, value: value }));\n },\n this\n );\n\n // Fix a regression in jQuery 1.x on Firefox\n // jQuery.val(value) prepends an empty option to the dropdown\n // if value doesnt exist in the dropdown.\n // http://bugs.jquery.com/ticket/13514\n const value = this.getModelValue();\n\n if (value) {\n this.$select.val(value);\n } else {\n this.$('option:first-child').prop('selected', true);\n }\n this.$el.addClass('o-form-control');\n\n if (this.params.chosen !== false) {\n this.__applyChosen();\n }\n return this;\n },\n\n __applyChosen: function (update) {\n let width = this.options.wide ? '100%' : this.params.width || '62%';\n\n if (this.params.autoWidth) {\n width = findSelectWidth(this);\n }\n\n defer.call(this, function () {\n const searchThreshold = this.getParam('searchThreshold', 10);\n\n if (!_.result(this.options, 'autoRender') && update !== false) {\n this.update();\n }\n this.$select.chosen({\n width: width,\n disable_search_threshold: searchThreshold, //eslint-disable-line camelcase\n placeholder_text: this.options['placeholder'], //eslint-disable-line camelcase\n search_contains: true //eslint-disable-line camelcase\n });\n //if options are more than search threshold, consider it as a combobox\n const isComboBox = (this.options & this.options.options \n && (Object.keys(this.options.options).length > searchThreshold)) ? true : false;\n this.accessibilityUpdate(isComboBox, this.params);\n fixChosenModal(this.$select, this.searchPlaceholder);\n\n if (this.params.autoWidth) {\n // fix a chosen css bug\n this.$el.width(0);\n }\n\n this.model.trigger('form:resize');\n });\n },\n\n /**\n * @Override\n */\n val: function () {\n return this.$select && this.$select.val();\n },\n\n /**\n * @Override\n */\n focus: function () {\n if (this.$select) {\n return this.$select.focus();\n }\n },\n\n /**\n * @Override\n */\n toStringValue: function () {\n const selectedOption = this.getModelValue();\n let displayString = selectedOption;\n const options = this.getOptions();\n\n if (!_.isEmpty(options)) {\n displayString = options[selectedOption];\n }\n if (_.isUndefined(displayString)) {\n displayString = this.defaultValue();\n }\n return displayString || '';\n },\n\n /**\n * Convert options to an object\n * support input options that is a\n * 1. a static object such as {key1: val1, key2: val2...}\n * 2. a function to be called to return a static object\n * will return an object with key-value pairs or with empty content\n * @return {Object} The value\n */\n getOptions: function () {\n let options = this.options.options;\n\n if (_.isFunction(options)) {\n options = options.call(this);\n }\n\n return _.isObject(options) ? options : {};\n },\n\n remove: function () {\n if (this.$select) {\n this.$select.trigger('remove');\n }\n return BaseInput.prototype.remove.apply(this, arguments);\n },\n\n /**\n * Code to make the select/combobox component accessible with screen readers.\n *\n * @param {boolean} isComboBox - Is the select a combobox?\n * @param {object} params - params like aria label\n */\n accessibilityUpdate: function (isComboBox, params) {\n const txtBoxId = this.$select.attr('id') + '_txt';\n if (isComboBox) {\n this.$('input[type=text]').attr('id', txtBoxId).attr('role', 'combobox').attr('aria-autocomplete', 'list');\n } else {\n this.$('input[type=text]').attr('id', txtBoxId).attr('role', 'listbox');\n }\n\n if (params && params.aria && params.aria.label) {\n this.$('input[type=text]').attr('id', txtBoxId).attr('aria-label', params.aria.label);\n } else {\n this.$('input[type=text]').attr('id', txtBoxId).attr('aria-label', \n this.$el.parent().prev('.o-form-label').find('label').text());\n }\n\n this.$('.chzn-results .active-result').attr('role', 'option');\n }\n});\n","import $ from '../../../util/jquery-wrapper';\nimport 'qtip';\nimport Keys from '../../../util/Keys';\nimport 'vendor/plugins/jquery.placeholder';\nimport BaseInput from '../BaseInput';\nconst className = 'okta-form-input-field input-fix';\nimport hbs from 'handlebars-inline-precompile';\n\nfunction hasTitleAndText(options) {\n const title = options.title;\n const text = options.text;\n\n return title && text && title !== text;\n}\n\n// options may be a string or an object.\nfunction createQtipContent(options) {\n if (hasTitleAndText(options)) {\n return options;\n }\n return { text: options.text || options };\n}\n\nexport default BaseInput.extend({\n template: hbs`\n {{#if params.innerTooltip}}\n \n {{/if}}\n {{#if params.icon}}\n \n {{/if}}\n \n {{#if params.iconDivider}}\n \n {{/if}}\n `,\n\n /**\n * @Override\n */\n events: {\n 'input input': 'update',\n 'change input': 'update',\n 'keydown input': 'update',\n 'keyup input': function (e) {\n if (Keys.isEnter(e)) {\n this.model.trigger('form:save');\n } else if (Keys.isEsc(e)) {\n this.model.trigger('form:cancel');\n }\n }\n },\n\n constructor: function () {\n BaseInput.apply(this, arguments);\n this.$el.addClass('o-form-control');\n },\n\n /**\n * @Override\n */\n editMode: function () {\n this.$el.addClass(className);\n BaseInput.prototype.editMode.apply(this, arguments);\n this.$('input').placeholder();\n },\n\n /**\n * @Override\n */\n readMode: function () {\n BaseInput.prototype.readMode.apply(this, arguments);\n if (this.options.type === 'password') {\n this.$el.text('********');\n }\n this.$el.removeClass(className);\n },\n\n /**\n * @Override\n */\n val: function () {\n let inputValue = this.$('input[type=\"' + this.options.type + '\"]').val();\n //IE will only read clear text pw if type=\"password\" is explicitly in selector\n\n if (this.options.type !== 'password') {\n inputValue = $.trim(inputValue);\n }\n return inputValue;\n },\n\n /**\n * @Override\n */\n focus: function () {\n return this.$('input').focus();\n },\n\n postRender: function () {\n const { params } = this.options;\n \n if (params && params.innerTooltip) {\n const content = createQtipContent(params.innerTooltip);\n this.$('.input-tooltip').qtip({\n content: content,\n style: { classes: 'okta-tooltip qtip-custom qtip-shadow' },\n position: {\n my: 'bottom left',\n // Note: qTip2 has a known issue calculating the tooltip offset when:\n // 1. A container element has both:\n // a) position: relative/absolute\n // b) overlay: value other than 'visible'\n // 2. The page is scrolled\n //\n // We set position:relative and overlay:auto on the body element,\n // where both are required for:\n // - Positioning the footer correctly\n // - Displaying long pages in embedded browsers\n //\n // The original design called for a fixed position relative to the\n // tooltip icon - this has been switched to \"relative to mouse, and\n // update position when mouse moves\" because of this constraint.\n target: 'mouse',\n adjust: {\n method: 'flip',\n mouse: true,\n y: -5,\n x: 5\n },\n viewport: $('body')\n }\n });\n }\n }\n});\n","import hbs from 'handlebars-inline-precompile';\nimport _ from '../../../util/underscore-wrapper';\nimport SchemaUtil from '../../../util/SchemaUtil';\nimport BaseInput from '../BaseInput';\nimport DeletableBox from './DeletableBox';\n\nexport default BaseInput.extend({\n className: 'array-input',\n\n template: hbs(\n '\\\n {{i18n code=\"oform.add.another\" bundle=\"courage\"}}\\\n '\n ),\n\n params: {\n itemType: 'string'\n },\n\n events: {\n 'click .array-inputs-button': function (e) {\n e.preventDefault();\n if (this.isEditMode()) {\n this.addNewElement();\n }\n }\n },\n\n initialize: function (options) {\n options || (options = {});\n this.params = _.defaults(options.params || {}, this.params);\n this.uniqueIdPrefix = 'array';\n },\n\n // api returns null for an array that does not have value\n // convert it to an empty array\n from: function (val) {\n if (!_.isArray(val)) {\n return [];\n }\n return val;\n },\n\n // @Override\n editMode: function () {\n this._setArrayObject();\n this.$el.html(this.template);\n _.each(this.arrayObject, _.bind(this._addDeletableBox, this));\n\n return this;\n },\n\n // @Override\n readMode: function () {\n this.editMode();\n this.$('.array-inputs-button').addClass('link-button-disabled');\n },\n\n // @Override\n // converts arrayObject to a plain array\n // for string type array, returns all values\n // for number/integer type array, returns values in number type\n val: function () {\n let values = _.values(this.arrayObject);\n\n if (_.contains([SchemaUtil.DATATYPE.number, SchemaUtil.DATATYPE.integer], this.params.itemType)) {\n values = _.filter(values, _.isNumber);\n }\n return values;\n },\n\n focus: function () {},\n\n addNewElement: function () {\n const value = '';\n\n const key = _.uniqueId(this.uniqueIdPrefix);\n\n this.arrayObject[key] = value;\n this._addDeletableBox(value, key);\n // update is called to make sure an empty string value is added for string type array\n this.update();\n },\n\n _addDeletableBox: function (value, key) {\n const deletableBox = new DeletableBox(\n _.extend(_.pick(this.options, 'read', 'readOnly', 'model'), {\n key: key,\n value: value,\n itemType: this.params.itemType\n })\n );\n\n this.listenTo(deletableBox, 'updateArray', function (updatedValue) {\n if (_.isNull(updatedValue)) {\n delete this.arrayObject[key];\n this.stopListening(deletableBox);\n } else {\n this.arrayObject[key] = updatedValue;\n }\n this.update();\n });\n\n deletableBox.render().$el.hide();\n this.$('.array-inputs-button').before(deletableBox.el);\n deletableBox.$el.slideDown();\n\n return deletableBox;\n },\n\n _setArrayObject: function () {\n const array = this.model.get(this.options.name);\n\n this.arrayObject = {};\n if (_.isArray(array) && !_.isEmpty(array)) {\n const keys = [];\n const self = this;\n\n _(array.length).times(function () {\n keys.push(_.uniqueId(self.uniqueIdPrefix));\n });\n this.arrayObject = _.object(keys, array);\n }\n }\n});\n","import _ from '../util/underscore-wrapper';\nimport Backbone, { _Result } from 'backbone';\n\ninterface Link {\n href: string;\n rel: string;\n [queryParam: string]: string;\n}\n\nexport interface FrameworkCollectionFetchOptions extends Backbone.CollectionFetchOptions {\n fromFetch?: boolean;\n abort?: boolean;\n}\n\nexport declare class FrameworkCollectionClass extends Backbone.Collection {\n static isCourageCollection: true;\n\n params: Record | _Result>;\n setPagination(params: any, options?: any): void;\n getFetchData(): Record;\n getPaginationData(): Record;\n hasMore(): boolean;\n fetchMore(): JQueryXHR;\n where(properties: any, first?: boolean): F extends true ? any : any[]\n}\n\nvar STATE = '__STATE__';\nvar FETCH_DATA = 'FETCH_DATA';\nvar PAGINATION_DATA = 'PAGINATION_DATA';\nvar DEFAULT_PARAMS = 'DEFAULT_PARAMS';\nvar LINK_BY_HEADER = 'LINK_BY_HEADER';\nvar XHR = 'XHR';\n\n// ################################################\n// # Source: https://gist.github.com/deiu/9335803\n// ################################################\n\n// unquote string (utility)\nfunction unquote(value) {\n if (value.charAt(0) === '\"' && value.charAt(value.length - 1) === '\"') {\n return value.substring(1, value.length - 1);\n }\n return value;\n}\n\n/*\nparse a Link header\nLink:; rel=meta\nvar r = parseLinkHeader(xhr.getResponseHeader('Link');\nr['meta']['href'] outputs https://example.org/.meta\n*/\nfunction parseLinkHeader(header): Record {\n /* eslint max-statements: 0 */\n var linkexp = /<[^>]*>\\s*(\\s*;\\s*[^()<>@,;:\"/[\\]?={} \\t]+=(([^()<>@,;:\"/[\\]?={} \\t]+)|(\"[^\"]*\")))*(,|$)/g;\n var paramexp = /[^()<>@,;:\"/[\\]?={} \\t]+=(([^()<>@,;:\"/[\\]?={} \\t]+)|(\"[^\"]*\"))/g;\n\n var matches = header.match(linkexp);\n var rels = {};\n for (var i = 0; i < matches.length; i++) {\n var split = matches[i].split('>');\n var href = split[0].substring(1);\n var link: Link = { href: undefined, rel: undefined };\n link.href = href;\n var s = split[1].match(paramexp);\n for (var j = 0; j < s.length; j++) {\n var paramsplit = s[j].split('=');\n var name = paramsplit[0];\n link[name] = unquote(paramsplit[1]);\n }\n\n if (link.rel !== undefined) {\n rels[link.rel] = link;\n }\n }\n\n return rels;\n}\n\n/*\n * Sets the next page URL on the collection from link headers\n * See: http://www.rfc-editor.org/rfc/rfc5988.txt\n *\n * This method is looking for a link header with `rel=\"next\"`\n * An set's it as the next page's URL.\n *\n * If it doesn't find a next page, and current page is set by a link header\n * it assumes we are at the last page and deletes the current `next`\n */\nfunction setLinkHeadersPagination(collection, xhr) {\n try {\n var links = parseLinkHeader(xhr.getResponseHeader('link'));\n collection[STATE].set(LINK_BY_HEADER, true);\n collection.setPagination(links['next'].href);\n } catch (e) {\n if (collection[STATE].get(LINK_BY_HEADER)) {\n collection.setPagination(null);\n }\n }\n}\n\nfunction parseQuery(url) {\n var params = {};\n var rawQueryStr = url && url.split('?')[1];\n var queryString = rawQueryStr && decodeURIComponent(rawQueryStr.split('#')[0]).replace(/\\+/g, ' ');\n var props = queryString ? queryString.split('&') : [];\n for (var i = 0; i < props.length; i++) {\n var parts = props[i].split('=');\n params[parts.shift()] = parts.join('=');\n }\n return params;\n}\n\n// ################################################\n// # /Source\n// ################################################\n//\n\nconst collectionProps = /** @lends src/framework/Collection.prototype */ {\n\n /**\n * Default fetch parameters\n * @type {Object|Function}\n */\n params: {},\n\n preinitialize(models, options) {\n const state = new Backbone.Model();\n const defaultParams = _.defaults(\n options && options.params || {},\n _.result(this, 'params') || {}\n );\n state.set(DEFAULT_PARAMS, defaultParams);\n\n this[STATE] = state;\n\n // Adds support for child class to convert to ES6 Class.\n // After conversion, `this.model` has to be a pure function to return Model Class.\n // The changes below is trying to distinguish the ambiguity between a Class and normal function,\n // as both are JavaScript function essentially.\n\n // There are three ways to define class for `this.model`\n // 1. Object properties: `model: BaseModel.extend({..})`\n // 2. Function constructor:\n // See example from\n // - appversions/src/models/CustomType.js\n // - appversions/src/models/EnumType.js\n // - appversions/src/models/SignOnMode.js\n // - authn-factors/src/models/Feature.js\n // - shared/src/models/SamlAttribute.js\n // 3. Function that returns a class.\n // model: function() { return BaseModel.extend({..}); }\n //\n // option 1 and 2 exists in code base today\n // option 3 is introduced to support child class to convert to ES6 class.\n // TODO: think of remove following check\n // The reason for `this.model !== Backbone.Model` is because `this.model` is default to `Backbone.Model`\n // set at Backbone.Collection.\n if (_.isFunction(this.model) && this.model.length === 0 && this.model.isCourageModel !== true) {\n this.model = _.result(this, 'model');\n }\n Backbone.Collection.prototype.preinitialize.apply(this, arguments);\n },\n\n /**\n * See [Backbone Collection.sync](http://backbonejs.org/#Collection-sync).\n */\n sync: function (method, collection, options) {\n var self = this;\n var success = options.success;\n options.success = function (resp, status, xhr) {\n // its important to set the pagination data *before* we call the success callback\n // because we want the pagination data to be ready when the collection triggers the `sync` event\n setLinkHeadersPagination(self, xhr);\n success.apply(null, arguments);\n };\n return Backbone.Collection.prototype.sync.call(this, method, collection, options);\n },\n\n /**\n * See [Backbone Collection.fetch](http://backbonejs.org/#Collection-fetch).\n */\n fetch: function (options: FrameworkCollectionFetchOptions | undefined) {\n options || (options = {});\n var state = this[STATE];\n var xhr = state.get(XHR);\n\n options.data = _.extend({}, state.get(DEFAULT_PARAMS), options.data || {});\n options.fromFetch = true;\n\n state.set(FETCH_DATA, options.data);\n if (xhr && xhr.abort && options.abort !== false) {\n xhr.abort();\n }\n xhr = Backbone.Collection.prototype.fetch.call(this, options);\n state.set(XHR, xhr);\n return xhr;\n },\n\n /**\n * Set pagination data to get to the next page\n * @param {Mixed} params\n * @param {Object} [options]\n * @param {Boolean} [options.fromFetch] should we include data from the previous fetch call in this object\n * @example\n * collection.setPagination({q: 'foo', page: '2'}); //=> {q: 'foo', page: '2'}\n *\n * collection.setPagination('/path/to/resource?q=baz&page=4'); //=> {q: 'baz', page: '4'}\n *\n * collection.setPagination('/path/to/resource'); //=> {}\n *\n * collection.fetch({data: {q: 'foo'}});\n * collection.setPagination({page: 2}, {fromFetch: true}); //=> {q: 'foo', page: 2}\n *\n * any \"falsy\" value resets pagination\n * collection.setPagination(); //=> {}\n * collection.setPagination(null); //=> {}\n * collection.setPagination(false); //=> {}\n * collection.setPagination(''); //=> {}\n * collection.setPagination(0); //=> {}\n * @protected\n */\n setPagination: function (params, options) {\n /* eslint complexity: [2, 8] */\n if (_.isString(params) && params) {\n params = parseQuery(params);\n }\n if (!_.isObject(params) || _.isArray(params) || !_.size(params)) {\n params = null;\n } else if (options && options.fromFetch) {\n params = _.extend({}, this.getFetchData(), params);\n }\n this[STATE].set(PAGINATION_DATA, params);\n },\n\n /**\n * Returns the `data` parameters applied in th most recent `fetch` call\n * It will include parameters set by {@link #params} and optios.params passed to the constructor\n * @return {Object}\n * @protected\n */\n getFetchData: function () {\n return this[STATE].get(FETCH_DATA) || {};\n },\n\n /**\n * Data object for constructing a request to fetch the next page\n * @return {Object}\n * @protected\n */\n getPaginationData: function () {\n return this[STATE].get(PAGINATION_DATA) || {};\n },\n\n /**\n * Does this collection have more data on the server (e.g is there a next \"page\")\n * @return {Boolean}\n */\n hasMore: function () {\n return _.size(this.getPaginationData()) > 0;\n },\n\n /**\n * Get the next page from the server\n * @return {Object} xhr returned by {@link #fetch}\n */\n fetchMore: function () {\n if (!this.hasMore()) {\n throw new Error('Invalid Request');\n }\n return this.fetch({\n data: this.getPaginationData(), add: true, remove: false, update: true\n });\n },\n\n /**\n * See [Backbone Collection.reset](http://backbonejs.org/#Collection-reset).\n */\n reset: function (models, options: FrameworkCollectionFetchOptions) {\n options || (options = {});\n // only reset the pagination when reset is being called explicitly.\n // this is to avoid link headers pagination being overriden and reset when\n // fetching the collection using `collection.fetch({reset: true})`\n if (!options.fromFetch) {\n this.setPagination(null);\n }\n return Backbone.Collection.prototype.reset.apply(this, arguments);\n },\n\n // we want \"where\" to be able to search through derived properties as well\n where: function (attrs, first) {\n if (_.isEmpty(attrs)) {\n return first ? void 0 : [];\n }\n return this[first ? 'find' : 'filter'](function (model) {\n for (var key in attrs) {\n if (attrs[key] !== model.get(key)) {\n return false;\n }\n }\n return true;\n });\n },\n\n /**\n * See [Backbone Collection.create](http://backbonejs.org/#Collection-create).\n */\n create: function (model, options) {\n options || (options = {});\n if (!_.result(model, 'urlRoot')) {\n options.url = _.result(this, 'url');\n }\n return Backbone.Collection.prototype.create.call(this, model, options);\n }\n\n};\n\n/**\n *\n * Archer.Collection is a standard [Backbone.Collection](http://backbonejs.org/#Collection) with pre-set `data`\n * parameters and built in pagination - works with [http link headers](https://tools.ietf.org/html/rfc5988)\n * out of the box:\n *\n * @class src/framework/Collection\n * @extends external:Backbone.Collection\n * @example\n * var Users = Archer.Collection.extend({\n * url: '/api/v1/users'\n * params: {expand: true}\n * });\n * var users = new Users(null, {params: {type: 'new'}}),\n * $button = this.$('a.fetch-more');\n *\n * $button.click(function () {\n * users.fetchMore();\n * });\n *\n * this.listenTo(users, 'sync', function () {\n * $button.toggle(users.hasMore());\n * });\n *\n * collection.fetch(); //=> '/api/v1/users?expand=true&type=new'\n */\n\nconst Collection = Backbone.Collection.extend(collectionProps) as typeof FrameworkCollectionClass;\n/**\n * It's used for distinguishing the ambiguity from _.isFunction()\n * which returns True for both a JavaScript Class constructor function\n * and normal function. With this flag, we can tell a function is actually\n * a Collection Class.\n * This flag is added in order to support the type of a parameter can be\n * either a Class or pure function that returns a Class.\n */\nCollection.isCourageCollection = true;\n\nexport default Collection;\n","/* eslint-disable max-statements */\nimport View from './View';\nimport _ from '../util/underscore-wrapper';\n\n/**\n * Archer.ListView is a {@link src/framework/View} that operates on a\n * collection and builds a list of \"things\" of the same type.\n *\n * Automagically adds, removes and sorts upon standard collection events.\n *\n * Listen to collection events so the ListView will do the right thing when\n * a model is added or the collection is reset or sorted.\n *\n * @class src/framework/ListView\n * @extends src/framework/View\n * @param {Object} options options hash\n * @param {Object} options.collection The collection which this view operates on\n * @example\n * var UserList = Archer.ListView.extend({\n * tagName: 'ul',\n * item: '
  • {{fname}} {{lname}}
  • '\n * });\n *\n * var users = new Archer.Collection([\n * {fname: 'John', lname: 'Doe'},\n * {fname: 'Jane', lname: 'Doe'}\n * ]);\n *\n * var userList = new UserList({collection: users}).render();\n * userList.el; //=> \"
    • John Doe
    • Jane Doe
    \"\n *\n * users.push({fname: 'Jim', lname: 'Doe'});\n * userList.el; //=> \"
    • John Doe
    • Jane Doe
    • Jim Doe
    \"\n *\n * users.first().destroy();\n * userList.el; //=> \"
    • Jane Doe
    • Jim Doe
    \"\n */\nexport default View.extend(/** @lends src/framework/ListView.prototype */ {\n\n constructor: function () {\n View.apply(this, arguments);\n if (!this.collection) {\n throw new Error('Missing collection');\n }\n this.listenTo(this.collection, 'reset sort', this.reset);\n this.listenTo(this.collection, 'add', this.addItem);\n\n if (this.fetchCollection) {\n this.collection.fetch();\n } else {\n this.collection.each(this.addItem, this);\n }\n },\n\n /**\n * The view/template we will use to render each model in the collection.\n * @type {String|module:Okta.View}\n */\n item: null,\n\n /**\n * A selector in the local template where to append each item\n * @type {String}\n */\n itemSelector: null,\n\n /**\n * Empty the list and re-add everything from the collection.\n * Usefull for handling `collection.reset()` or for handling the initial load\n * @protected\n */\n reset: function () {\n this.removeChildren();\n this.collection.each((model, index) => {\n this.addItem(model, index);\n });\n return this;\n },\n\n /**\n * Add an item view to the list that will represent one model from the collection\n *\n * Listen to the model so when it is destoyed or removed from the collection\n * this item will remove itself from the list\n *\n * @param {Backbone.Model} model The model this row operates on\n * @protected\n */\n addItem: function (model) {\n var view = this.add(this.item, this.itemSelector, { options: { model: model } }).last();\n if (this.state && this.state.get('trackItemAdded')) {\n this.state.trigger('itemAdded', view);\n }\n view.listenTo(model, 'destroy remove', view.remove);\n return this;\n },\n\n addShowMore: _.noop\n\n});\n","import _ from '../util/underscore-wrapper';\nimport Backbone from 'backbone';\nimport Logger from '../util/Logger';\n\nexport interface ValidationMessage {\n message: string;\n passed: boolean;\n}\nexport interface ModelPropertySchema {\n name?: string;\n type?: string;\n required?: boolean;\n value?: any;\n validate?: (value: any) => any;\n values?: any[];\n minLength?: number;\n maxLength?: number;\n\n // only for type = \"array\"\n uniqueItems?: boolean;\n items?: ModelProperty;\n maxItems?: number;\n minItems?: number;\n\n // dependent properties\n deps?: string[];\n fn?: (...values) => any;\n cache?: boolean;\n}\n\nexport function isModelPropertySchema(obj: any): obj is ModelPropertySchema {\n return obj && obj.type || obj.deps;\n}\n\nexport type ModelProperty = ModelPropertySchema\n | string\n | [string, boolean]\n | [string, boolean, any?];\n\nexport interface ModelSchema {\n computedProperties?: Record;\n props?: Record;\n derived?: Record;\n local?: Record;\n}\n\nexport declare class FrameworkModelClass extends Backbone.Model {\n static isCourageModel: true;\n\n static ERROR_BLANK: 'model.validation.field.blank';\n\n static ERROR_WRONG_TYPE: 'model.validation.field.wrong.type';\n\n static ERROR_NOT_ALLOWED: 'model.validation.field.value.not.allowed';\n\n static ERROR_INVALID: 'model.validation.field.invalid';\n\n static ERROR_IARRAY_UNIQUE: 'model.validation.field.array.unique';\n\n static ERROR_INVALID_FORMAT_EMAIL: 'model.validation.field.invalid.format.email';\n\n static ERROR_INVALID_FORMAT_URI: 'model.validation.field.invalid.format.uri';\n\n static ERROR_INVALID_FORMAT_IPV4: 'model.validation.field.invalid.format.ipv4';\n\n static ERROR_INVALID_FORMAT_HOSTNAME: 'model.validation.field.invalid.format.hostname';\n\n static ERROR_STRING_STRING_MIN_LENGTH: 'model.validation.field.string.minLength';\n\n static ERROR_STRING_STRING_MAX_LENGTH: 'model.validation.field.string.maxLength';\n\n options: Record;\n \n computedProperties?: Record;\n\n props?: Record;\n\n derived?: Record;\n\n local?: Record;\n\n validate(); //FIXME: shall be able to reuse Backbone.Model.validate\n validateField(key);\n allows(key);\n getPropertySchema(propName): ModelPropertySchema | null;\n reset(options);\n isSynced(): boolean;\n flat?: boolean;\n\n _validateSchema();\n __getDerivedValue(name);\n}\n\n/**\n * Archer.Model is a standard [Backbone.Model](http://backbonejs.org/#Model) with a few additions:\n *\n * - {@link src/framework/Model#derived Derived properties}\n * - {@link src/framework/Model#props Built in schema validation}\n * - {@link src/framework/Model#local Private properties (with schema validation)}\n * - {@link src/framework/Model#flat Flattening of nested objects}\n *\n * Both derived and private properties are filtered out when sending the data to the server.\n *\n * See [Backbone.Model](http://backbonejs.org/#Model-constructor).\n *\n * @class src/framework/Model\n * @extends external:Backbone.Model\n * @param {Object} [attributes] - Initial model attributes (data)\n * @param {Object} [options] - Options hash\n * @example\n * var Person = Archer.Model.extend({\n * props: {\n * 'fname': 'string',\n * 'lname': 'string'\n * },\n * local: {\n * isLoggedIn: 'boolean'\n * },\n * derived: {\n * name: {\n * deps: ['fname', 'lname'],\n * fn: function (fname, lname) {\n * return fname + ' ' + lname;\n * }\n * }\n * }\n * });\n * var model = new Person({fname: 'Joe', lname: 'Doe'});\n * model.get('name'); //=> \"Joe Doe\"\n * model.toJSON(); //=> {fname: 'Joe', lname: 'Doe'}\n *\n * model.set('isLoggedIn', true);\n * model.get('isLoggedIn'); //=> true\n * model.toJSON(); //=> {fname: 'Joe', lname: 'Doe'}\n */\nlet Model: typeof FrameworkModelClass;\n\nconst statics = {\n ERROR_BLANK: 'model.validation.field.blank',\n ERROR_WRONG_TYPE: 'model.validation.field.wrong.type',\n ERROR_NOT_ALLOWED: 'model.validation.field.value.not.allowed',\n ERROR_INVALID: 'model.validation.field.invalid',\n ERROR_IARRAY_UNIQUE: 'model.validation.field.array.unique',\n ERROR_INVALID_FORMAT_EMAIL: 'model.validation.field.invalid.format.email',\n ERROR_INVALID_FORMAT_URI: 'model.validation.field.invalid.format.uri',\n ERROR_INVALID_FORMAT_IPV4: 'model.validation.field.invalid.format.ipv4',\n ERROR_INVALID_FORMAT_HOSTNAME: 'model.validation.field.invalid.format.hostname',\n ERROR_STRING_STRING_MIN_LENGTH: 'model.validation.field.string.minLength',\n ERROR_STRING_STRING_MAX_LENGTH: 'model.validation.field.string.maxLength'\n};\n\nfunction flatten(value, objectTypeFields, key?, target?) {\n var filter = _.contains(objectTypeFields, key);\n target || (target = {});\n if (!filter && _.isObject(value) && !_.isArray(value) && !_.isFunction(value)) {\n _.each(value, function (val, i) {\n flatten(val, objectTypeFields, key ? (key + '.' + i) : i, target);\n });\n }\n // Case where target is an empty object. Guard against returning {undefined: undefined}.\n else if (key !== undefined) {\n target[key] = value;\n }\n return target;\n}\n\nfunction unflatten(data) {\n _.each(data, function (value, key, data) {\n if (key.indexOf('.') === -1) {\n return;\n }\n var part;\n var ref = data;\n var parts = key.split('.');\n while ((part = parts.shift()) !== undefined) {\n if (!ref[part]) {\n ref[part] = parts.length ? {} : value;\n }\n ref = ref[part];\n }\n delete data[key];\n });\n return data;\n}\n\nfunction createMessage(field, msg: string | ValidationMessage[]) {\n var obj = {};\n obj[field.name] = msg;\n return obj;\n}\n\nfunction normalizeSchemaDef(field: ModelProperty, name): ModelPropertySchema {\n var target: ModelPropertySchema;\n if (_.isString(field)) {\n target = {\n type: field\n };\n } else if (_.isArray(field)) {\n target = {\n type: field[0],\n required: field[1],\n value: field[2]\n };\n } else {\n target = _.clone(field);\n }\n _.defaults(target, { required: false, name: name });\n return target;\n}\n\nfunction capitalize(string) {\n return string.toLowerCase().replace(/\\b[a-z]/g, function (letter) {\n return letter.toUpperCase();\n });\n}\n\nfunction _validateRegex(value, pattern, error) {\n if (!pattern.test(value)) {\n return error;\n }\n}\n\nvar StringFormatValidators = {\n /*eslint max-len: 0 */\n email: function (value) {\n // Taken from http://emailregex.com/ on 2017-03-06.\n var pattern = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return _validateRegex(value, pattern, Model.ERROR_INVALID_FORMAT_EMAIL);\n },\n uri: function (value) {\n // source: https://mathiasbynens.be/demo/url-regex\n var pattern = /^(?:(?:https?|ftp):\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))\\.?)(?::\\d{2,5})?(?:[/?#]\\S*)?$/i;\n return _validateRegex(value, pattern, Model.ERROR_INVALID_FORMAT_URI);\n },\n ipv4: function (value) {\n // source: https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html\n var pattern = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\n return _validateRegex(value, pattern, Model.ERROR_INVALID_FORMAT_IPV4);\n },\n hostname: function (value) {\n // source: http://www.regextester.com/23\n var pattern = /^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9-]*[A-Za-z0-9])$/;\n return _validateRegex(value, pattern, Model.ERROR_INVALID_FORMAT_HOSTNAME);\n }\n};\n\nfunction validateStringFormat(field, value) {\n var validator = StringFormatValidators[field.format];\n if (field.format && !validator) {\n throw new TypeError(field.format + ' is not a supported string format');\n }\n return validator && validator(value);\n}\n\nfunction validateString(field: ModelPropertySchema, value) {\n var createMessageWith = _.partial(createMessage, field);\n var invalidFormat = validateStringFormat(field, value);\n if (invalidFormat) {\n return createMessageWith(invalidFormat);\n }\n if (value && field.minLength && value.length < field.minLength) {\n return createMessageWith(Model.ERROR_STRING_STRING_MIN_LENGTH);\n }\n if (value && field.maxLength && value.length > field.maxLength) {\n return createMessageWith(Model.ERROR_STRING_STRING_MAX_LENGTH);\n }\n}\n\nfunction validateField(field: ModelPropertySchema, value) {\n /* eslint complexity: [2, 25], max-statements: [2, 30] */\n var createMessageWith = _.partial(createMessage, field);\n var isDefined = !_.isUndefined(value) && !_.isNull(value);\n var checkType;\n var errorMessage;\n\n // If using an array validator, perform the validation\n if (Array.isArray(field.validate)) {\n const output: ValidationMessage[] = [];\n let foundError = false;\n let result;\n field.validate.forEach((item) => {\n if (!value) {\n result = false;\n } else {\n switch (item.type.toLowerCase()) {\n case 'regex':\n result = (new RegExp(item.value.pattern, item.value.flags || '')).test(value);\n break;\n default:\n result = false;\n }\n }\n // Append the result.\n foundError = foundError || !result;\n output.push({\n // eslint-disable-next-line no-prototype-builtins\n message: item.hasOwnProperty('message') ? item.message : '',\n passed: result\n });\n });\n if (foundError) {\n return createMessageWith(output);\n }\n return;\n }\n\n // check required fields\n if (field.required && (!isDefined || _.isNull(value) || value === '')) {\n return createMessageWith(Model.ERROR_BLANK);\n }\n // check type\n checkType = _['is' + capitalize(field.type)];\n if (isDefined && field.type !== 'any' && (!_.isFunction(checkType) || !checkType(value))) {\n return createMessageWith(Model.ERROR_WRONG_TYPE);\n }\n // validate string format\n if (value && field.type === 'string') {\n var error = validateString(field, value);\n if (error) {\n return error;\n }\n }\n // check pre set values (enum)\n if (isDefined && field.values && !_.contains(field.values, value)) {\n return createMessageWith(Model.ERROR_NOT_ALLOWED);\n }\n // check validate method\n if (_.isFunction(field.validate)) {\n var result = field.validate(value);\n if (_.isString(result) && result) {\n return createMessageWith(result);\n } else if (result === false) {\n return createMessageWith(Model.ERROR_INVALID);\n }\n }\n // check array items\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n if (isDefined && field.type === 'array' && (errorMessage = validateArrayField(field, value))) {\n return createMessageWith(errorMessage);\n }\n}\n\nfunction validateArrayField(field: ModelPropertySchema, arr) {\n if (field.minItems && arr.length < field.minItems) {\n return 'model.validation.field.array.minItems';\n } else if (field.maxItems && arr.length > field.maxItems) {\n return 'model.validation.field.array.maxItems';\n } else if (field.uniqueItems && arr.length > _.uniq(arr).length) {\n return Model.ERROR_IARRAY_UNIQUE;\n } else if (field.items) {\n /* eslint max-depth: [2, 3] */\n var arrayField = normalizeSchemaDef(field.items, 'placeholder');\n for (var i = 0; i < arr.length; i++) {\n var value = arr[i];\n var error = validateField(arrayField, value);\n if (error) {\n return error['placeholder'];\n }\n }\n }\n}\n\nconst props = /** @lends src/framework/Model.prototype */ {\n\n /**\n * Pass props as an object to extend, describing the observable properties of your model. The props\n * properties should not be set on an instance, as this won't define new properties, they should only be passed to\n * extend.\n * Properties can be defined in three different ways:\n *\n * - As a string with the expected dataType. One of string, number, boolean, array, object, date, or any.\n * Eg: `name: 'string'`.\n * - An array of `[dataType, required, default]`\n * - An object `{type: 'string', format: '', required: true, value: '', values: [], validate: function() {}`\n * - `value` will be the value that the property will be set to if it is undefined, either by not being set during\n * initialization, or by being explicitly set to undefined.\n * - `format` is a json-schame derived string format. Supported formats are: `email`, `uri`, `hostname` and `ipv4`.\n * - If `required` is true, one of two things will happen. If a default is set for the property, the property will\n * start with that value. If a default is not set for the property, validation will fail\n * - If `values` array is passed, then you'll be able to change a property to one of those values only.\n * - If `validate` is defined, it should return false or a custom message string when the validation fails.\n * - If the type is defined as `array`, the array elements could be defined by `minItems` (Number),\n * `uniqueItems` (Boolean) and `items` (a field definition such as this one that will validate each array member)\n * To the `validate` method\n * - Trying to set a property to an invalid type will raise an exception.\n *\n * @type {Mixed|Function}\n * @example\n * var Person = Model.extend({\n * props: {\n * name: 'string',\n * age: 'number',\n * paying: ['boolean', true, false], //required attribute, defaulted to false\n * type: {\n * type: 'string',\n * values: ['regular-hero', 'super-hero', 'mega-hero']\n * },\n * likes: {\n * type: 'string',\n * validate: function (value) {\n * return /^[\\w]+ing$/.test(value)\n * }\n * }\n * }\n * });\n */\n props: {},\n\n /**\n * Derived properties (also known as computed properties) are properties of the model that depend on the\n * other (props, local or even derived properties to determine their value. Best demonstrated with an example:\n *\n * Each derived property, is defined as an object with the current properties:\n *\n * - `deps` {Array} - An array of property names which the derived property depends on.\n * - `fn` {Function} - A function which returns the value of the computed property. It is called in the context of\n * the current object, so that this is set correctly.\n * - `cache` {Boolean} - - Whether to cache the property. Uncached properties are computed every time they are\n * accessed. Useful if it depends on the current time for example. Defaults to `true`.\n *\n * Derived properties are retrieved and fire change events just like any other property. They cannot be set\n * directly.\n * @type {Object|Function}\n * @example\n * var Person = Model.extend({\n * props: {\n * firstName: 'string',\n * lastName: 'string'\n * },\n * derived: {\n * fullName: {\n * deps: ['firstName', 'lastName'],\n * fn: function (firstName, lastName) {\n * return firstName + ' ' + lastName;\n * }\n * }\n * }\n * });\n *\n * var person = new Person({ firstName: 'Phil', lastName: 'Roberts' })\n * console.log(person.get('fullName')) //=> \"Phil Roberts\"\n *\n * person.set('firstName', 'Bob');\n * console.log(person.get('fullName')) //=> \"Bob Roberts\"\n */\n derived: {},\n\n /**\n * local properties are defined and work in exactly the same way as {@link src/framework/Model#props|props}, but generally only exist for\n * the lifetime of the page.\n * They would not typically be persisted to the server, and are not returned by calls to {@link src/framework/Model#toJSON|toJSON}.\n *\n * @type {Object|Function}\n * @example\n * var Person = Model.extend({\n * props: {\n * name: 'string',\n * },\n * local: {\n * isLoggedIn: 'boolean'\n * }\n * );\n */\n local: {},\n\n /**\n * Flatten the payload into dot notation string keys:\n *\n * @type {Boolean|Function}\n * @example\n * var Person = Model.extend({\n * props: {\n * 'profile.fname': 'string',\n * 'profile.lname': 'string',\n * 'profile.languages': 'object'\n * },\n * flat: true\n * });\n * var person = new Person({'profile': {\n * 'fname': 'John',\n * 'lname': 'Doe',\n * 'languages': {name: \"English\", value: \"EN\"}\n * }}, {parse: true});\n * person.get('profile'); //=> undefined\n * person.get('profile.fname'); //=> 'John'\n * person.get('profile.lname'); //=> 'Doe'\n * person.get('profile.languages'); //=> {name: \"English\", value: \"EN\"}\n * person.get('profile.languages.name'); //=> undefined\n * person.toJSON(); //=> {'profile': {'fname': 'John'} }\n */\n flat: true,\n\n /**\n * @deprecated\n * @alias Backbone.Model#defaults\n */\n defaults: {},\n\n // FIXME: preinitialize takes parameter `attributes` and `options`, which inherit from constructor.\n preinitialize(options, ...rest) {\n this.options = options || {};\n var schema: ModelSchema = this['__schema__'] = {};\n var objectTypeFields: string[] = [];\n\n schema.computedProperties = {};\n\n schema.props = _.clone(_.result(this, 'props') || {});\n schema.derived = _.clone(_.result(this, 'derived') || {});\n schema.local = _.clone(_.result(this, 'local') || {});\n\n var defaults: Record = {};\n _.each(_.extend({}, schema.props, schema.local), function (options, name) {\n var schemaDef = normalizeSchemaDef(options, name);\n if (!_.isUndefined(schemaDef.value)) {\n defaults[name] = schemaDef.value;\n }\n if (schemaDef.type === 'object') {\n objectTypeFields.push(name);\n }\n }, this);\n if (_.size(defaults)) {\n var localDefaults = _.result(this, 'defaults');\n this.defaults = function () {\n return _.defaults({}, defaults, localDefaults);\n };\n }\n\n // override `validate`\n this.validate = _.wrap(this.validate, function (validate) {\n var args = _.rest(arguments);\n var res = _.extend(this._validateSchema.apply(this, args), validate.apply(this, args));\n return _.size(res) && res || undefined;\n });\n\n // override `parse`\n this.parse = _.wrap(this.parse, function (parse) {\n var target = parse.apply(this, _.rest(arguments));\n if (_.result(this, 'flat')) {\n target = flatten(target, objectTypeFields);\n }\n return target;\n });\n\n Backbone.Model.prototype.preinitialize.call(this, options, ...rest);\n },\n // FIXME:\n // constructor takes parameter `attributes` and `options`.\n constructor: function () {\n Backbone.Model.apply(this, arguments);\n\n var schema: ModelSchema = this['__schema__'];\n _.each(schema.derived!, function (options: ModelProperty, name) {\n schema.computedProperties![name] = this.__getDerivedValue(name); // set initial value;\n var deps = isModelPropertySchema(options) ? options.deps || [] : [];\n if (deps.length) {\n this.on('cache:clear change:' + deps.join(' change:'), function () {\n var value = this.__getDerivedValue(name);\n if (value !== schema.computedProperties![name]) {\n schema.computedProperties![name] = value;\n this.trigger('change:' + name, this, value);\n }\n }, this);\n }\n }, this);\n\n this.on('sync', function () {\n this.__syncedData = this.toJSON();\n }, this);\n },\n\n validate: function () { },\n\n /**\n * Check if the schema settings allow this field to exist in the model\n * @param {String} key\n * @return {Boolean}\n */\n allows: function (key) {\n var schema = this['__schema__'];\n var all = _.extend({}, schema.props, schema.local);\n if (!_.has(all, key)) {\n Logger.warn('Field not defined in schema', key);\n }\n return true;\n },\n\n /**\n * Returns the schema for the specific property\n *\n * @param propName - The name of the property\n * @returns {*} | null\n */\n getPropertySchema: function (propName): ModelPropertySchema | null {\n var schema = this['__schema__'];\n return _.reduce([schema.props, schema.local], function (result, options) {\n return result || normalizeSchemaDef(options[propName], propName);\n }, null);\n },\n\n set: function (key, val) {\n var attrs;\n if (typeof key === 'object') {\n attrs = key;\n } else {\n (attrs = {})[key] = val;\n }\n\n // Don't override a computed properties\n _.each(attrs, function (value, key) {\n if (_.has(this['__schema__'].derived, key)) {\n throw new Error(`overriding derived properties is not supported: ${key}`);\n }\n }, this);\n\n // Schema validation\n var errorFields: string[] = [];\n _.each(attrs, function (value, key) {\n this.allows(key) || errorFields.push(key);\n }, this);\n if (errorFields.length) {\n throw new Error(`field not allowed: ${errorFields.join(', ')}`);\n }\n\n return Backbone.Model.prototype.set.apply(this, arguments);\n },\n\n get: function (attr) {\n var schema = this['__schema__'];\n if (_.has(schema.derived, attr)) {\n if (schema.derived[attr].cache !== false) {\n return schema.computedProperties[attr];\n } else {\n return this.__getDerivedValue(attr);\n }\n }\n return Backbone.Model.prototype.get.apply(this, arguments);\n },\n\n /**\n * Return a shallow copy of the model's attributes for JSON stringification.\n * This can be used for persistence, serialization, or for augmentation before being sent to the server.\n * The name of this method is a bit confusing, as it doesn't actually return a JSON string —\n * but I'm afraid that it's the way that the JavaScript API for JSON.stringify works.\n *\n * See [Backbone.Model.toJSON](http://backbonejs.org/#Model-toJSON)\n *\n * @param {Object} options\n * @return {Object}\n * @example\n * var artist = new Model({\n * firstName: 'Wassily',\n * lastName: 'Kandinsky'\n * });\n *\n * artist.set({birthday: 'December 16, 1866'});\n * JSON.stringify(artist); //=> {'firstName':'Wassily','lastName':'Kandinsky','birthday':'December 16, 1866'}\n */\n toJSON: function (options) {\n options || (options = {});\n var res = _.clone(Backbone.Model.prototype.toJSON.apply(this, arguments));\n var schema = this['__schema__'];\n\n // cleanup local properties\n if (!options.verbose) {\n res = _.omit(res, _.keys(schema.local));\n } else { // add derived properties\n _.each(schema.derived, function (options, name) {\n res[name] = this.get(name);\n }, this);\n }\n\n if (this.flat) {\n res = unflatten(res);\n }\n\n return res;\n },\n\n /**\n * Removes all attributes from the model, including the id attribute.\n * Fires a `\"change\"` event unless `silent` is passed as an option.\n * Sets the default values to the model\n * @param {Object} [options]\n */\n reset: function (options) {\n this.clear(options);\n this.set(_.result(this, 'defaults'), options);\n },\n\n /**\n * Is the data on the model has local modifications since the last sync event?\n * @return {Boolean} is the model in sync with the server\n */\n isSynced: function () {\n return _.isEqual(this.__syncedData, this.toJSON());\n },\n\n /**\n * validate a specific field in the model.\n * @param {String} key\n * @return {Object} returns `{fieldName: errorMessage}` if invalid, otherwise undefined.\n * @readonly\n */\n validateField: function (key) {\n var schema = key && this.getPropertySchema(key);\n return schema && validateField(schema, this.get(key));\n },\n\n /**\n * Runs local schema validation. Invoked internally by {@link src/framework/Model#validate|validate}.\n * @return {Object}\n * @protected\n */\n _validateSchema: function () {\n var schema = this['__schema__'];\n return _.reduce(_.extend({}, schema.props, schema.local), function (memo, options, name) {\n return _.extend(memo, this.validateField(name) || {});\n }, {}, this);\n },\n\n __getDerivedValue: function (name) {\n var options = this['__schema__'].derived[name];\n if (_.isString(options)) {\n var key = options;\n options = {\n deps: [key],\n fn: function () {\n return this.get(key);\n }\n };\n }\n var deps = options.deps || [];\n return options.fn.apply(this, _.map(deps, this.get, this));\n }\n\n};\n\nModel = Backbone.Model.extend(props, statics) as typeof FrameworkModelClass;\n\n/**\n * It's used for distinguishing the ambiguity from _.isFunction()\n * which returns True for both a JavaScript Class constructor function\n * and normal function. With this flag, we can tell a function is actually\n * a Model Class.\n * This flag is added in order to support the type of a parameter can be\n * either a Class or pure function that returns a Class.\n */\nModel.isCourageModel = true;\n\nexport default Model;\n","import _ from '../util/underscore-wrapper';\nimport Backbone, { _Result } from 'backbone';\nimport { SettingsModelClass } from '../util/SettingsModel';\nimport { StateMachineClass } from '../util/StateMachine';\n\ndeclare class BackboneViewExt extends Backbone.EventsMixin implements Backbone.Events {\n static extend(properties: any, classProperties?: any): any;\n\n /**\n * For use with views as ES classes. If you define a preinitialize\n * method, it will be invoked when the view is first created, before any\n * instantiation logic is run.\n * @see https://backbonejs.org/#View-preinitialize\n */\n preinitialize(options?: Backbone.ViewOptions): void;\n\n initialize(options?: Backbone.ViewOptions): void;\n\n /**\n * Events hash or a method returning the events hash that maps events/selectors to methods on your View.\n * For assigning events as object hash, do it like this: this.events = { \"event:selector\": callback, ... };\n * That works only if you set it in the constructor or the initialize method.\n */\n events(): Backbone.EventsHash;\n\n model: Backbone.Model;\n\n collection: Backbone.Collection;\n\n setElement(element: HTMLElement | JQuery): this;\n id?: string;\n\n cid: string;\n\n // changed from Backbone definition\n className(): string;\n\n tagName: string;\n\n el: HTMLElement;\n\n $el: JQuery;\n\n attributes(): Record; // changed from Backbone definition\n\n $(selector: string): JQuery;\n\n render(): this;\n\n remove(): this;\n\n delegateEvents(events?: _Result): this;\n\n delegate(eventName: string, selector: string, listener: Backbone.ViewEventListener): this;\n\n undelegateEvents(): this;\n\n undelegate(eventName: string, selector?: string, listener?: Backbone.ViewEventListener): this;\n}\nexport interface CompiledTemplate {\n (data?: any): string;\n source?: string;\n}\nexport interface FrameworkViewOptions {\n el?: any;\n state?: any;\n settings?: any;\n model?: any;\n collection?: any;\n selector?: string;\n bubble?: boolean;\n prepend?: boolean;\n options?: Record; // extra options\n [key: string]: any; // allows anything to be an option. TODO: can we enumerate all possible options?\n}\n\nexport type ChildDefinition = [FrameworkViewClass, string?, Record?];\nexport declare class FrameworkViewClass extends BackboneViewExt {\n static isCourageView: true;\n\n constructor(options: FrameworkViewOptions, ...rest: any[]);\n\n add(template: string, selector?: string): any;\n add(view: any, selector?: string): any;\n add(view: any, options: Record): any;\n add(view, selector, bubble?, prepend?, extraOptions?): any;\n\n options: FrameworkViewOptions;\n\n // usualy it is instance of StateMachine\n // can be Record at Controller's instance\n state: StateMachineClass | Record;\n\n settings: SettingsModelClass;\n\n stateEvents?: Record;\n\n modelEvents?: Record;\n\n children: Backbone._Result;\n\n autoRender: boolean;\n\n template: string | CompiledTemplate | null;\n rendered(): boolean;\n preRender();\n postRender();\n getTemplateData(): Record\n compileTemplate(template: string): CompiledTemplate;\n renderTemplate(template: string | CompiledTemplate);\n removeChildren(): this;\n unregister(view);\n getChildren(): this[];\n at(index: number): this;\n invoke(methodName: string): this;\n\n __original_initialize__: (options: FrameworkViewOptions) => void;\n\n // mixins from underscore\n // TODO: any better way to mix classes?\n\n // FIXME: refine those types.\n each(fn);\n map(fn);\n reduce(fn, initValue);\n reduceRight(fn, initValue);\n find();\n filter();\n reject();\n every();\n some();\n contains();\n toArray();\n size();\n first();\n initial();\n rest();\n last();\n without();\n indexOf();\n shuffle();\n lastIndexOf();\n isEmpty();\n chain();\n where();\n findWhere();\n}\n\nvar CHILDREN = '__children__';\nvar RENDERED = '__rendered__';\nvar PARENT = '__parent__';\nvar CHILD_DEFINITIONS = '__children_definitions__';\nvar ADD_TO_CONTAINER = '__add_to_container__';\n\nfunction getIndex(container, view) {\n for (var i = 0; i < container[CHILDREN].length; i++) {\n if (view.cid === container[CHILDREN][i].cid) {\n return i;\n }\n }\n}\n\nfunction noop() { }\n\nfunction doRender(view) {\n view[RENDERED] = true;\n\n var html = view.renderTemplate(view.template);\n if (html) {\n view.$el.html(html);\n } else if (view.length) {\n view.$el.empty();\n }\n\n view.each(function (view) {\n view[ADD_TO_CONTAINER]();\n });\n}\n\nfunction subscribeEvents(view) {\n var isEventPropertyRe = /^(?!(?:delegate|undelegate|_))([a-zA-Z0-9]+)(?:Events)$/;\n _.each(_.allKeys(view), function (key) {\n var matchKeys = key.match(isEventPropertyRe);\n if (!matchKeys) {\n return;\n }\n var bindings = _.result(view, key);\n var entity = view.options[matchKeys[1]] || view[matchKeys[1]];\n if (!entity || !_.isObject(bindings) || !_.isFunction(entity.trigger)) {\n return;\n }\n _.each(bindings, function (callback, event) {\n var callbacks = _.isFunction(callback) ? [callback] : _.reduce(callback.split(/\\s+/), (arr: string[], name) => {\n if (_.isFunction(view[name])) {\n arr.push(view[name]);\n }\n return arr;\n }, []);\n _.each(callbacks, function (cb) {\n view.listenTo(entity, event, cb);\n });\n });\n });\n}\n\n/**\n * A View operates on a string template, an token based template, or a model based template, with a few added hooks.\n * It provides a collection of child views, when a child view could be a View or another View.\n * Conceptually, if we were in a file system, the View is a folder, when the concrete child views are files,\n * and the child Views are sub folders.\n *\n * *Technically, when using a View as a container, it could have its own concrete logic,\n * but conceptually we like to keep it separated so a view is either a concrete view or a collection of child views.*\n *\n * In addition to the standard backbone options, we added `settings` and `state` as first class options.\n * it will automatically assign `options` to `this.options` as an instance member.\n *\n * See [Backbone.View](http://backbonejs.org/#View).\n *\n * @class src/framework/View\n * @extends external:Backbone.View\n * @param {Object} [options] options hash\n * @example\n * var DocumentView = Archer.View.extend({\n * template: [\n * '
    ',\n * '
    ',\n * '
    '\n * ].join(''),\n * children: [[HeaderView, 'header'], [ContentView, 'article'], [FooterView, 'footer']]\n * });\n */\nlet View: typeof FrameworkViewClass;\nconst proto = {\n\n /**\n * An object listing events and callback bind to this.{entity}\n * @name *Events\n * @memberof src/framework/View\n * @type {(Object|Function)}\n * @instance\n * @example\n * var FooView = View.extend({\n * modelEvents: {\n * 'change:name': 'render'\n * }\n * })\n * //equivalent to ==>\n * var FooView = View.extend({\n * initialize: function() {\n * this.listenTo(this.model, 'change:name', this.render);\n * }\n * });\n *\n *\n * //Multiple callbacks:\n * var FooView = View.extend({\n * modelEvents: {\n * 'change:name': 'render foo'\n * },\n * foo: function() {}\n * });\n *\n * //Callbacks As Function:\n * var FooView = View.extend({\n * stateEvents: {\n * 'change': function() {\n * }\n * });\n *\n * //Event Configuration As Function\n * var FooView = View.extend({\n * collectionEvents: function() {\n * var events = { 'change:name deleteItem': 'render' };\n * events['changeItem'] = 'spin';\n * events['addItem'] = function() {};\n * return events;\n * }\n * });\n */\n\n preinitialize(this: FrameworkViewClass, options: FrameworkViewOptions) {\n /* eslint max-statements: [2, 17] */\n this.options = options || {};\n _.extend(this, _.pick(this.options, 'state', 'settings'));\n\n // init per-instance children collection\n this[CHILDREN] = [];\n this[RENDERED] = false;\n this[PARENT] = null;\n this[CHILD_DEFINITIONS] = this.children;\n\n // we want to make sure initialize is triggered *after* we append the views from the `this.views` array\n // FIXME:\n // It's actually can be done by override initialize method\n // initialize() { run extra login; super.initialize(); }\n // BUT the problem is child classes would override initialize without invoke super.\n // hence we have to also looking into (refactoring) ALL child classes.\n this.__original_initialize__ = this.initialize;\n this.initialize = noop;\n },\n constructor: function (this: FrameworkViewClass, options: FrameworkViewOptions, ...rest: any[]) {\n Backbone.View.call(this, options);\n\n _.each(_.result(this, CHILD_DEFINITIONS), function (childDefinition) {\n this.add.apply(this, _.isArray(childDefinition) ? childDefinition : [childDefinition]);\n }, this);\n delete this[CHILD_DEFINITIONS];\n\n const autoRender = _.result(this, 'autoRender');\n if (autoRender && this.model) {\n var event = _.isArray(autoRender) ? _.map(autoRender, function (field) {\n return 'change:' + field;\n }).join(' ') : 'change';\n this.listenTo(this.model, event, function () {\n this.render();\n });\n }\n\n this.initialize = this.__original_initialize__;\n this.initialize.call(this, options, ...rest); // initialize in child class may have any number of parameters\n subscribeEvents(this);\n },\n\n /**\n * Unregister view from container\n * Note: this will not remove the view from the dom\n * and will not call the `remove` method on the view\n *\n * @param {src/framework/View} view the view to unregister\n * @private\n */\n unregister: function (this: FrameworkViewClass, view) {\n this.stopListening(view);\n var viewIndex = getIndex(this, view);\n // viewIndex is undefined when the view is not found (may have been removed)\n // check if it is undefined to prevent unexpected thing to happen\n // array.splice(undefined, x) removes the first x element(s) from the array\n // this protects us against issues when calling `remove` on a child view multiple times\n if (_.isNumber(viewIndex)) {\n this[CHILDREN].splice(viewIndex, 1);\n }\n },\n\n /**\n * Should we auto render the view upon model change. Boolean or array of field names to listen to.\n * @type {Boolean|Array}\n * @deprecated Instead, please use modelEvents\n * @example\n * modelEvents: {\n * change:name: 'render'\n * }\n */\n autoRender: false,\n\n /**\n *\n * When the template is an underscore template, the render method will pass the options has to the template\n * And the associated model, if exists, when it will prefer the model over the options in case of a conflict.\n * {@link #render View.render}\n * @type {(String|Function)}\n * @example\n * var View = View.extend({\n * template: '

    {{name}}

    '\n * };\n */\n template: null,\n\n /**\n * A list of child view definitions to be passed to {@link #add this.add()}.\n * Note: these definitions will be added **before** the {@link #constructor initiliaze} method invokes.\n * @type {(Array|Function)}\n * @example\n * var Container = View.extend({\n * template: '

    ',\n * children: [\n * [ContentView, '.content'],\n * [OtherContentView, '.content'],\n * OtherView\n * ]\n * })\n *\n * var Container = View.extend({\n * template: '',\n * children: function () {\n * return [\n * [FormView, '.form-wrap', {options: {model: this.optiosn.otherModel}}]\n * ]\n * }\n * })\n */\n children: [],\n\n /**\n * Add a child view to the container.\n * If the container is already rendered, will also render the view and append it to the DOM.\n * Otherwise will render and append once the container is rendered.\n *\n * *We believe that for the sake of encapsulation, a view should control its own chilren, so we treat this method as\n * protected and even though technically you can call `view.add` externally we strongly discourage it.*\n *\n * @param {(src/framework/View|String)} view A class (or an instance which is discouraged) of a View - or an HTML\n * string/template\n * @param {String} [selector] selector in the view's template on which the view will be added to\n * @param {Object} [options]\n * @param {Boolean} [options.bubble=false] Bubble (proxy) events from this view up the chain\n * @param {Boolean} [options.prepend=false] Prepend the view instend of appending\n * @param {String} [options.selector] Selector in the view's template on which the view will be added to\n * @param {Object} [options.options] Extra options to pass to the child constructor\n * @protected\n * @returns {src/framework/View} - The instance of itself for the sake of chaining\n * @example\n * var Container = View.extend({\n *\n * template: [\n * '

    ',\n * '
    ',\n * ].join(''),\n *\n * initalize: function () {\n *\n * this.add(TitleView, 'h1'); // will be added to

    \n *\n * this.add(ContentView1, 'section'); // will be added to
    \n *\n * this.add(ContentView2, 'section', {prepend: true}); // will be add into
    **before** ContentView1\n *\n * this.add(OtherView, {\n * options: {\n * model: new Model()\n * }\n * }); // will be added **after** the
    element\n *\n * this.add('

    some html

    '); //=> \"

    some html

    \"\n * this.add('

    {{name}}

    '); //=> \"

    John Doe

    \"\n * this.add('{{name}}') //=> \"
    John Doe
    \"\n * this.add('{{name}} w00t') //=> \"
    John Doe w00t
    \"\n * }\n *\n * });\n *\n * var container - new View({name: 'John Doe'});\n */\n add: function (this: FrameworkViewClass, view, selector?, bubble?, prepend?, extraOptions?) {\n /* eslint max-statements: [2, 30], complexity: [2, 12] */\n\n var options: FrameworkViewOptions = {};\n var args = _.toArray(arguments);\n\n // This will throw if a compiled template function is passed accidentally\n if (_.isFunction(view) && (!view.prototype || !view.prototype.render)) {\n throw new Error('Type passed to add() is not a View');\n }\n\n if (_.isObject(selector)) {\n options = selector;\n selector = options.selector;\n bubble = options.bubble;\n prepend = options.prepend;\n extraOptions = options.options;\n } else if (_.isObject(bubble)) {\n options = bubble;\n bubble = options.bubble;\n prepend = options.prepend;\n extraOptions = options.options;\n }\n\n // TODO: This will be deprecated at some point. Views should use precompiled templates\n if (_.isString(view)) {\n view = (function (template) {\n return View.extend({\n constructor: function (this: FrameworkViewClass) {\n try {\n var $el = Backbone.$(template);\n\n if ($el.length !== 1) { throw new Error('invalid Element'); }\n\n var unescapingRexExp = /&(\\w+|#x\\d+);/g;\n var elementUnescapedOuterHTMLLength = $el.prop('outerHTML').replace(unescapingRexExp, ' ').length;\n var templateUnescapedLength = template.replace(unescapingRexExp, ' ').length;\n\n if (elementUnescapedOuterHTMLLength !== templateUnescapedLength) { throw new Error('invalid Element'); }\n\n this.template = $el.html(); // Template string will be compiled by handlebars\n this.el = $el.empty()[0];\n } catch (e) { // not a valid html tag.\n this.template = template;\n }\n View.apply(this, arguments);\n }\n });\n }(view));\n }\n\n if (view.prototype && view.prototype instanceof View) {\n /* eslint new-cap: 0 */\n var viewOptions: FrameworkViewOptions = _.omit(_.extend({}, this.options, extraOptions), 'el');\n args[0] = new view(viewOptions);\n return this.add.apply(this, args);\n }\n\n // prevent dups\n if (_.isNumber(getIndex(this, view))) {\n throw new Error('Duplicate child');\n }\n\n view[PARENT] = this;\n\n // make the view responsible for adding itself to the parent:\n // * register the selector in the closure\n // * register a reference the parent in the closure\n view[ADD_TO_CONTAINER] = (function (selector) {\n return function (this: FrameworkViewClass) {\n if (selector && view[PARENT].$(selector).length !== 1) {\n throw new Error('Invalid selector: ' + selector);\n }\n var $el = selector ? this[PARENT].$(selector) : this[PARENT].$el;\n this.render();\n // we need to delegate events in case\n // the view was added and removed before\n this.delegateEvents();\n\n // this[PARENT].at(index).$el.before(this.el);\n prepend ? $el.prepend(this.el) : $el.append(this.el);\n };\n }).call(view, selector);\n\n // if flag to bubble events is set\n // proxy all child view events\n if (bubble) {\n this.listenTo(view, 'all', function (this: FrameworkViewClass) {\n this.trigger.apply(this, arguments);\n });\n }\n\n // add to the dom if `render` has been called\n if (this.rendered()) {\n view[ADD_TO_CONTAINER]();\n }\n\n // add view to child views collection\n this[CHILDREN].push(view);\n\n return this;\n },\n\n /**\n * Remove all children from container\n */\n removeChildren: function (this: FrameworkViewClass) {\n this.each(function (view: FrameworkViewClass) {\n view.remove();\n });\n return this;\n },\n\n /**\n * Removes a view from the DOM, and calls stopListening to remove any bound events that the view has listenTo'd.\n * Also removes all childern of the view if any, and removes itself from its parent view(s)\n */\n remove: function (this: FrameworkViewClass) {\n this.removeChildren();\n if (this[PARENT]) {\n this[PARENT].unregister(this);\n }\n return Backbone.View.prototype.remove.apply(this, arguments);\n },\n\n /**\n * Compile the template to function you can apply tokens on on render time.\n * Uses the underscore tempalting engine by default\n * @protected\n * @param {String} template\n * @return {Function} a compiled template\n */\n // TODO: This will be deprecated at some point. Views should use precompiled templates\n compileTemplate: function (this: FrameworkViewClass, template) {\n /* eslint @okta/okta-ui/no-specific-methods: 0*/\n return _.template(template, undefined);\n },\n\n /**\n * Render a template with `this.model` and `this.options` as parameters\n * preferring the model over the options.\n *\n * @param {(String|Function)} template The template to build\n * @return {String} An HTML string\n * @protected\n */\n renderTemplate: function (this: FrameworkViewClass, template) {\n if (_.isString(template)) {\n // TODO: This will be deprecated at some point. Views should use precompiled templates\n template = this.compileTemplate(template);\n }\n if (_.isFunction(template)) {\n return template(this.getTemplateData());\n }\n },\n\n /**\n * The data hash passed to the compiled template\n * @return {Object}\n * @protected\n */\n getTemplateData: function (this: FrameworkViewClass) {\n var modelData = this.model && this.model.toJSON({ verbose: true }) || {};\n var options = _.omit(this.options, ['state', 'settings', 'model', 'collection']);\n return _.defaults({}, modelData, options);\n },\n\n /**\n * Renders the template to `$el` and append all children in order\n * {@link #template View.template}\n */\n render: function (this: FrameworkViewClass) {\n this.preRender();\n doRender(this);\n this.postRender();\n return this;\n },\n\n /**\n * Pre render routine. Will be called right *before* the logic in {@link #render} is executed\n * @method\n */\n preRender: noop,\n\n /**\n * Post render routine. Will be called right *after* the logic in {@link #render} is executed\n * @method\n */\n postRender: noop,\n\n /**\n * Was this instance rendered\n */\n rendered: function (this: FrameworkViewClass) {\n return this[RENDERED];\n },\n\n /**\n * Get all direct child views.\n * @returns {src/framework/View[]}\n * @example\n * var container = View.extend({\n * children: [View1, View2]\n * }).render();\n * container.getChildren() //=> [view1, view2];\n */\n getChildren: function (this: FrameworkViewClass) {\n return this.toArray();\n },\n\n /**\n * Get a child by index\n * @param {number} index\n * @returns {src/framework/View} The child view\n */\n at: function (this: FrameworkViewClass, index) {\n return this.getChildren()[index];\n },\n\n /**\n * Invokes a method on all children down the tree\n *\n * @param {String} method The method to invoke\n */\n invoke: function (this: FrameworkViewClass, methodName) {\n var args = _.toArray(arguments);\n this.each(function (child) {\n // if child has children, bubble down the tree\n if (child.size()) {\n child.invoke.apply(child, args);\n }\n // run the function on the child\n if (_.isFunction(child[methodName])) {\n child[methodName].apply(child, args.slice(1));\n }\n });\n return this;\n }\n};\n\nView = Backbone.View.extend(/** @lends src/framework/View.prototype */ proto) as typeof FrameworkViewClass;\n\n// Code borrowed from Backbone.js source\n// Underscore methods that we want to implement on the Container.\nvar methods = ['each', 'map', 'reduce', 'reduceRight', 'find', 'filter', 'reject', 'every',\n 'some', 'contains', 'toArray', 'size', 'first', 'initial', 'rest', 'last', 'without',\n 'indexOf', 'shuffle', 'lastIndexOf', 'isEmpty', 'chain', 'where', 'findWhere'];\n\n_.each(methods, function (method) {\n View.prototype[method] = function () {\n var args = _.toArray(arguments);\n args.unshift(_.toArray(this[CHILDREN]));\n return _[method].apply(_, args);\n };\n}, this);\n\n/**\n * See [_.each](http://underscorejs.org/#each)\n * @name each\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Function} iterator\n * @param {Object} [context]\n */\n/**\n * See [_.map](http://underscorejs.org/#map)\n * @name map\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Function} iterator\n * @param {Object} [context]\n */\n/**\n * See [_.reduce](http://underscorejs.org/#reduce)\n * @name reduce\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Function} iterator\n * @param {Mixed} memo\n * @param {Object} [context]\n */\n\n/**\n * See [_.reduceRight](http://underscorejs.org/#reduceRight)\n * @name reduceRight\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Function} iterator\n * @param {Mixed} memo\n * @param {Object} [context]\n */\n/**\n * See [_.find](http://underscorejs.org/#find)\n * @name find\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Function} predicate\n * @param {Object} [context]\n */\n/**\n * See [_.filter](http://underscorejs.org/#filter)\n * @name filter\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Function} predicate\n * @param {Object} [context]\n */\n/**\n * See [_.reject](http://underscorejs.org/#reject)\n * @name reject\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Function} predicate\n * @param {Object} [context]\n */\n/**\n * See [_.every](http://underscorejs.org/#every)\n * @name every\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Function} [predicate]\n * @param {Object} [context]\n */\n/**\n * See [_.some](http://underscorejs.org/#some)\n * @name some\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Function} [predicate]\n * @param {Object} [context]\n */\n/**\n * See [_.contains](http://underscorejs.org/#contains)\n * @name contains\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Mixed} value\n */\n/**\n * See [_.toArray](http://underscorejs.org/#toArray)\n * @name toArray\n * @memberof src/framework/View\n * @method\n * @instance\n */\n/**\n * See [_.size](http://underscorejs.org/#size)\n * @name size\n * @memberof src/framework/View\n * @method\n * @instance\n */\n/**\n * See [_.first](http://underscorejs.org/#first)\n * @name first\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Number} [n]\n */\n/**\n * See [_.initial](http://underscorejs.org/#initial)\n * @name initial\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Number} [n]\n */\n/**\n * See [_.last](http://underscorejs.org/#last)\n * @name last\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Number} [n]\n */\n/**\n * See [_.rest](http://underscorejs.org/#rest)\n * @name rest\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Number} [index]\n */\n/**\n * See [_.without](http://underscorejs.org/#without)\n * @name without\n * @memberof src/framework/View\n * @method\n * @instance\n */\n/**\n * See [_.indexOf](http://underscorejs.org/#indexOf)\n * @name indexOf\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Mixed} value\n * @param {Boolean} [isSorted]\n */\n/**\n * See [_.shuffle](http://underscorejs.org/#shuffle)\n * @name shuffle\n * @memberof src/framework/View\n * @method\n * @instance\n */\n/**\n * See [_.shuffle](http://underscorejs.org/#lastIndexOf)\n * @name lastIndexOf\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Mixed} value\n * @param {Number} [fromIndex]\n */\n/**\n * See [_.isEmpty](http://underscorejs.org/#isEmpty)\n * @name isEmpty\n * @memberof src/framework/View\n * @method\n * @instance\n */\n/**\n * See [_.chain](http://underscorejs.org/#chain)\n * @name chain\n * @memberof src/framework/View\n * @method\n * @instance\n */\n/**\n * See [_.where](http://underscorejs.org/#where)\n * @name where\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Object} properties\n */\n/**\n * See [_.findWhere](http://underscorejs.org/#findWhere)\n * @name findWhere\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Object} properties\n */\n\n/**\n * It's used for distinguishing the ambiguity from _.isFunction()\n * which returns True for both a JavaScript Class constructor function\n * and normal function. With this flag, we can tell a function is actually\n * a View Class.\n * This flag is added in order to support the type of a parameter can be\n * either a Class or pure function that returns a Class.\n */\nView.isCourageView = true;\n\nexport default View;\n","import _ from '../util/underscore-wrapper';\nimport Collection from '../framework/Collection';\nimport { _Result } from 'backbone';\n\nexport declare class BaseCollectionClass extends Collection {\n secureJSON: _Result;\n}\n\nconst baseCollectionProps = /** @lends module:Okta.Collection.prototype */ {\n /**\n * Is the end point using the legacy \"secureJSON\" format\n * @type {Function|Boolean}\n */\n secureJSON: false,\n\n // TODO: may not be simplily moved to initialize as\n // child class override initialize but didn't invoke parent.initialize.\n // need to refactor child classes first.\n constructor: function () {\n Collection.apply(this, arguments);\n if (_.result(this, 'secureJSON')) {\n this.sync = _.wrap(this.sync, function (sync, method, collection, options) {\n return sync.call(this, method, collection, _.extend({ dataType: 'secureJSON' }, options));\n });\n }\n }\n};\n\n/**\n * Wrapper around the more generic {@link src/framework/Collection} that\n * contains Okta-specific logic.\n * @class module:Okta.Collection\n * @extends src/framework/Collection\n */\nexport default Collection.extend(baseCollectionProps) as typeof BaseCollectionClass;\n","import _ from '../util/underscore-wrapper';\nimport Model from './Model';\n\nexport interface ComputedPropertyCallback {\n (...args: any[]): any;\n}\n\nexport interface ComputedPropertyCallbackWithAttributes extends ComputedPropertyCallback {\n __attributes: any;\n}\n\nexport declare class BaseModelClass extends Model {\n static ComputedProperty(fn: ComputedPropertyCallback): ComputedPropertyCallback;\n static ComputedProperty(attributes: string[], fn: ComputedPropertyCallback): ComputedPropertyCallback;\n\n constructor(attr?, options?);\n _setSynced(newModel);\n _getSynced();\n validate();\n isSynced(): boolean;\n sanitizeAttributes(attributes);\n}\n\nconst hasProps = function (model) {\n const local = _.omit(model.local, _.keys(model._builtInLocalProps));\n\n return _.size(model.props) + _.size(local) > 0;\n};\n\nconst props = /** @lends module:Okta.BaseModel.prototype */ {\n /**\n * @type {Boolean}\n */\n flat: false,\n\n constructor: function () {\n Model.apply(this, arguments);\n this.on('sync', this._setSynced);\n },\n\n allows: function () {\n if (hasProps(this)) {\n return Model.prototype.allows.apply(this, arguments);\n } else {\n return true;\n }\n },\n\n // bw compatibility support for old computed properties\n set: function (key, val) {\n let attrs;\n\n if (typeof key === 'object') {\n attrs = key;\n } else {\n (attrs = {})[key] = val;\n }\n\n // computed properties\n _(attrs).each(function (fn, attr) {\n if (!fn || !_.isArray(fn.__attributes)) {\n return;\n }\n this.on(\n 'change:' + fn.__attributes.join(' change:'),\n function () {\n const val = this.get(attr);\n\n if (val !== this['__schema__'].computedProperties[attr]) {\n this['__schema__'].computedProperties[attr] = val;\n this.trigger('change:' + attr, val);\n }\n },\n this\n );\n }, this);\n\n return Model.prototype.set.apply(this, arguments);\n },\n\n /**\n * Get the current value of an attribute from the model. For example: `note.get(\"title\")`\n *\n * See [Model.get](http://backbonejs.org/#Model-get)\n * @param {String} attribute\n * @return {Mixed} The value of the model attribute\n */\n get: function () {\n const value = Model.prototype.get.apply(this, arguments);\n\n if (_.isFunction(value)) {\n return value.apply(this, _.map(value.__attributes || [], this.get, this));\n }\n return value;\n },\n\n /**\n * Return a shallow copy of the model's attributes for JSON stringification.\n * This can be used for persistence, serialization, or for augmentation before being sent to the server.\n * The name of this method is a bit confusing, as it doesn't actually return a JSON string —\n * but I'm afraid that it's the way that the JavaScript API for JSON.stringify works.\n *\n * ```javascript\n * var artist = new Model({\n * firstName: \"Wassily\",\n * lastName: \"Kandinsky\"\n * });\n *\n * artist.set({birthday: \"December 16, 1866\"});\n * alert(JSON.stringify(artist)); // {\"firstName\":\"Wassily\",\"lastName\":\"Kandinsky\",\"birthday\":\"December 16, 1866\"}\n * ```\n * See [Model.toJSON](http://backbonejs.org/#Model-toJSON)\n * @param {Object} options\n * @return {Object}\n */\n toJSON: function (options) {\n options || (options = {});\n const res = Model.prototype.toJSON.apply(this, arguments);\n\n // cleanup computed properties\n _(res).each(function (value, key) {\n if (typeof value === 'function') {\n if (options.verbose) {\n res[key] = this.get(key);\n } else {\n delete res[key];\n }\n }\n }, this);\n\n // cleanup private properties\n if (!options.verbose) {\n _(res).each(function (value, key) {\n if (/^__\\w+__$/.test(key)) {\n delete res[key];\n }\n });\n }\n\n return res;\n },\n\n sanitizeAttributes: function (attributes) {\n const attrs = {};\n\n _.each(attributes, function (value, key) {\n if (!_.isFunction(value)) {\n attrs[key] = value;\n }\n });\n return attrs;\n },\n\n reset: function (options) {\n this.clear(options);\n this.set(this.sanitizeAttributes(this.defaults), options);\n },\n\n clear: function (options) {\n const attrs = {};\n\n _.each(this.sanitizeAttributes(this.attributes), function (value, key) {\n attrs[key] = void 0;\n });\n return this.set(attrs, _.extend({}, options, { unset: true }));\n },\n\n /**\n * @private\n */\n _setSynced: function (newModel) {\n this._syncedData = newModel && _.isFunction(newModel.toJSON) ? newModel.toJSON() : {};\n },\n\n /**\n * @private\n */\n _getSynced: function () {\n return this._syncedData;\n },\n\n isSynced: function () {\n return _.isEqual(this._getSynced(), this.toJSON());\n }\n };\n\nconst statics = /** @lends module:Okta.BaseModel.prototype */ {\n /**\n * @static\n *\n * Example:\n *\n * ```javascript\n * var Model = BaseModel.extend({\n * defaults: {\n * name: BaseModel.ComputedProperty(['fname', 'lname'], function (fname, lname) {\n * return fname + ' ' + lname;\n * })\n * }\n * });\n * var model = new Model({fname: 'Joe', lname: 'Doe'});\n * model.get('name'); // Joe Doe\n * model.toJSON(); // {fname: 'Joe', lname: 'Doe'}\n * ```\n *\n * @param {Array} attributes (optional) - an array of the attribute names this method depends on\n * @param {Function} callback the function that computes the value of the property\n *\n * @deprecated Use {@link #derived} instead\n */\n ComputedProperty: function (\n attributes: string[] | ComputedPropertyCallback,\n fn?: ComputedPropertyCallback\n ): ComputedPropertyCallback | ComputedPropertyCallbackWithAttributes {\n // First parameter is optional\n if (!fn && typeof attributes === 'function') {\n fn = attributes as ComputedPropertyCallback;\n } else {\n (fn as ComputedPropertyCallbackWithAttributes).__attributes = attributes;\n }\n return fn;\n }\n };\n\n/**\n * @class module:Okta.BaseModel\n * @extends module:Okta.Model\n * @deprecated Use {@link module:Okta.Model|Okta.Model} instead\n * @example\n * var Model = BaseModel.extend({\n * defaults: {\n * name: BaseModel.ComputedProperty(['fname', 'lname'], function (fname, lname) {\n * return fname + ' ' + lname;\n * })\n * }\n * });\n * var model = new Model({fname: 'Joe', lname: 'Doe'});\n * model.get('name'); //=> \"Joe Doe\"\n * model.toJSON(); //=> {fname: 'Joe', lname: 'Doe'}\n *\n * model.set('__private__', 'private property');\n * model.get('__private__'); //=> \"private property\"\n * model.toJSON(); //=> {fname: 'Joe', lname: 'Doe'}\n */\nexport default Model.extend(props, statics) as typeof BaseModelClass;\n","import _ from '../util/underscore-wrapper';\nimport BaseCollection from './BaseCollection';\nimport BaseModel from './BaseModel';\nimport SchemaProperty from './SchemaProperty';\n\nconst parseProperties = function (resp) {\n const schemaMeta = _.pick(resp, 'id', 'name', 'displayName');\n\n const properties = _.map(resp.schema.properties, function (property, name) {\n return _.extend({ name }, property);\n });\n\n _.each(properties, function (property) {\n property['__schemaMeta__'] = schemaMeta;\n\n if (property.__metadata) {\n property['__metadata__'] = property.__metadata;\n delete property.__metadata;\n }\n });\n return properties;\n};\n\nconst BaseSchemaSchema = BaseModel.extend({\n defaults: {\n id: undefined,\n displayName: undefined,\n name: undefined\n },\n\n constructor: function () {\n this.properties = new SchemaProperty.Collection();\n BaseModel.apply(this, arguments);\n },\n\n getProperties: function () {\n return this.properties;\n },\n\n clone: function () {\n const model = BaseModel.prototype.clone.apply(this, arguments);\n\n model.getProperties().set(this.getProperties().toJSON({ verbose: true }));\n return model;\n },\n\n parse: function (resp) {\n const properties = parseProperties(resp);\n\n this.properties.set(properties, { parse: true });\n return _.omit(resp, 'schema');\n },\n\n trimProperty: function (property) {\n return _.omit(property, 'name');\n },\n\n toJSON: function () {\n const json = BaseModel.prototype.toJSON.apply(this, arguments);\n\n json.schema = { properties: {} };\n this.getProperties().each(function (model) {\n const property = model.toJSON();\n\n json.schema.properties[property.name] = this.trimProperty(property);\n }, this);\n return json;\n },\n\n save: function () {\n this.getProperties().each(function (model) {\n model.cleanup();\n });\n return BaseModel.prototype.save.apply(this, arguments);\n }\n});\nconst BaseSchemaSchemas = BaseCollection.extend({\n model: BaseSchemaSchema\n});\nexport default {\n parseProperties: parseProperties,\n Model: BaseSchemaSchema,\n Collection: BaseSchemaSchemas\n};\n","import _ from '../util/underscore-wrapper';\nimport FrameworkModel from '../framework/Model';\nimport { _Result } from 'backbone';\n\nexport declare class ModelClass extends FrameworkModel {\n secureJSON: _Result;\n}\n/**\n * Wrapper around the more generic {@link src/framework/Model} that\n * contains Okta-specific logic.\n * @class module:Okta.Model\n * @extends src/framework/Model\n */\nexport default FrameworkModel.extend(\n /** @lends module:Okta.Model.prototype */ {\n /**\n * Is the end point using the legacy \"secureJSON\" format\n * @type {Function|Boolean}\n */\n secureJSON: false,\n\n _builtInLocalProps: {\n __edit__: 'boolean',\n __pending__: 'boolean'\n },\n\n preinitialize() {\n this.local = _.defaults({}, _.result(this, 'local'), this._builtInLocalProps);\n FrameworkModel.prototype.preinitialize.apply(this, arguments);\n },\n\n constructor() {\n FrameworkModel.apply(this, arguments);\n\n if (_.result(this, 'secureJSON')) {\n this.sync = _.wrap(this.sync, function (sync, method, model, options) {\n return sync.call(this, method, model, _.extend({ dataType: 'secureJSON' }, options));\n });\n }\n }\n }\n) as typeof ModelClass;\n","/* eslint-disable @okta/okta/no-exclusive-language */\n/* eslint max-statements: [2, 16], complexity: [2, 8], max-params: [2, 8] */\nimport $ from '../util/jquery-wrapper';\nimport _ from '../util/underscore-wrapper';\nimport BaseCollection from './BaseCollection';\nimport BaseModel from './BaseModel';\nimport Logger from '../util/Logger';\nimport SchemaUtil from '../util/SchemaUtil';\nimport StringUtil from '../util/StringUtil';\nimport EnumTypeHelper from '../views/forms/helpers/EnumTypeHelper';\n\nconst loc = StringUtil.localize;\nconst STRING = SchemaUtil.STRING;\nconst NUMBER = SchemaUtil.NUMBER;\nconst INTEGER = SchemaUtil.INTEGER;\nconst OBJECT = SchemaUtil.OBJECT;\n\nconst getArrayTypeName = function (type, elementType) {\n return type + 'of' + elementType;\n};\n\nconst SchemaPropertySubSchema = BaseModel.extend({\n defaults: {\n description: undefined,\n minLength: undefined,\n maxLength: undefined,\n format: undefined\n },\n parse: function (resp) {\n if (_.isString(resp.format)) {\n const matcher = /^\\/(.+)\\/$/.exec(resp.format);\n\n if (matcher) {\n resp.format = matcher[1];\n }\n }\n return resp;\n }\n});\nconst SchemaPropertySubSchemaCollection = BaseCollection.extend({\n model: SchemaPropertySubSchema\n});\nconst SchemaPropertySubSchemaAllOfCollection = SchemaPropertySubSchemaCollection.extend({\n _type: 'allOf'\n});\nconst SchemaPropertySubSchemaOneOfCollection = SchemaPropertySubSchemaCollection.extend({\n _type: 'oneOf'\n});\nconst SchemaPropertySubSchemaNoneOfCollection = SchemaPropertySubSchemaCollection.extend({\n _type: 'noneOf'\n});\nconst constraintTypeErrorMessages = {\n string: loc('schema.validation.field.value.must.string', 'courage'),\n number: loc('schema.validation.field.value.must.number', 'courage'),\n integer: loc('schema.validation.field.value.must.integer', 'courage'),\n object: loc('schema.validation.field.value.must.object', 'courage')\n};\nconst loginFormatNonePattern = '.+';\nconst escapedLoginCharsRe = /[^a-zA-Z0-9-]/;\n\nconst constraintHandlers = {\n between: '_checkBetweenConstraints',\n greaterThan: '_checkGreaterThanConstraint',\n lessThan: '_checkLessThanConstraint',\n equals: '_checkEqualsConstraint'\n};\nconst SchemaPropertySchemaProperty = BaseModel.extend({\n\n idAttribute: 'name',\n\n local: {\n __oneOf__: {\n type: 'array',\n minItems: 1\n }\n },\n\n defaults: {\n // OKTA-28445, set empty string by default as the key for each property when syncing with server\n // so that server can respond with error when a name is not provided\n name: '',\n title: undefined,\n type: undefined,\n description: undefined,\n required: false,\n format: undefined,\n // choose disable option be default.\n union: undefined,\n subSchemas: undefined,\n settings: { permissions: { SELF: SchemaUtil.PERMISSION.READ_ONLY } },\n unique: undefined,\n __metadata__: undefined,\n __isSensitive__: BaseModel.ComputedProperty(['settings'], function (settings) {\n return !!(settings && settings.sensitive);\n }),\n __unique__: false,\n __isUniqueValidated__: BaseModel.ComputedProperty(['unique'], function (unique) {\n return unique === SchemaUtil.UNIQUENESS.UNIQUE_VALIDATED;\n }),\n __isPendingUniqueness__: BaseModel.ComputedProperty(['unique'], function (unique) {\n return unique === SchemaUtil.UNIQUENESS.PENDING_UNIQUENESS;\n }),\n __isUniqueness__: BaseModel.ComputedProperty(['__isUniqueValidated__', '__isPendingUniqueness__'],\n function (isValidated, isPending) {\n return isValidated || isPending;\n }),\n __canBeSensitive__: BaseModel.ComputedProperty(['__metadata__'], function (metadata) {\n return !!(metadata && metadata.sensitivizable);\n }),\n __userPermission__: SchemaUtil.PERMISSION.READ_ONLY,\n __displayType__: undefined,\n __displayTypeLabel__: BaseModel.ComputedProperty(['__displayType__'], function (displayType) {\n return SchemaUtil.DATATYPE[displayType] || displayType;\n }),\n __supportsMinMax__: false,\n // use the private naming convention for these computed properties,\n // to deal with the complexity in cloning schema with properties (toJSON({verbose: true})),\n // to make sure these attributes are being excluded from api request\n __isReadOnly__: BaseModel.ComputedProperty(['mutability'], function (mutability) {\n return mutability === SchemaUtil.MUTABILITY.READONLY;\n }),\n __isWriteOnly__: BaseModel.ComputedProperty(['mutability'], function (mutability) {\n return mutability === SchemaUtil.MUTABILITY.WRITEONLY;\n }),\n __displayScope__: undefined,\n __isScopeSelf__: BaseModel.ComputedProperty(['scope'], function (scope) {\n return scope === SchemaUtil.SCOPE.SELF;\n }),\n __isNoneScopeArrayType__: BaseModel.ComputedProperty(['__isScopeSelf__', '__displayType__'], function (\n isScopeSelf,\n displayType\n ) {\n return !isScopeSelf && SchemaUtil.isArrayDataType(displayType);\n }),\n __isImported__: BaseModel.ComputedProperty(['externalName'], function (externalName) {\n return !!externalName;\n }),\n __isFromBaseSchema__: BaseModel.ComputedProperty(['__schemaMeta__'], function (schemaMeta) {\n return schemaMeta && schemaMeta.name === 'base';\n }),\n // Only UI can turn on __enumDefined__ and reprocess the enum/oneOf value; otherwise,\n // it should leave existing value untouch\n __enumDefined__: false,\n __supportEnum__: BaseModel.ComputedProperty(['__displayType__'], function (displayType) {\n return _.contains(SchemaUtil.SUPPORTENUM, displayType);\n }),\n __isNumberTypeEnum__: BaseModel.ComputedProperty(['__displayType__'], function (displayType) {\n return _.contains([SchemaUtil.NUMBER, SchemaUtil.ARRAYDISPLAYTYPE.arrayofnumber], displayType);\n }),\n __isIntegerTypeEnum__: BaseModel.ComputedProperty(['__displayType__'], function (displayType) {\n return _.contains([SchemaUtil.INTEGER, SchemaUtil.ARRAYDISPLAYTYPE.arrayofinteger], displayType);\n }),\n __isObjectTypeEnum__: BaseModel.ComputedProperty(['__displayType__'], function (displayType) {\n return _.contains([SchemaUtil.OBJECT, SchemaUtil.ARRAYDISPLAYTYPE.arrayofobject], displayType);\n }),\n __isStringTypeEnum__: BaseModel.ComputedProperty(['__displayType__'], function (displayType) {\n return _.contains([SchemaUtil.STRING, SchemaUtil.ARRAYDISPLAYTYPE.arrayofstring], displayType);\n }),\n __enumConstraintType__: BaseModel.ComputedProperty(\n ['__isStringTypeEnum__', '__isNumberTypeEnum__', '__isIntegerTypeEnum__', '__isObjectTypeEnum__'],\n function (isStringType, isNumberType, isIntegerType, isObjectType) {\n if (isStringType) {\n return STRING;\n }\n if (isNumberType) {\n return NUMBER;\n }\n if (isIntegerType) {\n return INTEGER;\n }\n if (isObjectType) {\n return OBJECT;\n }\n }\n ),\n __isEnumDefinedAndSupported__: BaseModel.ComputedProperty(['__enumDefined__', '__supportEnum__'], function (\n enumDefined,\n supportEnum\n ) {\n return enumDefined && supportEnum;\n }),\n __isLoginOfBaseSchema__: BaseModel.ComputedProperty(['__isFromBaseSchema__', 'name'], function (\n isFromBaseSchema,\n name\n ) {\n return isFromBaseSchema && name === 'login';\n }),\n __isLoginFormatRestrictionToEmail__: BaseModel.ComputedProperty(['__loginFormatRestriction__'],\n function (loginFormatRestriction) {\n return loginFormatRestriction === SchemaUtil.LOGINPATTERNFORMAT.EMAIL;\n })\n },\n\n initialize: function () {\n BaseModel.prototype.initialize.apply(this, arguments);\n this.listenTo(this, 'change:__displayType__', this._updateTypeFormatConstraints);\n this.listenTo(this, 'change:type change:format change:items', this._updateDisplayType);\n this.listenTo(this, 'change:__minVal__ change:__maxVal__', this._updateMinMax);\n this.listenTo(this, 'change:__equals__', this._convertEqualsToMinMax);\n this.listenTo(this, 'change:__constraint__', this._setConstraintText);\n this._setConstraintText();\n this._setLoginPattern();\n },\n\n parse: function (resp) {\n /* eslint complexity: [2, 9] */\n resp = _.clone(resp);\n\n if (resp.type === 'object' && resp.extendedType === 'image') {\n resp.type = 'image';\n }\n resp['__displayType__'] = SchemaUtil.getDisplayType(\n resp.type,\n resp.format,\n resp.items ? (resp.items.format ? resp.items.format : resp.items.type) : undefined\n );\n this._setRangeConstraints(resp);\n resp['__supportsMinMax__'] = SchemaUtil.SUPPORTSMINMAX.indexOf(resp['__displayType__']) !== -1;\n resp['__displayScope__'] = SchemaUtil.DISPLAYSCOPE[resp.scope] || SchemaUtil.DISPLAYSCOPE.NA;\n if (resp.settings && resp.settings.permissions && resp.settings.permissions.SELF) {\n resp['__userPermission__'] = resp.settings.permissions.SELF;\n }\n this._setMasterOverride(resp);\n this._setSubSchemas(resp);\n this._setUniqueness(resp);\n return resp;\n },\n\n validate: function () {\n const enumValidationError = this._validateEnumOneOf();\n\n if (enumValidationError) {\n return enumValidationError;\n }\n\n if (!this.get('__supportsMinMax__') || !this.get('__constraint__')) {\n return undefined;\n }\n\n const constraitType = this.get('__constraint__');\n const constraitHandler = this[constraintHandlers[constraitType]];\n\n if (_.isFunction(constraitHandler)) {\n return constraitHandler.call(this);\n } else {\n Logger.warn('No constraint handler found for: ' + constraitType);\n return undefined;\n }\n },\n\n _checkBetweenConstraints: function () {\n const minVal = this.get('__minVal__');\n const maxVal = this.get('__maxVal__');\n\n if (!minVal && !maxVal) {\n return;\n }\n if (!minVal) {\n return { __minVal__: 'Min value is required' };\n }\n if (!maxVal) {\n return { __maxVal__: 'Max value is required' };\n }\n\n let val = this._checkIntegerConstraints('__minVal__', 'Min value');\n\n if (val) {\n return val;\n }\n val = this._checkIntegerConstraints('__maxVal__', 'Max value');\n if (val) {\n return val;\n }\n if (+minVal >= +maxVal) {\n return { __maxVal__: 'Max val must be greater than min val' };\n }\n },\n\n _checkGreaterThanConstraint: function () {\n const minVal = this.get('__minVal__');\n\n if (!minVal) {\n return;\n }\n\n const val = this._checkIntegerConstraints('__minVal__', 'Min value');\n\n if (val) {\n return val;\n }\n },\n\n _checkLessThanConstraint: function () {\n const maxVal = this.get('__maxVal__');\n\n if (!maxVal) {\n return;\n }\n\n const val = this._checkIntegerConstraints('__maxVal__', 'Max value');\n\n if (val) {\n return val;\n }\n },\n\n _checkEqualsConstraint: function () {\n const equals = this.get('__equals__');\n\n if (!equals) {\n return;\n }\n\n const val = this._checkIntegerConstraints('__equals__', 'Constraint');\n\n if (val) {\n return val;\n }\n },\n\n _checkIntegerConstraints: function (field, name) {\n const val = this.get(field);\n const error = {};\n\n // eslint-disable-next-line no-restricted-globals\n if (isNaN(val)) {\n error[field] = name + ' must be a number';\n return error;\n }\n if (+val < 0) {\n error[field] = name + ' must be greater than 0';\n return error;\n }\n },\n\n _setMasterOverride: function (resp) {\n if (resp.settings && resp.settings.masterOverride && resp.settings.masterOverride) {\n const masterOverrideValue = resp.settings.masterOverride.value;\n\n if (_.isArray(masterOverrideValue) && !_.isEmpty(masterOverrideValue)) {\n resp['__masterOverrideType__'] = 'OVERRIDE';\n resp['__masterOverrideValue__'] = masterOverrideValue || [];\n } else {\n resp['__masterOverrideType__'] = resp.settings.masterOverride.type;\n }\n } else {\n resp['__masterOverrideType__'] = 'INHERIT';\n }\n },\n\n _setRangeConstraints: function (resp) {\n /* eslint complexity: [2, 11] */\n if (resp['__displayType__'] === STRING) {\n resp['__minVal__'] = resp.minLength;\n resp['__maxVal__'] = resp.maxLength;\n } else if (resp['__displayType__'] === INTEGER || resp['__displayType__'] === NUMBER) {\n resp['__minVal__'] = resp.minimum;\n resp['__maxVal__'] = resp.maximum;\n }\n if (resp['__minVal__'] && resp['__maxVal__']) {\n if (resp['__minVal__'] === resp['__maxVal__']) {\n resp['__constraint__'] = 'equals';\n resp['__equals__'] = resp['__minVal__'];\n } else {\n resp['__constraint__'] = 'between';\n }\n } else if (!resp['__minVal__'] && resp['__maxVal__']) {\n resp['__constraint__'] = 'lessThan';\n } else if (!resp['__maxVal__'] && resp['__minVal__']) {\n resp['__constraint__'] = 'greaterThan';\n }\n },\n\n _setSubSchemas: function (resp) {\n if (resp.allOf) {\n resp['subSchemas'] = new SchemaPropertySubSchemaAllOfCollection(resp.allOf, { parse: true });\n } else if (resp.oneOf) {\n resp['subSchemas'] = new SchemaPropertySubSchemaOneOfCollection(resp.oneOf, { parse: true });\n } else if (resp.noneOf) {\n resp['subSchemas'] = new SchemaPropertySubSchemaNoneOfCollection(resp.noneOf, { parse: true });\n }\n },\n\n _setUniqueness: function (resp) {\n const unique = resp && resp.unique;\n resp['__unique__'] = !!(unique\n && (unique === SchemaUtil.UNIQUENESS.UNIQUE_VALIDATED || unique === SchemaUtil.UNIQUENESS.PENDING_UNIQUENESS));\n },\n\n _setLoginPattern: function () {\n if (!this.get('__isLoginOfBaseSchema__')) {\n return;\n }\n\n const pattern = this.get('pattern');\n\n if (pattern === loginFormatNonePattern) {\n this.set('__loginFormatRestriction__', SchemaUtil.LOGINPATTERNFORMAT.NONE);\n } else if (pattern) {\n this.set('__loginFormatRestriction__', SchemaUtil.LOGINPATTERNFORMAT.CUSTOM);\n this.set('__loginFormatRestrictionCustom__', this._extractLoginPattern(pattern));\n } else {\n this.set('__loginFormatRestriction__', SchemaUtil.LOGINPATTERNFORMAT.EMAIL);\n }\n },\n\n _updateDisplayType: function () {\n const type = this.get('type');\n\n if (type === STRING && this.get('format')) {\n this.set('__displayType__', SchemaUtil.FORMATDISPLAYTYPE[this.get('format')]);\n } else {\n const items = this.get('items');\n const arraytype = items && (items.format ? items.format : items.type);\n\n if (type && arraytype) {\n this.set('__displayType__', SchemaUtil.ARRAYDISPLAYTYPE[getArrayTypeName(type, arraytype)]);\n } else {\n this.set('__displayType__', type);\n }\n }\n },\n\n _validateEnumOneOf: function () {\n if (!this.get('__isEnumDefinedAndSupported__')) {\n return;\n }\n\n const enumOneOf = this.get('__oneOf__') || [];\n\n if (_.isEmpty(enumOneOf)) {\n return { __oneOf__: loc('model.validation.field.blank', 'courage') };\n }\n\n if (!this._isValidateOneOfConstraint(enumOneOf)) {\n const constraintType = this.get('__enumConstraintType__');\n const errorTypeMsg = constraintTypeErrorMessages[constraintType];\n\n return { __oneOf__: errorTypeMsg };\n }\n },\n\n _isValidateOneOfConstraint: function (values) {\n const constraintType = this.get('__enumConstraintType__');\n\n return _.all(values, function (value) {\n return EnumTypeHelper.isConstraintValueMatchType(value.const, constraintType);\n });\n },\n\n toJSON: function () {\n let json = BaseModel.prototype.toJSON.apply(this, arguments);\n\n json.settings = { permissions: {} };\n json.settings.permissions['SELF'] = this.get('__userPermission__');\n\n // omit \"sensitive\" filed will have default it value to false.\n if (this.get('__isSensitive__')) {\n json.settings.sensitive = this.get('__isSensitive__');\n }\n if (this.get('type') === 'image') {\n json.type = 'object';\n json.extendedType = 'image';\n }\n\n json = this._enumAssignment(json);\n json = this._attributeOverrideToJson(json);\n json = this._normalizeUnionValue(json);\n json = this._patternAssignment(json);\n json = this._uniquenessAssignment(json);\n return json;\n },\n\n _attributeOverrideToJson: function (json) {\n const masterOverrideType = this.get('__masterOverrideType__');\n const masterOverrideValue = this.get('__masterOverrideValue__');\n\n if (masterOverrideType === 'OKTA_MASTERED') {\n json.settings.masterOverride = { type: 'OKTA_MASTERED' };\n } else if (masterOverrideType === 'OVERRIDE') {\n json.settings.masterOverride = { type: 'ORDERED_LIST', value: [] };\n if (masterOverrideValue instanceof BaseCollection) {\n _.each(masterOverrideValue.toJSON(), function (overrideProfile) {\n json.settings.masterOverride.value.push(overrideProfile.id);\n });\n } else if (masterOverrideValue instanceof Array) {\n json.settings.masterOverride.value = masterOverrideValue;\n }\n if (_.isEmpty(json.settings.masterOverride.value)) {\n delete json.settings.masterOverride;\n }\n }\n\n if (masterOverrideType === 'INHERIT') {\n delete json.settings.masterOverride;\n }\n return json;\n },\n\n /**\n * Only allow set \"union\" value when isScopeSelf is NONE and displayType is\n * array of (string/number/integer), otherwise reset to default.\n *\n * @see /universal-directory/shared/views/components/UnionGroupValuesRadio.js\n */\n _normalizeUnionValue: function (json) {\n if (!this.get('__isNoneScopeArrayType__')) {\n json['union'] = undefined;\n }\n\n return json;\n },\n\n _enumAssignment: function (json) {\n if (!this.get('__isEnumDefinedAndSupported__')) {\n return json;\n }\n\n // backfill empty title by constraint\n\n const enumOneOf = this._getEnumOneOfWithTitleCheck();\n\n if (this.get('type') === 'array') {\n delete json.items.enum;\n json.items.oneOf = enumOneOf;\n } else {\n delete json.enum;\n json.oneOf = enumOneOf;\n }\n\n return json;\n },\n\n _patternAssignment: function (json) {\n if (!this.get('__isLoginOfBaseSchema__') || !this.get('__loginFormatRestriction__')) {\n return json;\n }\n\n switch (this.get('__loginFormatRestriction__')) {\n case SchemaUtil.LOGINPATTERNFORMAT.EMAIL:\n delete json.pattern;\n break;\n case SchemaUtil.LOGINPATTERNFORMAT.CUSTOM:\n json.pattern = this._buildLoginPattern(this.get('__loginFormatRestrictionCustom__'));\n break;\n case SchemaUtil.LOGINPATTERNFORMAT.NONE:\n json.pattern = loginFormatNonePattern;\n break;\n }\n\n return json;\n },\n\n _uniquenessAssignment: function (json) {\n if (!this.get('__unique__')) {\n delete json.unique;\n } else if (!this.get('__isUniqueness__')) {\n json.unique = SchemaUtil.UNIQUENESS.UNIQUE_VALIDATED;\n }\n\n return json;\n },\n\n /**\n * Character should be escaped except letters, digits and hyphen\n */\n _escapedRegexChar: function (pattern, index) {\n const char = pattern.charAt(index);\n\n if (escapedLoginCharsRe.test(char)) {\n return '\\\\' + char;\n }\n\n return char;\n },\n\n _buildLoginPattern: function (pattern) {\n let result = '';\n\n for (var i = 0; i < pattern.length; i++) {\n result += this._escapedRegexChar(pattern, i);\n }\n\n return '[' + result + ']+';\n },\n\n _extractLoginPattern: function (pattern) {\n const re = /^\\[(.*)\\]\\+/;\n const matches = pattern.match(re);\n\n return matches ? matches[1].replace(/\\\\(.)/g, '$1') : pattern;\n },\n\n _getEnumOneOfWithTitleCheck: function () {\n const enumOneOf = this.get('__oneOf__');\n\n return _.map(enumOneOf, function (value) {\n if ($.trim(value.title) !== '') {\n return value;\n }\n\n value.title = !_.isString(value.const) ? JSON.stringify(value.const) : value.const;\n\n return value;\n });\n },\n\n _updateTypeFormatConstraints: function () {\n const displayType = this.get('__displayType__');\n\n // OKTA-31952 reset format according to its displayType\n this.unset('format', { silent: true });\n this.unset('items', { silent: true });\n this.set(SchemaUtil.DISPLAYTYPES[displayType]);\n if (displayType !== NUMBER && displayType !== INTEGER) {\n this.unset('minimum');\n this.unset('maximum');\n }\n if (displayType !== STRING) {\n this.unset('minLength');\n this.unset('maxLength');\n }\n\n this.unset('__minVal__');\n this.unset('__maxVal__');\n this.unset('__equals__');\n this.set('__supportsMinMax__', SchemaUtil.SUPPORTSMINMAX.indexOf(this.get('__displayType__')) !== -1);\n },\n\n _updateMinMax: function () {\n let min;\n let max;\n const displayType = this.get('__displayType__');\n\n if (displayType === STRING) {\n min = 'minLength';\n max = 'maxLength';\n } else if (displayType === INTEGER || displayType === NUMBER) {\n min = 'minimum';\n max = 'maximum';\n }\n\n if (this.get('__minVal__')) {\n this.set(min, parseInt(this.get('__minVal__'), 10));\n } else {\n this.unset(min);\n }\n\n if (this.get('__maxVal__')) {\n this.set(max, parseInt(this.get('__maxVal__'), 10));\n } else {\n this.unset(max);\n }\n },\n\n _convertEqualsToMinMax: function () {\n const equals = this.get('__equals__');\n\n if (equals) {\n this.set('__minVal__', equals);\n this.set('__maxVal__', equals);\n }\n },\n\n /*\n Normally we would use a derived property here but derived properties do not work with the model Clone function\n so we use this workaround instead.\n */\n _setConstraintText: function () {\n const constraint = this.get('__constraint__');\n const min = this.get('__minVal__');\n const max = this.get('__maxVal__');\n const equals = this.get('__equals__');\n\n switch (constraint) {\n case 'between':\n this.set('__constraintText__', 'Between ' + min + ' and ' + max);\n break;\n case 'greaterThan':\n this.set('__constraintText__', 'Greater than ' + min);\n break;\n case 'lessThan':\n this.set('__constraintText__', 'Less than ' + max);\n break;\n case 'equals':\n this.set('__constraintText__', 'Equals ' + equals);\n break;\n default:\n this.set('__constraintText__', '');\n break;\n }\n },\n\n cleanup: function () {\n if (this.get('__constraint__') === 'lessThan') {\n this.unset('__minVal__');\n } else if (this.get('__constraint__') === 'greaterThan') {\n this.unset('__maxVal__');\n }\n if (this.get('scope') !== SchemaUtil.SCOPE.SYSTEM) {\n if (this.get('__isScopeSelf__') === true) {\n this.set({ scope: SchemaUtil.SCOPE.SELF }, { silent: true });\n } else {\n this.unset('scope');\n }\n }\n\n if (!this.get('__unique__')) {\n this.unset('unique');\n }\n },\n\n /**\n * Since there is not an dedicated attribute to flag enum type,\n * use enum values to determine whether the property is enum type or not.\n */\n isEnumType: function () {\n return !!this.getEnumValues();\n },\n\n getEnumValues: function () {\n return (\n this.get('oneOf')\n || this.get('enum')\n || (this.get('items') && this.get('items')['oneOf'])\n || (this.get('items') && this.get('items')['enum'])\n );\n },\n\n detectHasEnumDefined: function () {\n const enumValues = this.getEnumValues();\n\n if (!enumValues) {\n return;\n }\n\n this.set('__oneOf__', EnumTypeHelper.convertToOneOf(enumValues));\n this.set('__enumDefined__', true);\n }\n});\nconst SchemaPropertySchemaProperties = BaseCollection.extend({\n model: SchemaPropertySchemaProperty,\n clone: function () {\n return new this.constructor(this.toJSON({ verbose: true }), { parse: true });\n },\n areAllReadOnly: function () {\n return _.all(this.pluck('__isReadOnly__'));\n },\n createModelProperties: function () {\n return this.reduce(function (p, schemaProperty) {\n const type = schemaProperty.get('type');\n\n p[schemaProperty.id] = _.clone(SchemaUtil.DISPLAYTYPES[type]);\n if (SchemaUtil.SUPPORTSMINMAX.indexOf(type) !== -1) {\n p[schemaProperty.id].minLength = schemaProperty.get('minLength');\n p[schemaProperty.id].maxLength = schemaProperty.get('maxLength');\n }\n if (type === 'string') {\n p[schemaProperty.id].format = schemaProperty.get('format');\n }\n return p;\n }, {});\n }\n});\nexport default {\n Model: SchemaPropertySchemaProperty,\n Collection: SchemaPropertySchemaProperties\n};\n","import $ from './jquery-wrapper';\nimport _ from './underscore-wrapper';\n// eslint-disable-next-line import/no-cycle\nimport BaseRouter from './BaseRouter';\nimport SettingsModel, { SettingsModelClass } from './SettingsModel';\nimport StateMachine from './StateMachine';\nimport BaseView, { BaseViewOptions } from '../views/BaseView';\n\nexport type JSONValue =\n | string\n | number\n | boolean\n | null\n | { [key: string]: JSONValue }\n | Array;\n\nexport interface BaseControllerOptions extends BaseViewOptions {\n state?: typeof StateMachine;\n settings?: SettingsModelClass;\n}\n\nexport declare class BaseControllerClass extends BaseView {\n constructor(options);\n root: Backbone._Result;\n\n View: any;\n toJSON(options): JSONValue;\n}\n\nfunction clean(obj) {\n const res = {};\n\n _.each(obj, function (value, key) {\n if (!_.isNull(value)) {\n res[key] = value;\n }\n });\n return res;\n}\n\nconst proto = /** @lends module:Okta.Controller.prototype */ {\n preinitialize(options: BaseControllerOptions = {}) {\n // If 'state' is passed down as options, use it, else create a 'new StateMachine()'\n this.state = _.result(this, 'state');\n const hasStateBeenInitialized = (this.state instanceof StateMachine)\n || (options.state instanceof StateMachine);\n if (!hasStateBeenInitialized) {\n const stateData = _.defaults(clean(options.state), this.state || {});\n // TODO:\n // `framework/View.js set `this.state = options.state.`.\n // Therefore we could consider to do\n // 1. `options.state = new StateMachine()`\n // 2. remove `delete options.state`\n this.state = new StateMachine(stateData);\n delete options.state;\n }\n\n if (!options.settings) {\n // allow the controller to live without a router\n options.settings = new SettingsModel(_.omit(options || {}, 'el'));\n this.listen('notification', BaseRouter.prototype._notify);\n this.listen('confirmation', BaseRouter.prototype._confirm);\n }\n BaseView.prototype.preinitialize.call(this, options);\n },\n\n constructor: function (options: BaseControllerOptions = {}) {\n BaseView.call(this, options);\n\n this.listenTo(this.state, '__invoke__', function () {\n const args = _.toArray(arguments);\n\n const method = args.shift();\n\n if (_.isFunction(this[method])) {\n this[method].apply(this, args);\n }\n });\n\n let MainView;\n\n // if `this.View` is already a Backbone View\n if (this.View && this.View.isCourageView) {\n MainView = this.View;\n }\n // if `this.View` is a pure function that returns a Backbone View\n else if (_.result(this, 'View') && _.result(this, 'View').isCourageView) {\n MainView = _.result(this, 'View');\n }\n if (MainView) {\n this.add(new MainView(this.toJSON()));\n }\n },\n\n /**\n * The default values of our application state\n * @type {Object}\n * @default {}\n */\n state: {},\n\n /**\n * The main view this controller operate on\n * @type {module:Okta.View}\n * @default null\n */\n View: null,\n\n /**\n * Renders the {@link module:Okta.Controller#View|main view} after the DOM is ready\n * in case the controller is the root component of the page (e.g there's no router)\n */\n render: function () {\n const args = arguments;\n const self = this;\n\n $(function () {\n BaseView.prototype.render.apply(self, args);\n });\n return this;\n },\n\n /**\n * Creates the view constructor options\n * @param {Object} [options] Extra options\n * @return {Object} The view constructor options\n */\n toJSON: function (options) {\n return _.extend(_.pick(this, 'state', 'settings', 'collection', 'model'), options || {});\n },\n\n /**\n * Removes the child views, empty the DOM element and stop listening to events\n */\n remove: function () {\n this.removeChildren();\n this.stopListening();\n this.$el.empty();\n return this;\n }\n};\n\n/**\n * A Controller is our application control flow component.\n *\n * Typically it will:\n * - Initialize the models, controller and main views\n * - Listen to events\n * - Create, read, update and delete models\n * - Create modal dialogs, confirmation dialogs and alert dialogs\n * - Control the application flow\n *\n * The constructor is responsible for:\n * - Create the application state object\n * - Assign or creates the application settings object\n * - Create an instance of the main view with the relevant parameters\n *\n * See:\n * [Hello World Tutorial](https://github.com/okta/courage/wiki/Hello-World),\n * [Test Spec](https://github.com/okta/okta-ui/blob/master/packages/courage/test/spec/util/BaseController_spec.js)\n *\n * @class module:Okta.Controller\n * @param {Object} options Options Hash\n * @param {SettingsModel} [options.settings] Application Settings Model\n * @param {String} options.el a jQuery selector string stating where to attach the controller in the DOM\n */\nexport default BaseView.extend(proto) as typeof BaseControllerClass;\n","import Backbone from 'backbone';\nimport ConfirmationDialog from '../views/components/ConfirmationDialog';\nimport $ from './jquery-wrapper';\nimport _ from './underscore-wrapper';\nimport Logger from './Logger';\nimport SettingsModel, { SettingsModelClass } from './SettingsModel';\nimport Notification from '../views/components/Notification';\n// eslint-disable-next-line import/no-cycle\nimport { BaseControllerClass } from './BaseController';\n\ndeclare class BackboneRouterExt extends Backbone.EventsMixin implements Backbone.Events {\n /**\n * Do not use, prefer TypeScript's extend functionality.\n */\n static extend(properties: any, classProperties?: any): any;\n\n /**\n * Routes hash or a method returning the routes hash that maps URLs with parameters to methods on your Router.\n * For assigning routes as object hash, do it like this: this.routes = { \"route\": callback, ... };\n * That works only if you set it in the constructor or the initialize method.\n */\n routes: Backbone._Result;\n\n /**\n * For use with Router as ES classes. If you define a preinitialize method,\n * it will be invoked when the Router is first created, before any\n * instantiation logic is run for the Router.\n * @see https://backbonejs.org/#Router-preinitialize\n */\n preinitialize(options?: O): void;\n\n constructor(options?: O);\n initialize(options?: O): void;\n route(route: string | RegExp, name: string, callback?: Backbone.RouterCallback): this;\n route(route: string | RegExp, callback: Backbone.RouterCallback): this;\n navigate(fragment: string, options?: Backbone.NavigateOptions | boolean): this;\n\n execute(callback: Backbone.RouterCallback, args: string[], name: string): void;\n\n protected _bindRoutes(): void;\n protected _routeToRegExp(route: string): RegExp;\n protected _extractParameters(route: RegExp, fragment: string): string[];\n}\n\nexport interface BaseRouterOptions extends Backbone.HistoryOptions {\n el?: HTMLElement | string | JQuery.PlainObject;\n}\n\nexport declare class BaseRouterClass extends BackboneRouterExt {\n el: Backbone._Result;\n\n root: Backbone._Result;\n\n settings: S;\n\n controller: BaseControllerClass;\n listen(name, fn): Backbone.View;\n start();\n unload();\n render(Controller, options);\n _confirm(options);\n _notify(options);\n}\n\nfunction getRoute(router, route) {\n const root = _.result(router, 'root') || '';\n\n if (root && _.isString(route)) {\n return [root, route].join('/').replace(/\\/{2,}/g, '/');\n }\n return route;\n}\n\n/**\n * BaseRouter is a standard [Backbone.Router](http://backbonejs.org/#Router)\n * with a few additions:\n * - Explicit mapping between routes and controllers\n * - Support for rendering notification and confirmation dialogs\n *\n * Checkout the [Hello World Tutorial](https://github.com/okta/courage/wiki/Hello-World)\n * for a step-by-step guide to using this.\n *\n * @class module:Okta.Router\n * @extends external:Backbone.Router\n * @param {Object} options options hash\n * @param {String} options.el a jQuery selector string stating where to attach the controller in the DOM\n */\nconst props = /** @lends module:Okta.Router.prototype */ {\n /**\n * The root URL for the router. When setting {@link http://backbonejs.org/#Router-routes|routes},\n * it will be prepended to each route.\n * @type {String|Function}\n */\n root: '',\n\n listen: Notification.prototype.listen,\n\n constructor: function (this: BaseRouterClass, options: BaseRouterOptions = {}) {\n this.el = options.el;\n\n /**\n * Make sure `this.settings` has been set before invoke super - `Backbone.Router.apply`,\n * which will invoke `this.initialize`, which could use `this.settings`.\n *\n * In theory we can set `this.settings` in `this.initialize` and assume `child.initialize`\n * will invoke `super.initialize` first. But in reality, `child.initialize` doesn't call\n * `super.initialize` at all.\n */\n this.settings = new SettingsModel(_.omit(options, 'el'));\n if (options.root) {\n this.root = options.root;\n }\n\n Backbone.Router.apply(this, arguments);\n\n this.listen('notification', this._notify);\n this.listen('confirmation', this._confirm);\n },\n\n /**\n * Fires up a confirmation dialog\n *\n * @param {Object} options Options Hash\n * @param {String} options.title The title\n * @param {Array} buttonOrder The order of the buttons\n * @param {String} options.subtitle The explain text\n * @param {String} options.save The text for the save button\n * @param {Function} options.ok The callback function to run when hitting \"OK\"\n * @param {String} options.cancel The text for the cancel button\n * @param {Function} options.cancelFn The callback function to run when hitting \"Cancel\"\n * @param {Boolean} options.noCancelButton Don't render the cancel button (useful for alert dialogs)\n * @param {Boolean} options.noSubmitButton Don't render the primary button (useful for alert dialogs)\n * @private\n *\n * @return {Okta.View} the dialog view\n */\n _confirm: function (this: BaseRouterClass, options = {}) {\n const Dialog = ConfirmationDialog.extend(\n _.pick(options, 'title', 'subtitle', 'save', 'ok', 'cancel', 'cancelFn', 'noCancelButton', 'noSubmitButton',\n 'content', 'danger', 'type', 'closeOnOverlayClick', 'buttonOrder'),\n );\n const dialog = new Dialog({ model: this.settings });\n // The model is here because itsa part of the BaseForm paradigm.\n // It will be ignored in the context of a confirmation dialog.\n\n dialog.render();\n return dialog; // test hook\n },\n\n /**\n * Fires up a notification banner\n *\n * @param {Object} options Options Hash\n * @return {Okta.View} the notification view\n * @private\n */\n _notify: function (options) {\n const notification = new Notification(options);\n\n $('#content').prepend(notification.render().el);\n return notification; // test hook\n },\n\n /**\n * Renders a Controller\n * This will initialize new instance of a controller and call render on it\n *\n * @param {Okta.Controller} Controller The controller Class we which to render\n * @param {Object} [options] Extra options to the controller constructor\n */\n render: function (this: BaseRouterClass, Controller, options) {\n this.unload();\n options = _.extend(_.pick(this, 'settings', 'el'), options || {});\n this.controller = new Controller(options);\n this.controller.render();\n },\n\n /**\n * Starts the backbone history object\n *\n * Waits for the dom to be ready before calling `Backbone.history.start()` (IE issue).\n *\n * See [Backbone History](http://backbonejs.org/#History) for more information.\n */\n start: function (...args) {\n $(function () {\n if (Backbone.History.started) {\n Logger.error('History has already been started');\n return;\n }\n Backbone.history.start(...args);\n });\n },\n\n /**\n * Removes active controller and frees up event listeners\n */\n unload: function () {\n if (this.controller) {\n this.stopListening(this.controller);\n this.stopListening(this.controller.state);\n this.controller.remove();\n }\n },\n\n route: function (route, name, callback?) {\n return Backbone.Router.prototype.route.call(this, getRoute(this, route), name, callback);\n },\n\n navigate: function (fragment, options) {\n return Backbone.Router.prototype.navigate.call(this, getRoute(this, fragment), options);\n },\n};\n\nexport default Backbone.Router.extend(props) as typeof BaseRouterClass;\n","/* eslint '@okta/okta-ui/no-deprecated-methods': [0, [{ name: 'BaseButtonLink.extend', use: 'Okta.createButton'}, ]] */\nimport _ from './underscore-wrapper';\nimport BaseButtonLink from '../views/components/BaseButtonLink';\n\n/**\n * A factory method wrapper for {@link BaseButtonLink} creation\n * @class module:Okta.internal.util.ButtonFactory\n */\n\nfunction normalizeEvents(options) {\n const events = _.extend(options.click ? { click: options.click } : {}, options.events || {});\n\n const target = {};\n\n _.each(events, function (fn, eventName) {\n target[eventName] = function (e) {\n if (!options.href) {\n e.preventDefault();\n e.stopPropagation();\n }\n if (!(this.disabled && eventName === 'click')) {\n fn.apply(this, arguments);\n }\n };\n });\n return target;\n}\n\nexport default /** @lends module:Okta.internal.util.ButtonFactory */ {\n /**\n * Creates a {@link module:Okta.internal.views.components.BaseButtonLink|BaseButtonLink}.\n * @param {Object} options Options hash\n * @param {String} [options.title] The button text\n * @param {String} [options.icon]\n * CSS class for the icon to display. See [Style guide](http://rain.okta1.com:1802/su/dev/style-guide#icons)\n * @param {String} [options.href] The button link\n * @param {Function} [options.click] On click callback\n * @param {Object} [options.events] a [Backbone events](http://backbonejs.org/#View-delegateEvents) hash\n * @returns {module:Okta.internal.views.components.BaseButtonLink} BaseButtonLink prototype (\"class\")\n */\n create: function (options) {\n options = _.clone(options);\n options.attrs = options.attributes;\n delete options.attributes;\n\n return BaseButtonLink.extend(\n _.extend(options, {\n events: normalizeEvents(options)\n })\n );\n }\n};\n","import Backbone from 'backbone';\nimport _ from './underscore-wrapper';\n\nfunction Class(options) {\n this.options = _.clone(options || {});\n this.cid = _.uniqueId('class');\n this.initialize.apply(this, arguments);\n}\n\n_.extend(Class.prototype, Backbone.Events, {\n initialize: function () {}\n});\n\nClass.extend = Backbone.Model.extend;\n\nexport default Class;\n","import clipboard from 'clipboard';\nimport $ from './jquery-wrapper';\nimport _ from './underscore-wrapper';\nimport View from '../framework/View';\nimport Class from './Class';\n\nconst Clipboard = clipboard;\nconst OPTIONS = ['success', 'error', 'target', 'text'];\nconst ClipboardClipboardWrapper = Class.extend({\n initialize: function (el, options) {\n /* eslint complexity:0, max-statements: [2, 24] */\n options = _.pick(options || {}, OPTIONS);\n let trigger;\n let target;\n let text;\n\n if (_.isString(el)) {\n trigger = el;\n }\n if (_.isElement(el)) {\n trigger = el;\n }\n if (el instanceof $) {\n trigger = (el as any).selector; // TODO: use stronger type\n }\n if (el instanceof View) {\n trigger = el.el;\n }\n if (_.isFunction(options.target)) {\n target = options.target;\n }\n if (_.isElement(options.target)) {\n target = _.constant(options.target);\n }\n if (_.isString(options.text)) {\n text = _.constant(options.text);\n } else if (_.isFunction(options.text)) {\n text = options.text;\n }\n this.__instance = new Clipboard(trigger, { target: target, text: text });\n this.done = _.partial(this.__setCallback, 'success');\n this.error = _.partial(this.__setCallback, 'error');\n this.done(options.success);\n this.error(options.error);\n },\n\n __setCallback: function (event, callback) {\n if (!_.isFunction(callback)) {\n return;\n }\n this.__instance.on(event, callback);\n return this.__instance;\n }\n});\n\n/**\n * @class Clipboard\n * @abstract\n *\n * Abstract class that initializes a Clipboard\n * https://clipboardjs.com/\n *\n * ### Example:\n *\n * ```javascript\n * //attach a selector\n * Clipboard.attach('.copy-button');\n *\n * //attach a node, and set a constant string\n * Clipboard.attach(buttonView.el, {\n * text: 'this is the content'\n * });\n *\n * //attach a view, set text dynamically, and set callback\n * Clipboard.attach(buttonView, {\n * text: function (triggerNode) {\n * return $(triggerNode).attr('foo') + model.get('userName');\n * }\n * }).done(function (targetNode) {\n * var msg = ['\"', targetNode.text, '\" is copied'].join('');\n * view.notify('success', msg);\n * });\n *\n * //attach a jquery object, set the target node, and set callback\n * Clipboard.attach($('.customizeTarget'), {\n * target: function (triggerNode) {\n * return triggerNode;\n * },\n * success: function (targetNode) {\n * view.notify('success', 'copied!');\n * }\n * });\n *\n * ```\n */\nexport default {\n /**\n * @param {String|Node|View|jQuery} [el] el could be a selector (recommended),\n * a dom node, a view or a jquery object\n * @param {Object} [options] Options hash\n * @param {Node|Function} [options.target] a static dom node\n * or a function that takes trigger node and returns a target node\n * @param {String|Function} [options.text] a static string or a function that returns a string dynamically\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @return {Object} The clipboard object\n */\n attach: function (el, options) {\n return new ClipboardClipboardWrapper(el, options);\n }\n};\n","import _ from './underscore-wrapper';\nimport Cookie from 'vendor/lib/js.cookie';\n\nconst SECURED_COOKIE = /^https/.test(window.location.href);\nexport default {\n setCookie: function (name, value, options) {\n Cookie.set(\n name,\n value,\n _.defaults(options || {}, {\n secure: SECURED_COOKIE,\n path: '/'\n })\n );\n },\n\n getCookie: function () {\n return Cookie.get.apply(Cookie, arguments);\n },\n\n removeCookie: function () {\n return Cookie.remove.apply(Cookie, arguments);\n }\n};\n","export default {\n UP: 38,\n DOWN: 40,\n DEL: 46,\n TAB: 9,\n RETURN: 13,\n ENTER: 13,\n ESC: 27,\n COMMA: 188,\n PAGEUP: 33,\n PAGEDOWN: 34,\n SPACE: 32,\n BACKSPACE: 8,\n __isKey: function (e, key) {\n return (e.which || e.keyCode) === this[key];\n },\n isEnter: function (e) {\n return this.__isKey(e, 'ENTER');\n },\n isEsc: function (e) {\n return this.__isKey(e, 'ESC');\n },\n isSpaceBar: function (e) {\n return this.__isKey(e, 'SPACE');\n }\n};\n","function log(level, ...args) {\n if (window.console && window.okta && window.okta.debug) {\n window.console[level](...args);\n }\n}\n\n/**\n * Utility library of logging functions.\n * @class module:Okta.Logger\n */\nexport default /** @lends module:Okta.Logger */ {\n /**\n * See [console.trace](https://developer.mozilla.org/en-US/docs/Web/API/Console.trace)\n * @static\n */\n trace: function (...args) {\n return log('trace', ...args);\n },\n /**\n * See [console.dir](https://developer.mozilla.org/en-US/docs/Web/API/Console.dir)\n * @static\n */\n dir: function (...args) {\n return log('dir', ...args);\n },\n /**\n * See [console.time](https://developer.mozilla.org/en-US/docs/Web/API/Console.time)\n * @static\n */\n time: function (...args) {\n return log('time', ...args);\n },\n /**\n * See [console.timeEnd](https://developer.mozilla.org/en-US/docs/Web/API/Console.timeEnd)\n * @static\n */\n timeEnd: function (...args) {\n return log('timeEnd', ...args);\n },\n /**\n * See [console.group](https://developer.mozilla.org/en-US/docs/Web/API/Console.group)\n * @static\n */\n group: function (...args) {\n return log('group', ...args);\n },\n /**\n * See [console.groupEnd](https://developer.mozilla.org/en-US/docs/Web/API/Console.groupEnd)\n * @static\n */\n groupEnd: function (...args) {\n return log('groupEnd', ...args);\n },\n /**\n * See [console.assert](https://developer.mozilla.org/en-US/docs/Web/API/Console.assert)\n * @static\n */\n assert: function (...args) {\n return log('assert', ...args);\n },\n /**\n * See [console.log](https://developer.mozilla.org/en-US/docs/Web/API/Console.log)\n * @static\n */\n log: function (...args) {\n return log('log', ...args);\n },\n /**\n * See [console.info](https://developer.mozilla.org/en-US/docs/Web/API/Console.info)\n * @static\n */\n info: function (...args) {\n return log('info', ...args);\n },\n /**\n * See [console.warn](https://developer.mozilla.org/en-US/docs/Web/API/Console.warn)\n * @static\n */\n warn: function (...args) {\n return log('warn', ...args);\n },\n /**\n * See [console.error](https://developer.mozilla.org/en-US/docs/Web/API/Console.error)\n * @static\n */\n error: function (...args) {\n return log('error', ...args);\n }\n};\n","import _ from './underscore-wrapper';\nimport StringUtil from './StringUtil';\n\nconst loc = StringUtil.localize;\nconst SchemaUtils = {\n STRING: 'string',\n NUMBER: 'number',\n INTEGER: 'integer',\n BOOLEAN: 'boolean',\n OBJECT: 'object',\n FORMATDISPLAYTYPE: {\n 'date-time': 'date',\n uri: 'uri',\n email: 'email',\n // TODO: settle on using EITHER underscores OR hyphens --- not both (OKTA-202818)\n 'country-code': 'country-code',\n 'language-code': 'language-code',\n 'country_code': 'country_code',\n 'language_code': 'language_code',\n locale: 'locale',\n timezone: 'timezone',\n 'ref-id': 'reference'\n },\n ARRAYDISPLAYTYPE: {\n arrayofobject: 'arrayofobject',\n arrayofstring: 'arrayofstring',\n arrayofnumber: 'arrayofnumber',\n arrayofinteger: 'arrayofinteger',\n 'arrayofref-id': 'arrayofref-id'\n },\n DISPLAYTYPES: {\n date: { type: 'string', format: 'date-time' },\n uri: { type: 'string', format: 'uri' },\n email: { type: 'string', format: 'email' },\n // TODO: Resolve inconsistencies in hyphens vs. underscores for these properties (OKTA-202818)\n // use country-code if attribute should be restricted to country code type\n 'country-code': { type: 'string', format: 'country-code' },\n 'language-code': { type: 'string', format: 'language-code' },\n 'country_code': { type: 'string' },\n 'language_code': { type: 'string' },\n locale: { type: 'string', format: 'locale' },\n timezone: { type: 'string', format: 'timezone' },\n string: { type: 'string' },\n number: { type: 'number' },\n boolean: { type: 'boolean' },\n integer: { type: 'integer' },\n reference: { type: 'string', format: 'ref-id' },\n arrayofobject: { type: 'array', items: { type: 'object' } },\n arrayofstring: { type: 'array', items: { type: 'string' } },\n arrayofnumber: { type: 'array', items: { type: 'number' } },\n arrayofinteger: { type: 'array', items: { type: 'integer' } },\n 'arrayofref-id': { type: 'array', items: { type: 'string', format: 'ref-id' } },\n image: { type: 'image' },\n password: { type: 'string' }\n },\n SUPPORTSMINMAX: ['string', 'number', 'integer', 'password'],\n SUPPORTENUM: [\n 'string',\n 'number',\n 'integer',\n 'object',\n 'arrayofstring',\n 'arrayofnumber',\n 'arrayofinteger',\n 'arrayofobject',\n ],\n DATATYPE: {\n string: 'string',\n number: 'number',\n boolean: 'boolean',\n integer: 'integer',\n date: 'datetime',\n object: 'object',\n arrayofobject: 'object array',\n arrayofstring: 'string array',\n arrayofnumber: 'number array',\n arrayofinteger: 'integer array',\n 'arrayofref-id': 'reference array',\n // TODO: settle on using EITHER underscores OR hyphens --- not both (OKTA-202818)\n 'country-code': 'country code',\n 'language-code': 'language code',\n 'country_code': 'country code',\n 'language_code': 'language code',\n reference: 'reference',\n timezone: 'timezone',\n image: 'image'\n },\n MUTABILITY: {\n READONLY: 'READ_ONLY',\n WRITEONLY: 'WRITE_ONLY',\n READWRITE: 'READ_WRITE',\n IMMUTABLE: 'IMMUTABLE'\n },\n SCOPE: {\n NONE: 'NONE',\n SELF: 'SELF',\n SYSTEM: 'SYSTEM'\n },\n DISPLAYSCOPE: {\n SELF: 'User personal',\n SYSTEM: 'System',\n NA: 'None'\n },\n UNION: {\n DISABLE: 'DISABLE',\n ENABLE: 'ENABLE'\n },\n UNION_OPTIONS: {\n DISABLE: loc('universal-directory.profiles.attribute.form.union.enable.display', 'courage'),\n ENABLE: loc('universal-directory.profiles.attribute.form.union.disable.display', 'courage')\n },\n PERMISSION: {\n HIDE: 'HIDE',\n READ_ONLY: 'READ_ONLY',\n WRITE_ONLY: 'WRITE_ONLY',\n READ_WRITE: 'READ_WRITE'\n },\n ENDUSER_ATTRIBUTE_PERMISSION_OPTIONS: {\n HIDE: loc('universal-directory.profiles.attribute.enduser.permission.hide', 'courage'),\n READ_ONLY: loc('universal-directory.profiles.attribute.enduser.permission.readonly', 'courage'),\n READ_WRITE: loc('universal-directory.profiles.attribute.enduser.permission.readwrite', 'courage')\n },\n ATTRIBUTE_LEVEL_MASTERING_OPTIONS: {\n INHERIT: loc('universal-directory.profiles.attribute.source.inherit', 'courage'),\n // eslint-disable-next-line @okta/okta/no-exclusive-language\n OKTA_MASTERED: loc('universal-directory.profiles.attribute.source.oktamastered', 'courage'),\n OVERRIDE: loc('universal-directory.profiles.attribute.source.override', 'courage')\n },\n USERNAMETYPE: {\n NONE: 'non-username',\n OKTA_TO_APP: 'okta-to-app-username',\n OKTA_TO_AD: 'okta-to-ad-username',\n APP_TO_OKTA: 'app-to-okta-username',\n IDP_TO_OKTA: 'idp-to-okta-username'\n },\n LOGINPATTERNFORMAT: {\n EMAIL: 'EMAIL',\n CUSTOM: 'CUSTOM',\n NONE: 'NONE'\n },\n UNIQUENESS: {\n NOT_UNIQUE: 'NOT_UNIQUE',\n PENDING_UNIQUENESS: 'PENDING_UNIQUENESS',\n UNIQUE_VALIDATED: 'UNIQUE_VALIDATED'\n },\n\n /*\n * Get a display string for a schema attribute type.\n * @param {String} type Type of an attribute\n * @param {String} format Format of an attribute\n * @param {String} itemType Item type of an attribute if an array\n * @param {String} defaultValue The default value if an attribute type is undefined\n * @return {String} the display value\n */\n getDisplayType: function (type, format, itemType, defaultValue?) {\n let displayType;\n\n // type is undefined for\n // - an un-mapped source attribute from mapping\n // - an source attribute which is mapped to username target attribute\n if (type) {\n // format is only defined for complicated types (ex. reference, date time, array)\n // not for simple types (ex. string, integer, boolean)\n if (format) {\n displayType = this.FORMATDISPLAYTYPE[format];\n } else {\n // itemType is only defined for array type\n // to specify an array element type (ex. string, integer, number)\n displayType = itemType ? this.ARRAYDISPLAYTYPE[type + 'of' + itemType] : type;\n }\n }\n if (!displayType) {\n displayType = typeof defaultValue === 'undefined' ? '' : defaultValue;\n }\n return displayType;\n },\n\n /*\n * Get attribute mapping source attribute username type\n * @param {String} mappingDirection\n * @param {String} targetName The mapping target attribute name\n * @param {String} appName The app name that's mapped to/from Okta\n * @return {String} the source attribute username type value\n */\n getSourceUsernameType: function (mappingDirection, targetName, appName) {\n let sourceUsernameType = this.USERNAMETYPE.NONE;\n /* eslint complexity: [2, 7] */\n\n if (mappingDirection === 'oktaToApp') {\n if (targetName === 'userName') {\n sourceUsernameType = this.USERNAMETYPE.OKTA_TO_APP;\n } else if (targetName === 'cn') {\n sourceUsernameType = this.USERNAMETYPE.OKTA_TO_AD;\n }\n } else if (mappingDirection === 'appToOkta' && targetName === 'login') {\n if (appName === 'saml_idp') {\n sourceUsernameType = this.USERNAMETYPE.IDP_TO_OKTA;\n } else {\n sourceUsernameType = this.USERNAMETYPE.APP_TO_OKTA;\n }\n }\n return sourceUsernameType;\n },\n\n isArrayDataType: function (type) {\n return _.contains(_.values(this.ARRAYDISPLAYTYPE), type);\n },\n\n isObjectDataType: function (type) {\n return this.DATATYPE.object === type;\n }\n};\nexport default SchemaUtils;\n","import _ from './underscore-wrapper';\nimport Model from '../models/Model';\n\nexport declare class SettingsModelClass extends Model {\n protected features: string[];\n hasFeature(featureName: string): boolean;\n hasAnyFeature(featureArray: string[]): boolean;\n hasPermission(permission: string): boolean;\n isDsTheme(): boolean;\n}\n\n/**\n * @class SettingsModel\n * @extends {Okta.Model}\n * @private\n */\nconst props = {\n local() {\n const settings = (window.okta && window.okta.settings) || {};\n const theme = (window.okta && window.okta.theme) || '';\n\n return {\n orgId: ['string', false, settings.orgId],\n orgName: ['string', false, settings.orgName],\n serverStatus: ['string', false, settings.serverStatus],\n persona: ['string', false, settings.persona],\n isDeveloperConsole: ['boolean', false, settings.isDeveloperConsole],\n isPreview: ['boolean', false, settings.isPreview],\n permissions: ['array', true, settings.permissions || []],\n theme: ['string', false, theme]\n };\n },\n\n constructor(this: SettingsModelClass) {\n Model.apply(this, arguments);\n this.features = window._features || [];\n },\n\n /**\n * Checks if the user have a feature flag enabled (Based of the org level feature flag)\n * @param {String} feature Feature name\n * @return {Boolean}\n */\n hasFeature(this: SettingsModelClass, feature) {\n return _.contains(this.features, feature);\n },\n\n /**\n * Checks if any of the given feature flags are enabled (Based of the org level feature flags)\n * @param {Array} featureArray Features names\n * @return {Boolean} true if any of the give features are enabled. False otherwise\n */\n hasAnyFeature(this: SettingsModelClass, featureArray) {\n return _.some(featureArray, this.hasFeature, this);\n },\n\n /**\n * Checks if the user have a specific permission (based on data passed from JSP)\n * @param {String} permission Permission name\n * @return {Boolean}\n */\n hasPermission(this: SettingsModelClass, permission) {\n return _.contains(this.get('permissions'), permission);\n },\n\n /**\n * Checks if the org has ds theme set\n * @return {Boolean}\n */\n isDsTheme(this: SettingsModelClass) {\n return this.get('theme') === 'dstheme';\n }\n};\n\nexport default Model.extend(props) as typeof SettingsModelClass;\n","import _ from './underscore-wrapper';\nimport Model from '../models/Model';\n\nexport declare class StateMachineClass extends Model {\n invoke():this;\n}\n/**\n * @class StateMachine\n * @extends Okta.Model\n * @private\n *\n * A state object that holds the applciation state\n */\n\nexport default Model.extend({\n\n /**\n * Invokes a method on the applicable {@link Okta.Controller}\n *\n * ```javascript\n * state.invoke('methodName', 'param1', 'param2')\n * // Will call\n * contoller.methodName('param1', 'param2')\n * ```\n * @param {String} methodName the name of the controller method to invoke on the controller\n */\n invoke(this: StateMachineClass) {\n const args = _.toArray(arguments);\n\n args.unshift('__invoke__');\n this.trigger.apply(this, args);\n }\n});\n","import $ from './jquery-wrapper';\nimport _ from './underscore-wrapper';\nimport Bundles from 'okta-i18n-bundles';\n\nconst entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': '\\'',\n ''': '\\'',\n '/': '/'\n};\nconst emailValidator = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@(?!-)((\\[?[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\]?)|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\n/**\n* Converts the locale code identifier from \"${languageCode}-${countryCode}\" to \"${languageCode}_${countryCode}\"\n* Follows the ISO-639-1 language code and 2-letter ISO-3166-1-alpha-2 country code structure.\n* @param {String} locale code identifier\n* @return {String} converted locale code identifier\n*/\nconst parseLocale = (locale) => {\n if (/-/.test(locale)) {\n const parts = locale.split('-');\n parts[1] = parts[1].toUpperCase();\n return parts.join('_');\n }\n return locale;\n};\n\n/* eslint max-len: 0*/\n\n/**\n * Returns the language bundle based on the current locale.\n * - If a locale is not provided, default to English ('en')\n * - Legacy Support: If the named language bundle does not exist, fall back to the default named bundle.\n *\n * @param {*} bundleName\n */\nfunction getBundle(bundleName?: string) {\n if (!bundleName) {\n return Bundles[_.keys(Bundles)[0]];\n }\n const locale = parseLocale((window && window.okta && window.okta.locale)) || 'en';\n return Bundles[`${bundleName}_${locale}`] || Bundles[bundleName];\n}\n\n/**\n *\n * CustomEvent polyfill for IE\n * https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent#polyfill\n */\n\nfunction IECustomEvent(event, params) {\n params = params || { bubbles: false, cancelable: false, detail: null };\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n}\n\n/**\n * Call the window.okta.emitL10nError function if it is defined\n * @param {String} key The i18n key\n * @param {String} bundleName The i18n bundle name\n * @param {String} reason Could be 'bundle' (Bundle not found), 'key' (Key not found) or 'parameters' (Parameters mismatch).\n */\nfunction emitL10nError(key, bundleName, reason) {\n // CustomEvent polyfill for IE\n if (!window.CustomEvent) {\n (window.CustomEvent as unknown) = IECustomEvent;\n }\n // dispatchEvent for sentry\n if (typeof window.CustomEvent === 'function') {\n const event = new CustomEvent('okta-i18n-error', {\n detail: {\n type: 'l10n-error',\n key: key,\n bundleName: bundleName,\n reason: reason\n }\n });\n document.dispatchEvent(event);\n }\n}\n\nconst StringUtil = /** @lends module:Okta.internal.util.StringUtil */ {\n /** @static */\n sprintf: function () {\n const args = Array.prototype.slice.apply(arguments);\n let value = args.shift();\n let oldValue = value;\n /* eslint max-statements: [2, 15] */\n\n function triggerError() {\n throw new Error('Mismatch number of variables: ' + arguments[0] + ', ' + JSON.stringify(args));\n }\n\n for (var i = 0, l = args.length; i < l; i++) {\n const entity = args[i];\n\n const regex = new RegExp('\\\\{' + i + '\\\\}', 'g');\n value = value.replace(regex, entity);\n if (entity === undefined || entity === null || value === oldValue) {\n triggerError();\n }\n oldValue = value;\n }\n\n if (/\\{[\\d+]\\}/.test(value)) {\n triggerError();\n }\n\n return value;\n },\n\n /**\n * Converts a URI encoded query string into a hash map\n * @param {String} query The query string\n * @return {Object} The map\n * @static\n * @example\n * StringUtil.parseQuery('foo=bar&baz=qux') // {foo: 'bar', baz: 'qux'}\n */\n parseQuery: function (query) {\n const params = {};\n const pairs = decodeURIComponent(query.replace(/\\+/g, ' ')).split('&');\n\n for (var i = 0; i < pairs.length; i++) {\n const pair = pairs[i];\n const data = pair.split('=');\n\n params[data.shift() as string] = data.join('=');\n }\n return params;\n },\n\n /** @static */\n encodeJSObject: function (jsObj) {\n return encodeURIComponent(JSON.stringify(jsObj));\n },\n\n /** @static */\n decodeJSObject: function (jsObj) {\n try {\n return JSON.parse(decodeURIComponent(jsObj));\n } catch (e) {\n return null;\n }\n },\n\n /** @static */\n unescapeHtml: function (string) {\n return String(string).replace(/&[\\w#\\d]{2,};/g, function (s) {\n return entityMap[s] || s;\n });\n },\n\n /**\n * Get the original i18n template directly without string format with parameters\n * @param {String} key The key\n * @param {String} bundle=\"messages\"] The name of the i18n bundle. Defaults to the first bundle in the list.\n */\n getTemplate: function (key, bundleName) {\n const bundle = getBundle(bundleName);\n if (!bundle) {\n emitL10nError(key, bundleName, 'bundle');\n return 'L10N_ERROR[' + bundleName + ']';\n }\n if (bundle[key]) {\n return bundle[key];\n } else {\n emitL10nError(key, bundleName, 'key');\n return 'L10N_ERROR[' + key + ']';\n }\n },\n\n /**\n * Translate a key to the localized value\n * @static\n * @param {String} key The key\n * @param {String} [bundle=\"messages\"] The name of the i18n bundle. Defaults to the first bundle in the list.\n * @param {Array} [params] A list of parameters to apply as tokens to the i18n value\n * @return {String} The localized value\n */\n localize: function (key, bundleName?, params?) {\n const bundle = getBundle(bundleName);\n /* eslint complexity: [2, 6] */\n\n if (!bundle) {\n emitL10nError(key, bundleName, 'bundle');\n return 'L10N_ERROR[' + bundleName + ']';\n }\n\n let value = bundle[key];\n\n try {\n params = params && params.slice ? params.slice(0) : [];\n params.unshift(value);\n value = StringUtil.sprintf.apply(null, params);\n if (value) {\n return value;\n } else {\n emitL10nError(key, bundleName, 'key');\n return 'L10N_ERROR[' + key + ']';\n }\n } catch (e) {\n emitL10nError(key, bundleName, 'parameters');\n return 'L10N_ERROR[' + key + ']';\n }\n },\n\n /**\n * Convert a string to a float if valid, otherwise return the string.\n * Valid numbers may contain a negative sign and a decimal point.\n * @static\n * @param {String} string The string to convert to a number\n * @return {String|Number} Returns a number if the string can be casted, otherwise returns the original string\n */\n parseFloat: function (string) {\n const number = +string;\n\n return typeof string === 'string' && number === parseFloat(string) ? number : string;\n },\n\n /**\n * Convert a string to an integer if valid, otherwise return the string\n * @static\n * @param {String} string The string to convert to an integer\n * @return {String|integer} Returns an integer if the string can be casted, otherwise, returns the original string\n */\n parseInt: function (string) {\n const int = +string;\n\n return _.isString(string) && int === parseInt(string, 10) ? int : string;\n },\n\n /**\n * Convert a string to an object if valid, otherwise return the string\n * @static\n * @param {String} string The string to convert to an object\n * @return {String|object} Returns an object if the string can be casted, otherwise, returns the original string\n */\n parseObject: function (string) {\n if (!_.isString(string)) {\n return string;\n }\n\n try {\n const object = JSON.parse(string);\n\n return $.isPlainObject(object) ? object : string;\n } catch (e) {\n return string;\n }\n },\n\n /**\n * Returns a random string from [a-z][A-Z][0-9] of a given length\n * @static\n * @param {Number} length The length of the random string.\n * @return {String} Returns a random string from [a-z][A-Z][0-9] of a given length\n */\n randomString: function (length) {\n const characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz';\n\n if (length === undefined) {\n length = _.random(characters.length);\n } else if (length === 0) {\n return '';\n }\n\n const stringArray: string[] = [];\n\n while (length--) {\n stringArray.push(characters[_.random(characters.length - 1)]);\n }\n return stringArray.join('');\n },\n\n /**\n * Returns if a str ends with another string\n * @static\n * @param {String} str The string to search\n * @param {String} ends The string it should end with\n *\n * @return {Boolean} Returns if the str ends with ends\n */\n endsWith: function (str, ends) {\n str += '';\n ends += '';\n return str.length >= ends.length && str.substring(str.length - ends.length) === ends;\n },\n\n /** @static */\n isEmail: function (str) {\n const target = $.trim(str);\n\n return !_.isEmpty(target) && emailValidator.test(target);\n }\n};\n\n/**\n * Handy utility functions to handle strings.\n *\n * @class module:Okta.internal.util.StringUtil\n * @hideconstructor\n */\n\nexport default StringUtil;\n","/* eslint @okta/okta-ui/no-specific-methods: 0 */\nimport Handlebars from 'handlebars';\nimport _ from './underscore-wrapper';\n\n/**\n * @class module:Okta.internal.util.TemplateUtil\n * @hideconstructor\n */\nexport default /** @lends module:Okta.internal.util.TemplateUtil */ {\n /**\n * Compiles a Handlebars template\n * @static\n * @method\n */\n // TODO: This will be deprecated at some point. Views should use pre-compiled templates\n tpl: _.memoize(function (tpl) {\n /* eslint @okta/okta-ui/no-specific-methods: 0 */\n return function (context) {\n return Handlebars.compile(tpl)(context);\n };\n })\n};\n","export default {\n DEBOUNCE_DELAY: 200,\n LOADING_FADE: 400,\n UNLOADING_FADE: 400,\n ROW_EXPANDER_TRANSITION: 150,\n HIDE_ADD_MAPPING_FORM: 300\n};\n","import _ from './underscore-wrapper';\nimport BaseView from '../views/BaseView';\n\nexport default {\n redirect: function (url) {\n window.location = url;\n },\n\n reloadPage: function () {\n window.location.reload();\n },\n\n constantError: function (errorMessage) {\n return function () {\n throw new Error(errorMessage);\n };\n },\n\n /**\n * Simply convert an URL query key value pair object into an URL query string.\n * Remember NOT to escape the query string when using this util.\n * example:\n * input: {userId: 123, instanceId: undefined, expand: 'schema,app'}\n * output: '?userId=123&expand=schema,app'\n */\n getUrlQueryString: function (queries) {\n _.isObject(queries) || (queries = {});\n\n const queriesString = _.without(\n _.map(queries, function (value, key) {\n if (value !== undefined && value !== null) {\n return key + '=' + encodeURIComponent(value);\n }\n }),\n undefined\n ).join('&');\n\n return _.isEmpty(queriesString) ? '' : '?' + queriesString;\n },\n\n isABaseView(obj) {\n return obj instanceof BaseView || obj.prototype instanceof BaseView || obj === BaseView;\n }\n};\n","import _ from './underscore-wrapper';\n\nfunction changeEventString(doWhen) {\n return 'change:' + _.keys(doWhen).join(' change:');\n}\n\nfunction calcDoWhen(value, key) {\n const modelValue = this.model.get(key);\n\n if (_.isFunction(value)) {\n return value.call(this, modelValue);\n } else {\n return value === modelValue;\n }\n}\n\ndeclare type ToggleFn = (options?) => any;\n\nfunction _doWhen(view, doWhen, fn) {\n const toggle: ToggleFn = _.bind(fn, view, view, doWhen);\n\n view.render = _.wrap(view.render, function (render) {\n const val = render.call(view);\n\n toggle({ animate: false });\n return val;\n });\n\n view.listenTo(view.model, changeEventString(doWhen), function () {\n toggle({ animate: true });\n });\n}\n\nexport default {\n applyDoWhen: function (view, doWhen, fn) {\n if (!(view.model && _.isObject(doWhen) && _.size(doWhen) && _.isFunction(fn))) {\n return;\n }\n _doWhen(view, doWhen, function (view, doWhen, options) {\n const result = _.every(_.map(doWhen, calcDoWhen, view));\n\n fn.call(view, result, options);\n });\n }\n};\n","// Handlebars \"wrapper\" is used by frontend code. It contains all helpers.\n// This runs in a browser / webpacked environment\n// TODO: Once all templates are precompiled, this file should use handlebars/runtime\n\n/* eslint @okta/okta-ui/no-specific-modules: 0 */\nimport Handlebars from 'handlebars'; // from vendor/lib\n\nimport './handlebars/handle-url';\nimport './handlebars/helper-base64';\nimport './handlebars/helper-date';\nimport './handlebars/helper-i18n';\nimport './handlebars/helper-img';\nimport './handlebars/helper-markdown';\nimport './handlebars/helper-xsrfTokenInput';\n\nexport default Handlebars;\n","import Handlebars from 'handlebars';\n\nconst clonedEscapeExpression = Handlebars.Utils.escapeExpression;\n\nHandlebars.Utils.escapeExpression = function (string) {\n return clonedEscapeExpression(string).replace(/=/g, '=');\n};\n\nexport default Handlebars;\n","/* eslint @okta/okta-ui/no-specific-modules: 0 */\nimport Handlebars from 'handlebars';\n\n// Display a base 64 encoded data (e.g. certificate signature) in a nicely formatted hex format.\nHandlebars.registerHelper('base64ToHex', function base64ToHex(base64String) {\n const raw = atob(base64String);\n let result = '';\n if (raw.length > 0) {\n const firstHex = raw.charCodeAt(0).toString(16);\n result += (firstHex.length === 2 ? firstHex : `0${firstHex}`);\n for (let i = 1; i < raw.length; i += 1) {\n let hex = raw.charCodeAt(i).toString(16);\n hex = hex.length === 2 ? hex : `0${hex}`;\n result += ` ${hex}`;\n }\n }\n return result.toUpperCase();\n});\n\nexport default Handlebars;\n","/* eslint @okta/okta-ui/no-specific-modules: 0, max-params: 0, max-statements: 0 */\nimport Handlebars from 'handlebars';\nimport moment from 'moment';\nimport _ from '../underscore-wrapper';\n\nfunction formatDate(format, dateInISOString) {\n return moment\n .utc(dateInISOString)\n .utcOffset('-07:00')\n .format(format);\n}\n\nHandlebars.registerHelper('shortDate', _.partial(formatDate, 'MMM Do'));\nHandlebars.registerHelper('mediumDate', _.partial(formatDate, 'MMMM DD, YYYY'));\nHandlebars.registerHelper('longDate', _.partial(formatDate, 'MMMM DD, YYYY, h:mma'));\nHandlebars.registerHelper('formatDate', formatDate);\n\nexport default Handlebars;\n","/* eslint @okta/okta-ui/no-specific-modules: 0 */\nimport Handlebars from 'handlebars';\nimport _ from '../underscore-wrapper';\nimport Logger from '../Logger';\nimport StringUtil from '../StringUtil';\n\nconst hbsEscape = Handlebars.Utils.escapeExpression;\n\nfunction trim(str) {\n return str && str.replace(/^\\s+|\\s+$/g, '');\n}\n\nfunction replaceTagsWithPlaceholders(source, tag, tagValue) {\n const escapedBeginningTag = hbsEscape(`<${tag}>`);\n const escapedEndTag = hbsEscape(``);\n\n const [beginningTag, endTag] = tagValue.split(tag);\n\n if (!source.includes(escapedBeginningTag) && !source.includes(escapedEndTag)) {\n throw Error(`Parsed tag \"${tag}\" is not present in \"${source}\"`);\n } else if (!tagValue.includes(tag)) {\n throw Error(`Parsed tag \"${tag}\" is not present in \"${tagValue}\"`);\n } else if (!beginningTag || !endTag) {\n throw Error(`Template value \"${tagValue}\" must contain beginning and closing tags`);\n }\n\n return source\n .replace(escapedBeginningTag, beginningTag)\n .replace(escapedEndTag, endTag);\n}\n\n/* eslint max-statements: [2, 18] */\nHandlebars.registerHelper('i18n', function i18n(options) {\n let params;\n const key = trim(options.hash.code);\n const bundle = trim(options.hash.bundle);\n const args = trim(options.hash.arguments);\n\n const tags = Object.keys(options.hash)\n .filter((prop) => prop.match(/^\\$\\d+/))\n .map((prop) => ({ tag: prop, value: options.hash[prop] }));\n\n if (args) {\n params = _.map(\n trim(args).split(';'),\n function mapParam(param) {\n param = trim(param);\n let val;\n\n /*\n * the context(data) may be a deep object, ex {user: {name: 'John', gender: 'M'}}\n * arguments may be 'user.name'\n * return data['user']['name']\n */\n _.each(param.split('.'), (p) => {\n val = val ? val[p] : this[p];\n });\n return val;\n },\n this,\n );\n }\n\n const localizedValue = StringUtil.localize(key, bundle, params);\n\n if (tags.length < 1) {\n // No HTML tags provided - return the localized and escaped string\n return localizedValue;\n }\n\n let escapedString = hbsEscape(localizedValue);\n try {\n tags.forEach((tag) => {\n escapedString = replaceTagsWithPlaceholders(escapedString, tag.tag, tag.value);\n });\n return new Handlebars.SafeString(escapedString);\n } catch (err) {\n Logger.error(err.toString());\n return localizedValue;\n }\n});\n\nexport default Handlebars;\n","/* eslint @okta/okta-ui/no-specific-modules: 0 */\nimport Handlebars from 'handlebars';\nimport _ from '../underscore-wrapper';\n\nconst CACHE_BUST_URL_PREFIX = '/assets';\n\nfunction prependCachebustPrefix(path) {\n if (path.indexOf(CACHE_BUST_URL_PREFIX) === 0) {\n return path;\n }\n return CACHE_BUST_URL_PREFIX + path;\n}\n\nHandlebars.registerHelper('img', function img(options) {\n const cdn = (typeof okta !== 'undefined' && okta.cdnUrlHostname) || '';\n\n const hash = _.pick(options.hash, ['src', 'alt', 'width', 'height', 'class', 'title']);\n\n hash.src = `${cdn}${prependCachebustPrefix(hash.src)}`;\n\n const attrs = _.map(hash, (value, attr) => {\n const encodedValue = attr === 'src' ? encodeURI(value) : Handlebars.Utils.escapeExpression(value);\n return `${attr}=\"${encodedValue}\"`;\n });\n\n return new Handlebars.SafeString(``);\n});\n\nexport default Handlebars;\n","/* eslint @okta/okta-ui/no-specific-modules: 0 */\nimport Handlebars from 'handlebars';\nimport markdownToHtml from '../markdownToHtml';\n\nHandlebars.registerHelper('markdown', function markdown(mdText) {\n return markdownToHtml(Handlebars, mdText);\n});\n\nexport default Handlebars;\n","/* eslint @okta/okta-ui/no-specific-modules: 0 */\nimport Handlebars from 'handlebars';\nimport $ from '../jquery-wrapper';\n\nHandlebars.registerHelper('xsrfTokenInput', function xsrfTokenInput() {\n return new Handlebars.SafeString(\n ``,\n );\n});\n\nexport default Handlebars;\n","/* eslint-disable @okta/okta-ui/enforce-requirejs-names, @okta/okta-ui/no-specific-modules */\nimport $ from 'jquery';\n\nexport interface OktaJQuery extends JQuery {\n scrollParent(includeHidden?: boolean): JQuery; // from jquery-ui\n}\n\n// src/vendor/lib/jquery.browser.js\nexport interface OktaJQueryBrowserPlugin {\n msie: boolean;\n opera: boolean;\n chrome: boolean;\n safari: boolean;\n mozilla: boolean;\n platform: 'ipad' | 'iphone' | 'android' | 'windowsPhone';\n mac: boolean;\n versionNumber: number;\n}\nexport interface OktaJQueryStatic extends JQueryStatic {\n (\n selector: JQuery.Selector,\n context?: Element | Document | JQuery | JQuery.Selector\n ): OktaJQuery;\n fn: OktaJQuery;\n\n // Make sure you import following in order to use the 'browser' object\n // `import @okta/courage/src/vendor/plugins/jquery.browser`;\n // TODO: create a jquery.browser wrapper which could extend OktaJQueryStatic\n browser: OktaJQueryBrowserPlugin;\n}\n\n$.ajaxSetup({\n beforeSend: function (xhr) {\n xhr.setRequestHeader('X-Okta-XsrfToken', $('#_xsrfToken').text());\n },\n converters: {\n 'text secureJSON': function (str) {\n if (str.substring(0, 11) === 'while(1){};') {\n str = str.substring(11);\n }\n return JSON.parse(str);\n }\n }\n});\n\n// Selenium Hook\n// Widget such as autocomplete and autosuggest needs to be triggered from the running version of jQuery.\n// We have 2 versions of jQuery running in parallel and they don't share the same events bus\n\nconst oktaJQueryStatic = $ as OktaJQueryStatic;\nwindow.jQueryCourage = oktaJQueryStatic;\nexport default oktaJQueryStatic;\n","// Simple \"markdown parser\" - just handles markdown formatted links. If we\n// find that we need more extensive markdown support, we should include\n// a fully formulated markdown library like:\n// https://github.com/evilstreak/markdown-js\nimport _ from './underscore-wrapper';\n\nconst RE_LINK = /\\[[^\\]]*\\]\\([^)]*\\)/gi;\nconst RE_LINK_HREF = /\\]\\(([^)]*)\\)/i;\nconst RE_LINK_TEXT = /\\[([^\\]]*)\\]/i;\nconst RE_LINK_JS = /javascript:/gi;\n\n// Converts links\n// FROM:\n// [some link text](http://the/link/url)\n// TO:\n// some link text\nexport default function mdToHtml(Handlebars, markdownText) {\n // TODO: use precompiled templates OKTA-309852\n // eslint-disable-next-line @okta/okta-ui/no-bare-templates\n const linkTemplate = Handlebars.compile('{{text}}');\n /* eslint @okta/okta-ui/no-specific-methods: 0*/\n\n let res;\n\n if (!_.isString(markdownText)) {\n res = '';\n } else {\n res = Handlebars.Utils.escapeExpression(markdownText)\n .replace(RE_LINK_JS, '')\n .replace(RE_LINK, function (mdLink) {\n return linkTemplate({\n href: mdLink.match(RE_LINK_HREF)[1],\n text: mdLink.match(RE_LINK_TEXT)[1]\n });\n });\n }\n return new Handlebars.SafeString(res);\n}\n","/* eslint @okta/okta-ui/no-specific-methods: 0, @okta/okta-ui/no-specific-modules: 0 */\nimport Handlebars from 'handlebars';\nimport _ from 'underscore';\n\nexport interface OktaUnderscore extends _.UnderscoreStatic {\n resultCtx: (object, property, context?, defaultValue?) => any;\n isInteger: (value) => boolean;\n template: (source, data) => _.CompiledTemplate;\n}\n\n_.mixin({\n resultCtx: function (object, property, context, defaultValue) {\n let value = _.isObject(object) ? object[property] : void 0;\n\n if (_.isFunction(value)) {\n value = value.call(context || object);\n }\n if (value) {\n return value;\n } else {\n return !_.isUndefined(defaultValue) ? defaultValue : value;\n }\n },\n\n isInteger: function (x) {\n return _.isNumber(x) && x % 1 === 0;\n },\n\n // TODO: This will be deprecated at some point. Views should use precompiled templates\n // eslint-disable-next-line @okta/okta-ui/no-bare-templates\n template: function (source, data?): _.CompiledTemplate | string {\n const template = Handlebars.compile(source);\n\n if (data) {\n return template(data);\n }\n const fn = function (data) {\n return template(data);\n };\n fn.source = ''; // to conform with \"CompiledTemplate\" type definition\n return fn;\n }\n});\n\nconst oktaUnderscore: OktaUnderscore = _ as OktaUnderscore;\nexport default oktaUnderscore;\n","import Backbone from 'backbone';\nimport _ from '../util/underscore-wrapper';\nimport View, {\n FrameworkViewOptions\n} from '../framework/View';\nimport TemplateUtil from '../util/TemplateUtil';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface BaseViewOptions extends FrameworkViewOptions { }\n\nexport interface ConfirmOption {\n title: string;\n content: string;\n save?: () => void;\n ok?: () => void;\n cancel?: () => void;\n}\n\nexport declare class BaseViewClass extends View {\n constructor(options?: BaseViewOptions, ...rest: any[]);\n empty(): this;\n broadcast(...args: any[]): this;\n listen(name, fn): this;\n notify(level, message, options): this;\n confirm(subtitle: string, okfn): this;\n confirm(confirmOption: ConfirmOption): this;\n confirm(title, message, okfn, cancelfn): this;\n alert(params): this;\n module?: { id: string };\n decorate(TargetView): TargetView is BaseViewClass;\n}\nconst eventBus = _.clone(Backbone.Events);\n\n// add `broadcast` and `listen` functionality to all views\n// We use one event emitter per all views\n// This means we need to be very careful with event names\n\nconst proto = {\n constructor: function (options: BaseViewOptions, ...rest: any[]) {\n View.call(this, options, ...rest);\n this.module && this.$el.attr('data-view', this.module.id);\n },\n\n /**\n * @deprecated Use {@link #removeChildren}\n */\n empty: function (this: BaseViewClass) {\n return this.removeChildren();\n },\n\n compileTemplate: TemplateUtil.tpl,\n\n /**\n *\n * Broadcasts a global event that all views and controllers can subscribe to\n * for framework use only - prefer using a shared model\n *\n * @param {String} eventName A unique identifier for the event\n * @param {...String} param Parameter to pass with the event (can pass more than one parameter)\n * @deprecated For internal use only\n * @private\n */\n broadcast: function () {\n eventBus.trigger.apply(eventBus, arguments);\n return this;\n },\n\n /**\n * Subscribe to broadcast events\n * for framework use only - prefer using a shared model\n *\n * @param {String} eventName The event identifier to subscribe\n * @param {Function} fn The callback function to invoke\n * @deprecated For internal use only\n * @private\n */\n listen: function (this: BaseViewClass, name, fn): BaseViewClass {\n eventBus.off(name, fn);\n this.listenTo(eventBus, name, fn);\n return this;\n },\n\n /**\n * Shows a notification box\n * @param {String} level success / warning / error\n * @param {String} message The message to display\n * @param {Object} [options]\n * @param {Number} [options.width] Set a custom width\n * @param {String} [options.title] Set a custom title\n * @param {Boolean} [options.hide=true] Do we want to auto-hide this notification?\n * @param {Boolean} [options.dismissable] Show a dismiss button\n * @example\n * view.notify('success', 'Group created successfully');\n */\n notify: function (this: BaseViewClass, level, message, options) {\n this.broadcast('notification', _.defaults({ message: message, level: level }, options));\n return this;\n },\n\n /**\n * Shows a confirmation dialog\n *\n * Uses https://www.ericmmartin.com/projects/simplemodal/.\n * If you want to configure the simplemodal options use ConfirmationDialog instead.\n *\n * The main difference between this and the native javascript `confirm` method\n * Is this method is non blocking (note the callback pattern).\n *\n * The callback function will run in the context (`this`) of the invoking view.\n *\n * @param {String} [title] The title of the confirmation dialog\n * @param {String} [message] The message of the confirmation dialog\n * @param {Function} [okfn] The callback to run when the user hits \"OK\" (runs in the context of the invoking view)\n * @param {Function} [cancelfn] The callback to run when the user hits \"Cancel\"\n * (runs in the context of the invoking view)\n * @example\n * view.confirm('Delete Group', 'Are you sure you want to delete the selected group?', function () {\n * model.destroy();\n * });\n *\n * // title will be auto-set to \"Okta\"\n * view.confirm('Are you sure you want to delete the selected group?', function () {\n * model.destroy();\n * });\n *\n * view.confirm({\n * title: 'Delete Group', //=> Modal title\n * subtitle: 'Are you sure you want to delete the selected group?', //=> Modal subtitle\n * content: '

    THIS WILL DELETE THE GROUP!

    ', //=> A template or a view to add to the modal\n * save: 'Delete Group', //=> Button label\n * ok: _.bind(model.save, model) // Callback function on hitting \"ok\" button\n * cancel: 'Cancel', //=> Button label\n * cancelFn: _.bind(model.destroy, model) // Callback function on hitting \"cancel\" button\n * });\n */\n confirm: function (this: BaseViewClass, title, message?, okfn?, cancelfn?) {\n let options;\n /* eslint max-statements: [2, 12] */\n\n if (typeof title === 'object') {\n options = title;\n } else {\n // eslint-disable-next-line no-lonely-if\n if (arguments.length === 2 && _.isFunction(message)) {\n options = {\n title: 'Okta', // eslint-disable-line @okta/okta/no-unlocalized-text\n subtitle: title,\n ok: message\n };\n } else {\n options = {\n title: title,\n subtitle: message,\n ok: okfn,\n cancelFn: cancelfn\n };\n }\n }\n if (_.isFunction(options.ok)) {\n options.ok = _.bind(options.ok, this);\n }\n if (_.isFunction(options.cancelFn)) {\n options.cancelFn = _.bind(options.cancelFn, this);\n }\n this.broadcast('confirmation', options);\n return this;\n },\n\n /**\n * Shows an alert box\n *\n * The main difference between this and the native javascript `alert` method\n * Is this method is non blocking.\n *\n * @param {String} message The message\n * @example\n * view.alert('Mission complete');\n */\n alert: function (params) {\n if (_.isString(params)) {\n params = {\n subtitle: params\n };\n }\n this.confirm(\n _.extend({}, params, {\n noCancelButton: true\n })\n );\n return this;\n }\n};\n\n/**\n * See {@link src/framework/View} for more detail and examples from the base class.\n * @class module:Okta.View\n * @extends src/framework/View\n */\n\n/** @lends module:Okta.View.prototype */\n\nexport default View.extend(\n proto,\n /** @lends View.prototype */ {\n /** @method */\n decorate: function (TargetView) {\n const BaseViewView = TargetView.extend({});\n\n _.defaults(BaseViewView.prototype, proto);\n return BaseViewView;\n }\n }\n) as typeof BaseViewClass;\n","import _ from '../../util/underscore-wrapper';\nimport Time from '../../util/Time';\nimport BaseView from '../BaseView';\nimport hbs from 'handlebars-inline-precompile';\n\nfunction getOption(callout, option) {\n return _.resultCtx(callout.options, option, callout) || _.result(callout, option);\n}\n\nfunction getTopClass(callout) {\n let klass = 'infobox clearfix infobox-' + getOption(callout, 'type');\n\n switch (getOption(callout, 'size')) {\n case 'standard':\n klass += '';\n break;\n case 'slim':\n klass += ' infobox-slim';\n break;\n case 'compact':\n klass += ' infobox-compact';\n break;\n case 'large':\n klass += ' infobox-md';\n break;\n }\n if (getOption(callout, 'dismissible')) {\n klass += ' infobox-dismiss';\n }\n return klass;\n}\n\nconst events = {\n 'click .infobox-dismiss-link': function (e) {\n e.preventDefault();\n this.$el.fadeOut(Time.UNLOADING_FADE, () => {\n this.trigger('dismissed');\n this.remove();\n });\n }\n};\nconst template = hbs('\\\n {{#if dismissible}}\\\n \\\n \\\n \\\n {{/if}}\\\n \\\n {{#if title}}

    {{title}}

    {{/if}}\\\n {{#if subtitle}}

    {{subtitle}}

    {{/if}}\\\n {{#if bullets}}\\\n
      \\\n {{#each bullets}}
    • {{this}}
    • {{/each}}\\\n
    \\\n {{/if}}\\\n ');\nconst CalloutCallout = BaseView.extend(\n /** @lends src/views/components/Callout.prototype */ {\n attributes: {\n 'data-se': 'callout'\n },\n\n /**\n * Custom HTML or view to inject to the callout\n * @type {String|Okta.View}\n */\n content: null,\n\n /**\n * Size of icon. options are standard, large, compact\n * @type {String}\n */\n size: 'standard',\n\n /**\n * Type of the callout. Valid values are: info, success, warning, error, tip\n * @type {String}\n */\n type: 'info',\n\n /**\n * Can the callout be dismissed\n * @type {Boolean}\n */\n dismissible: false,\n\n /**\n * Callout title\n * @type {String}\n */\n title: null,\n\n /**\n * Callout subtitle\n * @type {String}\n */\n subtitle: null,\n\n /**\n * Array of strings to render as bullet points\n * @type {Array}\n */\n bullets: null,\n\n /**\n * Fired after the callout is dismised - applies when\n * {@link module:Okta.internal.views.components.Callout|dismissible} is set to true\n * @event src/views/components/Callout#dismissed\n */\n\n constructor: function () {\n this.events = _.defaults(this.events || {}, events);\n\n BaseView.apply(this, arguments);\n\n this.$el.addClass(getTopClass(this));\n\n this.template = template;\n\n const content = getOption(this, 'content');\n\n if (content) {\n this.add(content);\n }\n },\n\n getTemplateData: function () {\n let icon = getOption(this, 'type');\n\n const size = getOption(this, 'size');\n if (icon === 'tip') {\n // css is inconsistent\n icon = 'light-bulb';\n }\n switch (size) {\n case 'slim':\n icon = '';\n break;\n case 'large':\n icon = [icon, '-', '24'].join('');\n break;\n default:\n icon = [icon, '-', '16'].join('');\n }\n return {\n icon,\n title: getOption(this, 'title'),\n subtitle: getOption(this, 'subtitle'),\n bullets: getOption(this, 'bullets'),\n dismissible: getOption(this, 'dismissible')\n };\n }\n }\n);\n\n/**\n * @class src/views/components/Callout\n * @extends module:Okta.View\n */\n\n/**\n * @class module:Okta.internal.views.components.Callout\n */\nexport default /** @lends module:Okta.internal.views.components.Callout */ {\n /**\n * Creates a {@link src/views/components/Callout|Callout}.\n * @static\n * @param {Object} options\n * @param {String|Function} [options.size] Size of icon. options are standard, large, compact, slim\n * @param {String|Okta.View} [options.content] Custom HTML or view to inject to the callout\n * @param {String|Function} [options.title] Callout title\n * @param {String|Function} [options.subtitle] Callout subtitle\n * @param {Array|Function} [options.bullets] Array of strings to render as bullet points\n * @param {Boolean|Function} [options.dismissible] Can the callout be dismissed\n * @param {String|Function} [options.type] Callout type. Valid values are: info, success, warning, error, tip\n *\n * @return {src/views/components/Callout}\n */\n create: function (options) {\n return new CalloutCallout(options);\n }\n};\n","import $ from '../../util/jquery-wrapper';\nimport _ from '../../util/underscore-wrapper';\nimport StringUtil from '../../util/StringUtil';\nimport BaseView from '../BaseView';\nimport ReadModeBar from './components/ReadModeBar';\nimport Toolbar from './components/Toolbar';\nimport ErrorBanner from './helpers/ErrorBanner';\nimport ErrorParser, { ErrorResponse } from './helpers/ErrorParser';\nimport FormUtil from './helpers/FormUtil';\nimport {\n ContainerOptions, InputOptions, LabelOptions, WrapperOptions\n} from './types';\nimport InputContainer from './helpers/InputContainer';\nimport InputFactory from './helpers/InputFactory';\nimport InputLabel from './helpers/InputLabel';\nimport InputWrapper from './helpers/InputWrapper';\nimport SettingsModel from '../../util/SettingsModel';\nimport hbs from 'handlebars-inline-precompile';\nimport { _Result } from 'backbone';\n\ntype ButtonOrder = 'previous' | 'save' | 'cancel';\n\nexport declare class BaseFormConstructor extends BaseView {\n input: any[];\n\n template: any;\n\n read: boolean;\n\n readOnly: boolean;\n\n noButtonBar: boolean;\n\n noCancelButton: boolean;\n\n noSubmitButton: boolean;\n\n buttonOrder: ButtonOrder[];\n\n save: string | null;\n\n cancel: string | null;\n\n danger: _Result;\n\n layout: _Result;\n\n step: number;\n\n totalSteps: number;\n\n title: string | null;\n\n subtitle: string | null;\n\n autoSave: boolean;\n\n scrollOnError: _Result;\n\n showErrors: _Result;\n\n resizeSelector: string;\n getAttribute(name, defaultValue?);\n hasReadMode(): boolean;\n isReadOnly(): boolean;\n hasButtonBar(): boolean;\n\n isValid(): boolean;\n __setSavingState();\n __clearSavingState();\n __toggleToolbar();\n __save();\n __cancel();\n __previous();\n __applyMode();\n _editMode();\n\n parseErrorMessage();\n _handleErrorScroll();\n __showErrors();\n clearErrors();\n toggle();\n __addLayoutItem();\n __addNonInputLayoutItem();\n addButton();\n addDivider();\n addSectionTitle();\n addInput(options: any);\n __createInput();\n __createWrapper();\n __createLabel();\n _createContainer();\n __saveModelState();\n add();\n focus();\n disable();\n enable();\n contentHeight();\n getInputs();\n __createToolbar();\n}\n\nconst template = hbs`\n {{#if hasReadMode}}\n

    \n {{title}}\n

    \n {{/if}}\n
    \n {{#unless hasReadMode}}\n {{#if title}}\n

    {{title}}

    \n {{/if}}\n {{/unless}}\n {{#if subtitle}}\n

    {{subtitle}}

    \n {{/if}}\n
    \n
    \n
    \n `;\n\nconst sectionTitleTemplate = hbs`

    {{title}}

    `;\n\nconst pointerEventsSupported = $('
    ').css({ 'pointer-events': 'auto' })[0].style.pointerEvents === 'auto';\n\n// polyfill for `pointer-events: none;` in IE < 11\n// Logic borrowed from https://github.com/kmewhort/pointer_events_polyfill (BSD)\n\nfunction pointerEventsPolyfill(e) {\n if (!pointerEventsSupported && this.$el.hasClass('o-form-saving')) {\n const $el = $(e.currentTarget);\n\n $el.css('display', 'none');\n const underneathElem = document.elementFromPoint(e.clientX, e.clientY);\n\n $el.css('display', 'block');\n\n e.target = underneathElem;\n $(underneathElem!).trigger(e);\n\n return false;\n }\n}\n\nconst events = {\n submit: function (e) {\n e.preventDefault();\n this.__save();\n }\n};\n\n_.each(['click', 'dblclick', 'mousedown', 'mouseup'], function (event) {\n events[event + ' .o-form-input'] = pointerEventsPolyfill;\n});\n\nconst attributes = function (model) {\n model || (model = {});\n const collection = (model && model.collection) || {};\n\n return {\n method: 'POST',\n action: _.result(model, 'urlRoot') || _.result(collection, 'url') || window.location.pathname,\n 'data-se': 'o-form',\n slot: 'content'\n };\n};\n\nconst convertSavingState = function (rawSavingStateEvent, defaultEvent) {\n rawSavingStateEvent || (rawSavingStateEvent = '');\n let savingStateEvent: string[] = [];\n\n if (_.isString(rawSavingStateEvent)) {\n savingStateEvent = rawSavingStateEvent.split(' ');\n }\n savingStateEvent = _.union(savingStateEvent, defaultEvent);\n return savingStateEvent.join(' ');\n};\n\nconst getErrorSummary = function (responseJSON: ErrorResponse = {}) {\n if (Array.isArray(responseJSON.errorCauses) && responseJSON.errorCauses.length > 0) {\n //set errorSummary from first errorCause which is not field specific error\n return responseJSON.errorCauses[0].errorSummary;\n } else {\n //set errorSummary from top level errorSummary\n return responseJSON.errorSummary;\n }\n};\n/**\n * A Form utility framework\n *\n * Okta.Form is a form that operates on one flat model\n * It exposes one main factory method, {@link module:Okta.Form#addInput|addInput}, which add inputs to the form,\n * and each input operates on one field in the model, identified by the `name` field.\n *\n * See:\n * [Basic O-Form Tutorial](https://github.com/okta/courage/wiki/Basic-O-Form)\n *\n * @class module:Okta.Form\n * @extends module:Okta.View\n * @param {Object} options options hash (See {@link module:Okta.View|View})\n * @param {Object} options.model the model this form operates on\n * @param {Boolean} [options.label-top=false] position label on top of inputs\n * @param {Boolean} [options.wide=false] Use a wide input layout for all input\n */\n\n/**\n * Fired when the \"Save\" button is clicked\n * @event module:Okta.Form#save\n * @param {module:Okta.Model} model Model used in the form\n */\n\n/**\n * Fired after the model is successfully saved - applies when {@link module:Okta.Form#autoSave|autoSave}\n * is set to true\n * @event module:Okta.Form#saved\n * @param {module:Okta.Model} model Model used in the form\n */\n\n/**\n * Fired when the model fires an invalid event or an error event;\n * @event module:Okta.Form#error\n * @param {module:Okta.Model} model Model used in the form\n */\n\n/**\n * Fired when the form layout is likely to be resized\n * @event module:Okta.Form#resize\n * @param {module:Okta.Model} model Model used in the form\n */\n\n/**\n * Fired when the \"Cancel\" button is clicked\n * @event module:Okta.Form#cancel\n */\n\nexport default BaseView.extend(\n /** @lends module:Okta.Form.prototype */ {\n /**\n * Specifies how to validate form:\n * - In case \"local\" string provided as a value of the property,\n * the form will validate only fields added as inputs to the form;\n * - In case array is provided, the validation will be performed only for fields specified in array;\n * - In case function is provided, provided function will be used as a validation function,\n * it must return an error object with the format {fieldName: 'error text'} with as many fields as you need.\n * @name validate\n * @memberof module:Okta.Form\n * @type {String|Array|Function}\n * @instance\n */\n\n constructor: function (options) {\n /* eslint max-statements: 0, complexity: 0 */\n options || (options = {});\n this.options = options;\n\n if (options.settings) {\n this.settings = options.settings;\n } else {\n this.settings = options.settings = new SettingsModel();\n }\n\n this.id = _.uniqueId('form');\n this.tagName = 'form';\n\n _.defaults(this.events, events);\n _.defaults(this.attributes, attributes(options.model));\n\n this.__buttons = [];\n this.__errorFields = {};\n\n this.__saveModelState(options.model);\n\n const step = _.result(this, 'step');\n if (step) {\n // checking exists of `this.save` hence don't have to change to\n // `_.result(this, 'save')` which will execute the function and\n // is not the intent.\n if (!this.save) {\n const totalStep = _.result(this, 'totalSteps');\n this.save = (\n (!totalStep || step === totalStep)\n ? StringUtil.localize('oform.button.finish', 'courage')\n : StringUtil.localize('oform.button.next', 'courage')\n );\n }\n this.className = _.result(this, 'className') + ' wizard';\n }\n this.className = _.result(this, 'className') + ' o-form';\n\n this.__toolbar = this.__createToolbar(options);\n\n BaseView.call(this, options);\n\n _.each(\n _.result(this, 'inputs') || [],\n function (input) {\n // to ingore extra argumests from `each` iteratee function\n // http://underscorejs.org/#each\n this.__addLayoutItem(input);\n },\n this\n );\n\n this.add(this.__toolbar, '');\n\n // NOTES: this.model shall be initialized after calling\n // super (BaseView.call(this, options)) above.\n //\n this.listenTo(this.model, 'change:__edit__', this.__applyMode);\n\n this.listenTo(\n this.model,\n 'invalid error',\n _.throttle(\n function (model, resp, showBanner) {\n this.__showErrors(model, resp, showBanner !== false);\n },\n 100,\n { trailing: false }\n )\n );\n\n this.listenTo(this.model, 'form:resize', function () {\n this.trigger('resize');\n });\n\n this.listenTo(this.model, 'form:cancel', _.throttle(this.__cancel, 100, { trailing: false }));\n this.listenTo(this.model, 'form:previous', _.throttle(this.__previous, 100, { trailing: false }));\n\n this.__save = _.throttle(this.__save, 200, { trailing: false });\n this.listenTo(this.model, 'form:save', function () {\n this.$el.submit();\n });\n\n this.listenTo(this.model, 'sync', function () {\n if (this.model.get('__edit__')) {\n this.model.set('__edit__', false, { silent: true });\n }\n this.__saveModelState(this.model);\n this.render();\n });\n\n let hasSavingState = this.getAttribute('hasSavingState');\n\n if (this.getAttribute('autoSave')) {\n this.listenTo(this, 'save', function (model) {\n const xhr = model.save();\n\n if (xhr && xhr.done) {\n xhr.done(() => {\n this.trigger('saved', model);\n });\n }\n });\n if (_.isUndefined(hasSavingState)) {\n hasSavingState = true;\n }\n }\n\n /*\n * Attach model event listeners\n * by default, model's request event starts the form saving state,\n * error and sync event stops it\n * you can define customized saving start and stop state, like\n * customSavingState: {start: 'requestingAdditionalInfo', stop: 'retrievedAdditionalInfo'}\n * doing this does not override the default events\n */\n if (hasSavingState) {\n const customSavingState = this.getAttribute('customSavingState', {});\n\n this.listenTo(\n this.model,\n convertSavingState(customSavingState.start || '', ['request']),\n this.__setSavingState\n );\n this.listenTo(\n this.model,\n convertSavingState(customSavingState.stop || '', ['error', 'sync']),\n this.__clearSavingState\n );\n }\n },\n\n /**\n * Create the bottom button bar\n * @param {Object} options options h\n * @return {Okta.View} The toolbar\n * @private\n */\n __createToolbar: function (options) {\n const danger = this.getAttribute('danger');\n const saveBtnClassName = danger === true ? 'button-error' : 'button-primary';\n const step = _.result(this, 'step');\n const toolbar = new Toolbar(\n _.extend(\n {\n save: this.save || StringUtil.localize('oform.save', 'courage'),\n saveId: this.saveId,\n saveClassName: saveBtnClassName,\n cancel: this.cancel || StringUtil.localize('oform.cancel', 'courage'),\n noCancelButton: this.noCancelButton || false,\n noSubmitButton: this.noSubmitButton || false,\n buttonOrder: this.buttonOrder,\n hasPrevStep: step && step > 1\n },\n options || this.options\n )\n );\n\n _.each(this.__buttons, function (args) {\n toolbar.addButton.apply(toolbar, args);\n });\n\n return toolbar;\n },\n\n className: '',\n\n attributes: {},\n\n events: {},\n\n /**\n * An array of input configurations to render in the form\n * @type {Array}\n */\n inputs: [],\n\n template: null,\n\n /**\n * Does the form support read/edit toggle.\n * @type {Boolean|Function}\n * @default false\n */\n read: false,\n\n /**\n * Is the form in readOnly mode.\n * @type {Boolean|Function}\n * @default false\n */\n readOnly: false,\n\n /**\n * Should we not render the button bar\n * @type {Boolean|Function}\n * @default false\n */\n noButtonBar: false,\n\n /**\n * Should we not render a cancel button\n * @type {Boolean|Function}\n * @default false\n */\n noCancelButton: false,\n\n /**\n * Should we not render a save button\n * @type {Boolean}\n * @default false\n */\n noSubmitButton: false,\n\n /**\n * Set the order of the save, cancel and previous buttons (left to right).\n * @type {Array.}\n * @default ['previous', 'save', 'cancel']\n */\n buttonOrder: ['previous', 'save', 'cancel'],\n\n /**\n * The text on the save button\n * @type {String}\n * @default \"Save\"\n */\n save: null,\n\n /**\n * The text on the cancel button\n * @type {String}\n * @default \"Cancel\"\n */\n cancel: null,\n\n /**\n * To use button-error to style the submit button instead of button-primary.\n * @type {Boolean|Function}\n * @default false\n */\n danger: false,\n\n /**\n * A layout CSS class to add to the form\n * @type {String|Function}\n * @default \"\"\n */\n layout: '',\n\n /**\n * The step this form is in the context of a wizard\n * @type {Number}\n */\n step: undefined,\n\n /**\n * The total numbers of steps the wizard this form is a part of has\n * @type {Number}\n */\n totalSteps: undefined,\n\n /**\n * The form's title\n * @type {String|Function}\n */\n title: null,\n\n /**\n * The form's subtitle\n * @type {String|Function}\n */\n subtitle: null,\n\n /**\n * Auto-save the model when hitting save. Triggers a `saved` event when done\n * @type {Boolean}\n * @default false\n */\n autoSave: false,\n\n /**\n * Scroll to the top of the form on error\n * @type {Boolean|Function}\n * @default true\n */\n scrollOnError: true,\n\n /**\n * Show the error banner upon error\n * @type {Boolean|Function}\n * @default true\n */\n showErrors: true,\n\n /**\n * The form's scrollable area\n * @type {String}\n * @default \".o-form-content\"\n */\n resizeSelector: '.o-form-content',\n\n /**\n * Sets whether or not the form shows the saving state when\n * the model is saved. Has no effect on setSavingState and clearSavingState as those are manual calls\n * to trigger/clear the saving state.\n * @name hasSavingState\n * @memberof module:Okta.Form\n * @type {Boolean}\n * @default false\n * @instance\n */\n\n /**\n * Get an attribute value from options or instance.\n * Prefer options value over instance value\n * @param {String} name Name of the attribute\n * @param {Object} defaultValue the default value to return if the attribute is not found\n * @return {Object} The value\n */\n getAttribute: function (name, defaultValue) {\n let value = _.resultCtx(this.options, name, this);\n\n if (_.isUndefined(value)) {\n value = _.result(this, name);\n }\n return !_.isUndefined(value) ? value : defaultValue;\n },\n\n /**\n * Does this form have a \"read\" mode\n * @return {Boolean}\n */\n hasReadMode: function () {\n return !!this.getAttribute('read');\n },\n\n /**\n * Is this form in \"read only\" mode\n * @return {Boolean}\n */\n isReadOnly: function () {\n return !!this.getAttribute('readOnly');\n },\n\n /**\n * Does this form have a button bar\n * @return {Boolean}\n */\n hasButtonBar: function () {\n return !(this.getAttribute('noButtonBar') || this.isReadOnly());\n },\n\n render: function () {\n this.__readModeBar && this.__readModeBar.remove();\n if (this.hasReadMode() && !this.isReadOnly()) {\n const readModeBar = ReadModeBar.extend({\n formTitle: this.getAttribute('title', '')\n });\n\n this.__readModeBar = this.add(readModeBar, '.o-form-title-bar').last();\n }\n\n const html = template({\n layout: this.getAttribute('layout', ''),\n title: this.getAttribute('title', '', true),\n subtitle: this.getAttribute('subtitle', '', true),\n hasReadMode: this.hasReadMode()\n });\n\n this.$el.html(html);\n delete this.template;\n\n BaseView.prototype.render.apply(this, arguments);\n\n this.__applyMode();\n\n return this;\n },\n\n /**\n * Changes form UI to indicate saving. Disables all inputs and buttons. Use this function if you have set\n * hasSavingState to false on the the form\n * @private\n */\n __setSavingState: function () {\n this.model.trigger('form:set-saving-state');\n this.$el.addClass('o-form-saving');\n },\n\n /**\n * Changes form UI back to normal from the saving state. Use this function if you are have set hasSavingState\n * to false on the form\n * @private\n */\n __clearSavingState: function () {\n this.model.trigger('form:clear-saving-state');\n this.$el.removeClass('o-form-saving');\n },\n\n /**\n * Toggles the visibility of the bottom button bar\n * @private\n */\n __toggleToolbar: function () {\n this.__toolbar && this.__toolbar.remove();\n if (this.hasButtonBar() && this._editMode()) {\n this.__toolbar = this.__createToolbar();\n this.add(this.__toolbar, '');\n }\n this.trigger('resize');\n },\n\n /**\n * Cancels this form\n * - Reset the model to the previous state\n * - Clears all errors\n * - Triggers a `cancel` event\n * - Sets the model to read mode (if applicable)\n * @private\n * @fires cancel\n */\n __cancel: function () {\n const edit = this.model.get('__edit__');\n /* eslint max-statements: [2, 12] */\n\n this.model.clear({ silent: true });\n let data;\n\n if (this.model.sanitizeAttributes) {\n data = this.model.sanitizeAttributes(this.__originalModel);\n } else {\n data = _.clone(this.__originalModel);\n }\n this.model.set(data, { silent: true });\n this.trigger('cancel', this.model);\n this.model.trigger('cache:clear');\n if (edit) {\n this.model.set('__edit__', false, { silent: true });\n this.model.trigger('change:__edit__', this.model, false);\n }\n this.clearErrors();\n },\n\n /**\n * Runs {@link module:Okta.Form#validate|validate} to check the model state.\n * Triggers an \"invalid\" event on the model if validation fails\n * @returns {Boolean}\n */\n isValid: function () {\n let res;\n const self = this;\n\n function validateArray(arr) {\n return _.reduce(\n arr,\n function (memo, fieldName) {\n return _.extend(memo, self.model.validateField(fieldName));\n },\n {}\n );\n }\n\n if (_.isUndefined(this.validate)) {\n return this.model.isValid();\n } else if (_.isFunction(this.validate)) {\n res = this.validate();\n } else if (_.isArray(this.validate)) {\n res = validateArray(this.validate);\n } else if (this.validate === 'local') {\n res = validateArray(\n this.getInputs().map(function (input) {\n return input.options.name;\n })\n );\n }\n\n if (!_.isEmpty(res)) {\n this.model.trigger('invalid', this.model, res);\n return false;\n } else {\n return true;\n }\n },\n\n /**\n * A throttled function that saves the form not more than once every 100 ms\n * Basically all this method does is trigger a `save` event\n * @fires save\n * @private\n */\n __save: function () {\n this.clearErrors();\n if (this.isValid()) {\n this.trigger('save', this.model);\n }\n },\n\n /**\n * In the context of a wizard, go to previous state\n * Technically all this method does is trigger a `previous` event\n * @param {Event} e\n * @private\n */\n __previous: function () {\n this.trigger('previous', this.model);\n },\n\n /**\n * Renders the form in the correct mode based on the model.\n * @private\n */\n __applyMode: function () {\n this.clearErrors();\n this.__toggleToolbar();\n\n if (this._editMode()) {\n this.$el.addClass('o-form-edit-mode');\n this.$el.removeClass('o-form-read-mode');\n this.$('.o-form-content').removeClass('rounded-btm-4');\n this.focus();\n } else {\n this.$el.removeClass('o-form-edit-mode');\n this.$el.addClass('o-form-read-mode');\n this.$('.o-form-content').addClass('rounded-btm-4');\n }\n },\n\n /**\n * Is the form in edit mode\n * @return {Boolean}\n * @private\n */\n _editMode: function () {\n return this.model.get('__edit__') || !this.hasReadMode();\n },\n\n /**\n * Function can be overridden to alter top level error summary.\n * @param {Object} responseJSON\n *\n * @example\n * // responseJSON object\n * {\n * errorCauses: [{errorSummary: \"At least one of Proxy Status, Location, or ASN should be configured.\"}]\n * errorSummary: \"At least one of Proxy Status, Location, or ASN should be configured.\"\n * errorCode: \"E0000001\"\n * errorId: \"oaepsrTCHrhT-eIi8XTm6KWWg\"\n * errorLink: \"E0000001\"\n * errorSummary: \"Api validation failed: networkZone\"\n * }\n *\n * @method\n * @default _.identity\n */\n parseErrorMessage: _.identity,\n\n _handleErrorScroll: function () {\n if (!this.getAttribute('scrollOnError')) { return; }\n const $el = $('#' + this.id + ' .o-form-error-container');\n\n if ($el.length) {\n let $scrollContext = $el.scrollParent();\n let scrollTop;\n\n // scrollParent was almost awesome...\n // but it returns document if there are no other scrollable parents\n // document does not have offset, so here we have to replace with html, body\n // Additionally when the scroll context is html, body, $el.offset().top is fixed\n // versus when it has a different scroll context it's dynamic and requires the\n // calculation below.\n if ($scrollContext[0] as unknown as any === document) {\n $scrollContext = $('html, body');\n scrollTop = $el.offset()!.top;\n } else {\n scrollTop = $scrollContext.scrollTop()! + $el.offset()!.top - $scrollContext.offset()!.top;\n }\n\n $scrollContext.animate({ scrollTop }, 400);\n }\n },\n\n /**\n * Show an error message based on an XHR error\n * @param {Okta.BaseModel} model the model\n * @param {jqXHR} xhr The jQuery XmlHttpRequest Object\n * @private\n */\n __showErrors: function (model, resp, showBanner) {\n this.trigger('error', model);\n\n /* eslint max-statements: 0 */\n if (!this.getAttribute('showErrors')) {\n return;\n }\n\n let errorSummary;\n let responseJSON = ErrorParser.getResponseJSON(resp);\n const validationErrors = ErrorParser.parseFieldErrors(resp);\n\n // trigger events for field validation errors\n if (_.size(validationErrors!)) {\n _.each(\n validationErrors!,\n function (errors: string[], field) {\n this.model.trigger(\n 'form:field-error',\n this.__errorFields[field] || field,\n _.map(errors!, function (error) {\n return /^model\\.validation/.test(error) ? StringUtil.localize(error, 'courage') : error;\n })\n );\n },\n this\n );\n } else {\n responseJSON = this.parseErrorMessage(responseJSON);\n errorSummary = getErrorSummary(responseJSON);\n }\n\n // show the error message\n if (showBanner) {\n this.$('.o-form-error-container').addClass('o-form-has-errors');\n this.add(ErrorBanner, '.o-form-error-container', { options: { errorSummary: errorSummary } });\n }\n\n // slide to and focus on the error message\n this._handleErrorScroll();\n\n this.model.trigger('form:resize');\n },\n\n /**\n * Clears the error banner\n * @private\n */\n clearErrors: function () {\n this.$('.o-form-error-container').removeClass('o-form-has-errors');\n this.model.trigger('form:clear-errors');\n this.model.trigger('form:resize');\n },\n\n /**\n * Toggles between edit and read mode\n */\n toggle: function () {\n this.model.set('__edit__', !this.hasReadMode() || !this.model.get('__edit__'));\n return this;\n },\n\n __addLayoutItem: function (input) {\n if (InputFactory.supports(input)) {\n this.addInput(input);\n } else {\n this.__addNonInputLayoutItem(input);\n }\n },\n\n __addNonInputLayoutItem: function (item) {\n const itemOptions = _.omit(item, 'type');\n\n switch (item.type) {\n case 'sectionTitle':\n this.addSectionTitle(item.title, _.omit(itemOptions, 'title'));\n break;\n case 'divider':\n this.addDivider(itemOptions);\n break;\n default:\n throw new Error('unknown input: ' + item.type);\n }\n },\n\n /**\n * Adds a view to the buttons tool bar\n * @param {Object} params parameterized button options\n * @param {Object} options options to send to {@link module:Okta.View#add|View.add}\n */\n addButton: function (params, options) {\n this.__toolbar && this.__toolbar.addButton(params, options);\n this.__buttons.push([params, options]);\n },\n\n /**\n * Adds a divider\n */\n addDivider: function (options) {\n this.add('
    ');\n FormUtil.applyShowWhen(this.last(), options && options.showWhen);\n FormUtil.applyToggleWhen(this.last(), options && options.toggleWhen);\n return this;\n },\n\n /**\n * Adds section header\n * @param {String} title\n */\n addSectionTitle: function (title, options) {\n this.add(sectionTitleTemplate({ title: title }));\n FormUtil.applyShowWhen(this.last(), options && options.showWhen);\n FormUtil.applyToggleWhen(this.last(), options && options.toggleWhen);\n return this;\n },\n\n /**\n * Add a form input\n * @param {Object} options Options to describe the input\n * @param {String} options.type The input type.\n * The options are: `text`, `textarea`, `select`, `checkbox`, `radio`, `switch`,\n * `password`, `number`, `textselect`, `date`, `grouppicker`, `admingrouppicker`, `su-orgspicker`\n * `file/image`, `file/cert`, `checkboxset`, `list`, `group`, `zonepicker`\n * @param {String} options.name The name of the model field this input mutates\n * @param {String|Function} [options.label]\n * The input label text.\n * When passed as a function, will invoke the function (in the context of the {@link InputLabel})\n * on render time, and use the returned value.\n * @param {String} [options.sublabel] The input sub label text\n * @param {String} [options.tooltip] A popover tooltip to be displayed next to the label\n * @param {String} [options.placeholder] Placeholder text.\n * @param {String} [options.explain] Explanation text to render below the input\n * @param {Okta.View} [options.customExplain] A custom view to render below the input (deprecated)\n * @param {Boolean} [options.disabled=false] Make this input disabled\n * @param {Boolean} [options.wide=false] Use a wide input layout\n * @param {Boolean} [options.label-top=false] position label on top of an input\n * @param {Boolean} [options.explain-top=false] position explain on top of an input (requires label-top=true)\n * @param {Number} [options.multi] have multiple in-line inputs. useful when `input` is passed as an array of inputs\n * @param {String} [options.errorField] The API error field here that maps to this input\n * @param {Boolean} [options.inlineValidation=true] Validate input on focusout\n * @param {String} [options.ariaLabel] Used to add aria-label attribute to the input when label is not present.\n * @param {Boolean} [options.group=false] Grouping set of inputs using fieldset and legend. Mainly for radio\n * @param {Object} [options.options]\n * In the context of `radio` and `select`, a key/value set of options\n *\n * @param {Object} [options.params]\n * Widget specific parameters. Varies per input.\n *\n * @param {BaseInput|Object[]} [options.input]\n * - A custom input \"class\" or instance - preferably a **class**, so we can automagically assign the right\n * parameters when initializing it\n * - An array of input definition object literals (such as this one)\n *\n * @param {Object} [options.showWhen]\n * Setting to define when to show (or hide) the input. The input is visible by default.\n *\n * @param {Object} [options.bindings]\n * Bind a certain model attribute to a callback function, so the function is being called on render,\n * and any time this model field changes.\n * This is similar to `showWhen` but is not limited to toggling.\n *\n * @param {Function} [options.render]\n * A post-render hook that will run upon render on InputWrapper\n *\n * @param {String|Function} className A className to apply on the {@link InputWrapper}\n *\n * @param {Function} [options.initialize]\n * An `initialize` function to run when initializing the {@link InputWrapper}\n * Useful for state mutation on start time, and complex state logic\n *\n * @example\n * // showhen: the field will be visible when `advanced` is set to `true`\n * // and `mode` is set to `\"ON\"`.\n * showWhen: {\n * 'advanced': true,\n * 'mode': function (value) {\n * return value == 'ON'; // this is identical to this.model.get('mode') == 'ON'\n * }\n * }\n *\n * @example\n * // bindings\n * bindings: {\n * 'status mode': function (status, mode) {\n * var labelView = this.getLabel();\n * if (status == 1) {\n * labelView.options.label = 'Something';\n * }\n * else {\n * labelView.options.label = mode;\n * }\n * labelView.render();\n * }\n * }\n */\n addInput: function (_options: InputOptions) {\n _options = _.clone(_options);\n\n FormUtil.validateInput(_options, this.model);\n\n const inputsOptions = FormUtil.generateInputOptions(_options, this, this.__createInput).reverse();\n\n // We need a local variable here to keep track\n // as addInput can be called either directy or through the inputs array.\n if (_.isEmpty(this.getInputs().toArray())) {\n _.extend(inputsOptions[0], { validateOnlyIfDirty: true });\n }\n\n const inputs = _.map(inputsOptions, this.__createInput, this);\n\n _.each(\n inputsOptions,\n function (input) {\n if (input.errorField) {\n this.__errorFields[input.errorField] = input.name;\n }\n },\n this\n );\n\n const options: ContainerOptions = {\n inputId: _.last(inputs).options.inputId,\n input: inputs,\n multi: inputsOptions.length > 1 ? inputsOptions.length : undefined\n };\n\n _.extend(options, _.omit(this.options, 'input'), _.omit(_options, 'input'));\n\n const inputWrapper = this.__createWrapper(options);\n\n if (options.label !== false) {\n inputWrapper.add(this.__createLabel(options));\n }\n inputWrapper.add(this._createContainer(options));\n\n // TODO: there may be a bug here.\n // options.input will always be an array, so options.input.type will always be undefined\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n /// @ts-ignore\n inputWrapper.type = options.type || options.input.type || 'custom';\n\n const args = [inputWrapper].concat(_.rest(arguments));\n\n return this.add.apply(this, args);\n },\n\n /**\n * @private\n */\n __createInput: function (options: InputOptions) {\n options = _.pick(options, FormUtil.INPUT_OPTIONS);\n return InputFactory.create(options);\n },\n\n /**\n * @private\n */\n __createWrapper: function (options: WrapperOptions) {\n options = _.pick(options, FormUtil.WRAPPER_OPTIONS);\n return new InputWrapper(options);\n },\n\n /**\n * @private\n */\n __createLabel: function (options: LabelOptions) {\n options = _.pick(options, FormUtil.LABEL_OPTIONS);\n return new InputLabel(options);\n },\n\n /**\n * @private\n */\n _createContainer: function (options: ContainerOptions) {\n options = _.pick(options, FormUtil.CONTAINER_OPTIONS);\n return new InputContainer(options);\n },\n\n /**\n * Stores the current attributes of the model to a private property\n * @param {Okta.BaseModel} model The model\n * @private\n */\n __saveModelState: function (model) {\n this.__originalModel = $.extend(true, {}, model.attributes);\n },\n\n /**\n * @override\n * @ignore\n */\n add: function (...args) {\n // sets a default element selector\n typeof args[1] === 'undefined' && (args[1] = '> div.o-form-content > .o-form-fieldset-container');\n return BaseView.prototype.add.apply(this, args);\n },\n\n /**\n * Set the focus on the first input in the form\n */\n focus: function () {\n const first = this.getInputs().first();\n\n if (first && first.focus) {\n first.focus();\n }\n return this;\n },\n\n /**\n * Disable all inputs in the form\n * @deprecated not currently in use\n */\n disable: function () {\n this.invoke('disable');\n return this;\n },\n\n /**\n * Enable all inputs in the form\n * @deprecated not currently in use\n */\n enable: function () {\n this.invoke('enable');\n },\n\n /**\n * Set the max-height for o-form-content class container within the form if a height is provided,\n * otherwise, get its computed inner height\n * @param {Number} the height in pixel to set for class o-form-content\n * @return {Number}\n */\n contentHeight: function (height) {\n const content = this.$('.o-form-content');\n\n if (_.isNumber(height)) {\n content.css('max-height', height);\n } else {\n return content.height();\n }\n },\n\n /**\n * Get only the input children\n * @return {InputWrapper[]} An underscore wrapped array of {@link InputWrapper} instances\n */\n getInputs: function () {\n return _(\n this.filter(function (view) {\n return view instanceof InputWrapper;\n })\n );\n }\n }\n) as typeof BaseFormConstructor;\n","/* eslint-env es6 */\n/* eslint max-statements: [2, 17] */\nimport hbs from 'handlebars-inline-precompile';\nimport $ from '../../util/jquery-wrapper';\nimport _ from '../../util/underscore-wrapper';\nimport ButtonFactory from '../../util/ButtonFactory';\nimport StringUtil from '../../util/StringUtil';\nimport BaseView from '../BaseView';\nimport Callout from '../components/Callout';\n\nexport declare class BaseInputClass extends BaseView {\n defaultPlaceholder: string;\n addAriaLabel();\n addInlineValidation();\n toModelValue();\n getCalloutParent();\n showCallout(calloutConfig, dependencyResolved);\n removeCallout();\n update();\n isEditMode(): boolean;\n render(): this;\n validate();\n addModelListeners();\n val();\n focus();\n defaultValue();\n editMode();\n readMode();\n getReadModeString();\n getModelValue();\n toStringValue();\n resize(): void;\n disable(): void;\n enable(): void;\n changeType(type): void;\n getNameString(): string;\n getParams(options);\n getParam(key, defaultValue);\n getParamOrAttribute(key);\n\n _isEdited: boolean;\n __getDependencyCalloutBtn(btnConfig)\n __getCalloutMsgContainer(calloutMsg);\n __evaluateCalloutObject(dependencyResolved, calloutTitle);\n __handleDependency(result, callout);\n __showInputDependencies();\n __markError();\n __clearError();\n}\n\nconst props = {\n tagName: 'span',\n\n attributes: function () {\n return {\n 'data-se': 'o-form-input-' + this.getNameString()\n };\n },\n\n /**\n * default placeholder text when options.placeholder is not defined\n */\n defaultPlaceholder: '',\n\n constructor: function (options) {\n /* eslint complexity: [2, 7] */\n options = _.defaults(options || {}, {\n inputId: options.id || _.uniqueId('input'),\n placeholder: this.defaultPlaceholder,\n inlineValidation: true,\n validateOnlyIfDirty: false\n });\n\n delete options.id;\n\n // decorate the `enable` and `disable` and toggle the `o-form-disabled` class.\n // so we wont need to worry about this when overriding the methods\n const self = this;\n\n _.each({ enable: 'removeClass', disable: 'addClass' }, function (method, action) {\n self[action] = _.wrap(self[action], function (fn) {\n fn.apply(self, arguments);\n self.$el[method]('o-form-disabled');\n });\n });\n\n BaseView.call(this, options);\n\n if (_.result(options, 'readOnly') !== true && _.result(options, 'read') === true) {\n this.listenTo(this.model, 'change:__edit__', this.render);\n }\n\n if (_.isFunction(this.focus)) {\n this.focus = _.debounce(_.bind(this.focus, this), 50);\n }\n\n // Enable inline validation if this is not the first field in the form.\n if (!_.result(options, 'validateOnlyIfDirty')) {\n this.addInlineValidation();\n }\n\n this.addModelListeners();\n this.$el.addClass('o-form-input-name-' + this.getNameString());\n },\n\n addAriaLabel: function () {\n const ariaLabel = this.options.ariaLabel;\n\n if (ariaLabel) {\n this.$(':input').attr('aria-label', ariaLabel);\n }\n },\n\n addInlineValidation: function () {\n if (_.result(this.options, 'inlineValidation')) {\n this.$el.on('focusout', ':input', _.bind(this.validate, this));\n }\n },\n\n toModelValue: function () {\n let value = this.val();\n\n if (_.isFunction(this.to)) {\n value = this.to.call(this, value);\n }\n if (_.isFunction(this.options.to)) {\n value = this.options.to.call(this, value);\n }\n return value;\n },\n\n __getDependencyCalloutBtn: function (btnConfig) {\n const self = this;\n\n const btnOptions = _.clone(btnConfig);\n\n const originalClick = btnOptions.click || function () {};\n // add onfocus listener to re-evaluate depedency when callout button is clicked\n\n btnOptions.click = function () {\n $(window).one('focus.dependency', function () {\n self.__showInputDependencies();\n });\n originalClick.call(self);\n };\n const BaseInputCalloutBtn = BaseView.extend({\n children: [ButtonFactory.create(btnOptions)]\n });\n\n return new BaseInputCalloutBtn();\n },\n\n getCalloutParent: function () {\n return this.$('input[value=\"' + this.getModelValue() + '\"]').parent();\n },\n\n __getCalloutMsgContainer: function (calloutMsg) {\n return BaseView.extend({\n template: hbs('\\\n \\\n {{msg}}\\\n \\\n '),\n getTemplateData: function () {\n return {\n msg: calloutMsg\n };\n }\n });\n },\n\n showCallout: function (calloutConfig, dependencyResolved) {\n const callout = _.clone(calloutConfig);\n\n callout.className = 'dependency-callout';\n if (callout.btn) {\n callout.content = this.__getDependencyCalloutBtn(callout.btn);\n delete callout.btn;\n }\n const dependencyCallout = Callout.create(callout);\n\n if (!dependencyResolved) {\n dependencyCallout.add(this.__getCalloutMsgContainer(StringUtil.localize('dependency.callout.msg', 'courage')));\n }\n const calloutParent = this.getCalloutParent();\n\n calloutParent.append(dependencyCallout.render().el);\n if (callout.type === 'success') {\n _.delay(function () {\n // fade out success callout\n dependencyCallout.$el.fadeOut(800);\n }, 1000);\n }\n },\n\n removeCallout: function () {\n this.$el.find('.dependency-callout').remove();\n },\n\n __evaluateCalloutObject: function (dependencyResolved, calloutTitle) {\n let defaultCallout;\n\n if (dependencyResolved) {\n defaultCallout = {\n title: StringUtil.localize('dependency.action.completed', 'courage'),\n size: 'large',\n type: 'success'\n };\n } else {\n defaultCallout = {\n title: StringUtil.localize('dependency.action.required', 'courage', [calloutTitle]),\n size: 'large',\n type: 'warning'\n };\n }\n return defaultCallout;\n },\n\n __handleDependency: function (result, callout) {\n const self = this;\n const calloutConfig = _.isFunction(callout)\n ? callout(result)\n : _.extend({}, callout, self.__evaluateCalloutObject(result.resolved, callout.title));\n\n // remove existing callouts if any\n self.removeCallout();\n self.showCallout(calloutConfig, result.resolved);\n },\n\n __showInputDependencies: function () {\n const self = this;\n const fieldDependency = self.options.deps[self.getModelValue()];\n\n if (fieldDependency && _.isFunction(fieldDependency.func)) {\n fieldDependency\n .func()\n .done(function (data) {\n self.__handleDependency({ resolved: true, data: data }, fieldDependency.callout);\n })\n .fail(function (data) {\n self.__handleDependency({ resolved: false, data: data }, fieldDependency.callout);\n });\n } else {\n self.removeCallout();\n }\n },\n\n _isEdited: false,\n /**\n * updates the model with the input's value\n */\n update: function () {\n if (!this._isEdited && _.result(this.options, 'validateOnlyIfDirty')) {\n this._isEdited = true;\n this.addInlineValidation();\n }\n this.model.set(this.options.name, this.toModelValue());\n if (this.options.deps) {\n // check for dependencies\n this.__showInputDependencies();\n }\n },\n\n /**\n * Is the input in edit mode\n * @return {Boolean}\n */\n isEditMode: function () {\n const ret = !_.result(this.options, 'readOnly')\n && (_.result(this.options, 'read') !== true || this.model.get('__edit__') === true);\n\n return ret;\n },\n\n /**\n * Renders the input\n * @readonly\n */\n render: function () {\n this.preRender();\n const params = this.options.params;\n\n this.options.params = _.resultCtx(this.options, 'params', this);\n\n if (this.isEditMode()) {\n this.editMode();\n if (_.resultCtx(this.options, 'disabled', this)) {\n this.disable();\n } else {\n this.enable();\n }\n } else {\n this.readMode();\n }\n\n this.options.params = params;\n this.addAriaLabel();\n this.postRender();\n\n return this;\n },\n\n /**\n * checks if the current value in the model is valid for this field\n */\n validate: function () {\n if (!this.model.get('__pending__') && this.isEditMode() && _.isFunction(this.model.validateField)) {\n const validationError = this.model.validateField(this.options.name);\n\n if (validationError) {\n _.delay(\n function () {\n this.model.trigger('form:clear-error:' + this.options.name);\n this.model.trigger('invalid', this.model, validationError, false);\n }.bind(this),\n 100\n );\n }\n }\n },\n\n /**\n * Add model event listeners\n */\n addModelListeners: function () {\n this.listenTo(this.model, 'form:field-error', function (name) {\n if (this.options.name === name) {\n this.__markError();\n }\n });\n this.listenTo(this.model, 'form:clear-errors change:' + this.options.name, this.__clearError);\n this.listenTo(this.model, 'form:clear-error:' + this.options.name, this.__clearError);\n },\n\n /**\n * The value of the input\n * @return {Mixed}\n */\n val: function () {\n throw new Error('val() is an abstract method');\n },\n\n /**\n * Set focus on the input\n */\n focus: function () {\n throw new Error('focus() is an abstract method');\n },\n\n /**\n * Default value in read mode\n * When model has no value for the field\n */\n defaultValue: function () {\n return '';\n },\n\n /**\n * Renders the input in edit mode\n */\n editMode: function () {\n const options = _.extend({}, this.options, {\n value: this.getModelValue()\n });\n\n this.$el.html(this.template(options));\n this.options.multi && this.$el.removeClass('margin-r');\n return this;\n },\n\n /**\n * Renders the readable value of the input in read mode\n */\n readMode: function () {\n this.$el.text(this.getReadModeString());\n this.$el.removeClass('error-field');\n this.options.multi && this.$el.addClass('margin-r');\n return this;\n },\n\n getReadModeString: function () {\n const readModeStr = _.resultCtx(this.options, 'readModeString', this);\n\n if (readModeStr) {\n return readModeStr;\n }\n return this.toStringValue();\n },\n\n /**\n * The model value off the field associated with the input\n * @return {Mixed}\n */\n getModelValue: function () {\n let value = this.model.get(this.options.name);\n\n if (_.isFunction(this.from)) {\n value = this.from.call(this, value);\n }\n if (_.isFunction(this.options.from)) {\n value = this.options.from.call(this, value);\n }\n return value;\n },\n\n /*\n * convenience method to get the textual value from the model\n * will return the textual label rather than value in case of select/radio\n * @return {String}\n */\n toStringValue: function () {\n let value = this.getModelValue();\n\n if (this.options.options) {\n // dropdown or radio\n value = this.options.options[value];\n }\n\n if (Number.isInteger(value) || (typeof value === 'boolean')) {\n value = String(value);\n }\n return value || this.defaultValue();\n },\n\n /**\n * Triggers a form:resize event in order to tell dialogs content size has changed\n */\n resize: function () {\n this.model.trigger('form:resize');\n },\n\n /**\n * Disable the input\n */\n disable: function () {\n this.$(':input').prop('disabled', true);\n },\n\n /**\n * Enable the input\n */\n enable: function () {\n this.$(':input').prop('disabled', false);\n },\n\n /**\n * Change the type of the input field. (e.g., text <--> password)\n * @param type\n */\n changeType: function (type) {\n this.$(':input').prop('type', type);\n // Update the options so that it keeps the uptodate state\n this.options.type = type;\n },\n\n getNameString: function () {\n if (_.isArray(this.options.name)) {\n return this.options.name.join('-');\n }\n return this.options.name;\n },\n\n /**\n * Get parameters, computing _.result\n * @param {[type]} options alternative options\n * @return {Object} the params\n */\n getParams: function (options) {\n const opts = options || this.options || {};\n\n return _.clone(_.resultCtx(opts, 'params', this) || {});\n },\n\n /**\n * get a parameter from options.params, compute _.result when needed.\n * @param {String} key\n * @param {Object} defaultValue\n * @return {Object} the params\n */\n getParam: function (key, defaultValue) {\n const result = _.resultCtx(this.getParams(), key, this);\n\n return !_.isUndefined(result) ? result : defaultValue;\n },\n\n /**\n * Get a parameter from options.params or if empty, object attribute.\n *\n * @param {String} key\n * @return {Object} the param or attribute\n */\n getParamOrAttribute: function (key) {\n return this.getParam(key) || _.result(this, key);\n },\n\n __markError: function () {\n this.$el.addClass('o-form-has-errors');\n },\n\n __clearError: function () {\n this.$el.removeClass('o-form-has-errors');\n }\n};\n\n/**\n * @class BaseInput\n * @private\n * An abstract object that defines an input for {@link Okta.Form}\n *\n * BaseInputs are typically not created directly, but being passed to {@link Okta.Form#addInput}\n * @extends Okta.View\n */\nexport default BaseView.extend(props) as typeof BaseInputClass;\n","import _ from '../../../util/underscore-wrapper';\nimport BaseView from '../../BaseView';\nimport FormUtil from '../helpers/FormUtil';\n\ntype ButtonOrderEnum = 'previous' | 'save' | 'cancel';\n\nexport declare class ToolbarClass extends BaseView {\n addButton(parmas, options?): this;\n buttonOrder: ButtonOrderEnum[];\n __getButtonOrder(options): ButtonOrderEnum[];\n}\n\nconst proto = {\n className() {\n return 'o-form-button-bar';\n },\n\n buttonOrder: ['previous', 'save', 'cancel'],\n\n initialize: function (this: ToolbarClass, options) {\n const buttonConfigs = {\n previous: {\n type: 'previous'\n },\n save: {\n type: 'save',\n text: _.resultCtx(options, 'save', this),\n id: _.resultCtx(options, 'saveId', this),\n className: _.resultCtx(options, 'saveClassName', this)\n },\n cancel: {\n type: 'cancel',\n text: _.resultCtx(options, 'cancel', this)\n }\n };\n this.__getButtonOrder(options).forEach((buttonName) => {\n this.addButton(buttonConfigs[buttonName]);\n });\n },\n\n /**\n * Adds a buttomn to the toolbar\n * @param {Object} params button parameters\n * @param {Object} options {@link Okta.View#add} options\n */\n addButton: function (this: ToolbarClass, params, options?) {\n return this.add(FormUtil.createButton(params), options);\n },\n\n __getButtonOrder: function (this: ToolbarClass, options) {\n const buttonOrder = _.resultCtx(options, 'buttonOrder', this, this.buttonOrder);\n const buttonsToSkip = [];\n if (options.noSubmitButton) {\n buttonsToSkip.push('save');\n }\n if (options.noCancelButton) {\n buttonsToSkip.push('cancel');\n }\n if (!options.hasPrevStep) {\n buttonsToSkip.push('previous');\n }\n return _.without(buttonOrder, ...buttonsToSkip);\n }\n};\n\nexport default BaseView.extend(proto) as typeof ToolbarClass;\n","import _ from '../../../util/underscore-wrapper';\nimport StringUtil from '../../../util/StringUtil';\n\nconst FIELD_REGEX = /^([\\S]+): (.+)$/;\n\nexport interface ErrorCause {\n errorSummary?: string;\n property?: string;\n reason?: string;\n location?: string;\n}\n\nexport interface ErrorResponse extends ErrorCause {\n errorCauses?: ErrorCause[];\n}\n\nexport default {\n /**\n * Helper function that returns the json output of an xhr objext\n * @param {jqXhr} xhr\n * @return {Object}\n */\n getResponseJSON: function (xhr): ErrorResponse | undefined {\n try {\n return xhr.responseJSON || JSON.parse(xhr.responseText);\n } catch (e) {\n // ignore error\n }\n },\n\n /**\n * Parses an error summary to extract a field name and an error message\n * @param {String} errorSummary The raw error summary\n * @return {String[]} An array with two members: [field name, error message]\n */\n parseErrorSummary: function (errorSummary: string): [string, string] | undefined {\n const matches = errorSummary.match(FIELD_REGEX);\n // error format is: `fieldName: The field cannot be left blank`\n\n if (matches) {\n return [matches[1], matches[2]];\n }\n },\n\n /**\n * Parses an error cause object to extract a field name from property attribute\n * and an error message form errorSummary attribute. It looks to see if there is\n * a custom override/translation for the erorrCause.reason before using the errorSummary\n * @param {Object} errorCause object\n * @return {String[]} An array with two members: [field name, error message]\n */\n parseErrorCauseObject: function (errorCause: ErrorCause): [string, string] | undefined {\n if (errorCause.property && errorCause.errorSummary) {\n const localizedMsg = StringUtil.localize(errorCause.reason);\n const apiMsg = errorCause.errorSummary;\n const field = errorCause.property;\n const errorMessage = localizedMsg.indexOf('L10N_ERROR[') === -1 ? localizedMsg : apiMsg;\n\n return [field, errorMessage];\n }\n },\n\n parseErrors: function (resp) {\n const responseJSON: ErrorResponse = this.getResponseJSON(resp);\n\n return _.map((responseJSON && responseJSON.errorCauses) || [], function (errorCause) {\n return ('' + errorCause.errorSummary).replace(FIELD_REGEX, '$2');\n });\n },\n\n /**\n * Parses the response for errors\n * Returns a map of field names > array or error messages\n * Example:\n * ```javascript\n * {\n * url: ['The field cannot be left blank', 'The field has to be a valid URI'],\n * name: ['The field cannot be left blank']\n * }\n * ```\n * @param {Object} resp\n * @return {Object}\n */\n parseFieldErrors: function (resp) {\n const responseJSON: ErrorResponse = this.getResponseJSON(resp);\n const errors = {};\n\n // xhr error object\n if (responseJSON) {\n /* eslint complexity: [2, 9] */\n _.each(\n responseJSON.errorCauses || [],\n function (cause) {\n let res: string[] = [];\n\n if (cause.property && cause.errorSummary) {\n res = this.parseErrorCauseObject(cause);\n } else if (cause.location && cause.errorSummary) {\n // To handle new api error format for field level errors.\n // Ignoring the reason attribute as the translation happens in the API layer and not in the client any more.\n res = [cause.location, cause.errorSummary];\n } else {\n res = this.parseErrorSummary((cause && cause.errorSummary) || '');\n }\n if (res) {\n const fieldName = res[0];\n const message = res[1];\n\n errors[fieldName] || (errors[fieldName] = []);\n errors[fieldName].push(message);\n }\n },\n this\n );\n }\n // validation key/value object\n else if (_.isObject(resp) && _.size(resp)) {\n _.each(resp, function (msg, field) {\n errors[field] = [msg];\n });\n }\n return _.size(errors) ? errors : undefined;\n }\n};\n","/* eslint max-params: [2, 6] */\nimport _ from '../../../util/underscore-wrapper';\nimport Keys from '../../../util/Keys';\nimport Logger from '../../../util/Logger';\nimport StringUtil from '../../../util/StringUtil';\nimport ViewUtil from '../../../util/ViewUtil';\nimport BaseView from '../../BaseView';\nimport { InputOptions } from '../types';\n\nconst LABEL_OPTIONS = ['model', 'id', 'inputId', 'type', 'label', 'sublabel', 'tooltip', 'name', 'group'];\n\nconst CONTAINER_OPTIONS = [\n 'wide',\n 'multi',\n 'input',\n 'label-top',\n 'explain',\n 'explain-top',\n 'customExplain',\n 'model',\n 'name',\n 'type',\n 'autoRender',\n 'multirowError',\n];\n\nconst WRAPPER_OPTIONS = [\n 'model',\n 'name',\n 'label-top',\n 'readOnly',\n 'events',\n 'initialize',\n 'showWhen',\n 'bindings',\n 'render',\n 'className',\n 'data-se',\n 'toggleWhen',\n 'group'\n];\n\nconst INPUT_OPTIONS = [\n 'model',\n 'name',\n 'inputId',\n 'type', // base options\n 'input', // custom input\n 'placeholder',\n 'label', // labels\n 'readOnly',\n 'read',\n 'disabled',\n 'readModeString', // modes\n 'options', // select/radio\n 'deps', // used to specify inputs that have dependencies and show a callout to user on select\n 'from',\n 'to', // model transformers,\n 'autoRender', // model attributes change event to trigger rerendering of the input\n 'inlineValidation', // control inline validating against the model on focus lost\n 'validateOnlyIfDirty', // check if field has been interacted with and then validate\n 'ariaLabel', // 508 compliance for inputs that do not have label associated with them\n 'params',\n 'autoComplete', // autocomplete attribute\n];\n\nconst OTHER_OPTIONS = [\n 'errorField' // widgets params - for input specific widgets\n]; \n\nconst ALL_OPTIONS = _.uniq(_.union(LABEL_OPTIONS, CONTAINER_OPTIONS, WRAPPER_OPTIONS, INPUT_OPTIONS, OTHER_OPTIONS));\n\nconst SAVE_BUTTON_PHASES = [\n '• ',\n '• • ',\n '• • • ',\n '• • • •',\n ' • • •',\n ' • •',\n ' •',\n ' ',\n ' ',\n ' ',\n];\n\nfunction decorateDoWhen(doWhen) {\n if (doWhen && !doWhen['__edit__']) {\n return _.extend({ __edit__: _.constant(true) }, doWhen);\n }\n}\n\nexport interface CreateButtonOptions {\n action?: (...any) => any;\n id?: string;\n className?: string;\n text?: string;\n type?: string;\n}\n\nfunction createButton(options: CreateButtonOptions) {\n options = _.pick(options || {}, 'action', 'id', 'className', 'text', 'type');\n\n let timeoutId;\n let intervalId;\n let phaseCount;\n\n return BaseView.extend({\n tagName: 'input',\n className: 'button',\n events: {\n click: function () {\n if (options.action && !this.disabled()) {\n options.action.call(this);\n }\n },\n keyup: function (e) {\n if (Keys.isEnter(e) && options.action && !this.disabled()) {\n options.action.call(this);\n }\n }\n },\n\n disabled: function () {\n return this.$el.prop('disabled') === true;\n },\n\n disable: function () {\n this.$el.prop('disabled', true);\n this.$el.addClass('btn-disabled');\n },\n\n enable: function () {\n this.$el.prop('disabled', false);\n this.$el.removeClass('btn-disabled');\n },\n\n initialize: function () {\n const self = this;\n\n this.$el.attr('type', options.type === 'save' ? 'submit' : 'button');\n this.$el.val(options.text);\n if (options.id) {\n this.$el.attr('id', options.id);\n }\n if (options.className) {\n this.$el.addClass(options.className);\n }\n if (options.type) {\n this.$el.attr('data-type', options.type);\n }\n\n this.$el.mousedown(function () {\n self.model.set('__pending__', true);\n });\n\n this.$el.mouseup(function () {\n self.model.set('__pending__', false);\n });\n\n this.listenTo(this.model, 'form:set-saving-state', function () {\n this.disable();\n if (options.type === 'save') {\n timeoutId = setTimeout(_.bind(this.__changeSaveText, this), 1000);\n }\n });\n this.listenTo(this.model, 'form:clear-saving-state', function () {\n this.enable();\n if (options.type === 'save') {\n clearTimeout(timeoutId);\n clearInterval(intervalId);\n this.$el.val(options.text);\n }\n });\n },\n\n __changeSaveText: function () {\n phaseCount = 0;\n intervalId = setInterval(_.bind(this.__showLoadingText, this), 200);\n },\n\n __showLoadingText: function () {\n this.$el.val(SAVE_BUTTON_PHASES[phaseCount++ % SAVE_BUTTON_PHASES.length]);\n }\n });\n}\n\nfunction validateInput(options: InputOptions, model) {\n /* eslint max-statements: 0, complexity: 0 */\n\n options || (options = {});\n\n if (options.type === 'label') {\n if (!options.label) {\n Logger.warn('A label input must have a \"label\" parameter', options);\n }\n return;\n }\n\n if (options.type === 'button') {\n if (!options.title && !options.icon) {\n Logger.warn('A button input must have a \"title\" and/or an \"icon\" parameter', options);\n }\n if (!options.click && !options.href) {\n Logger.warn('A button input must have a \"click\" and/or an \"href\" parameter', options);\n }\n return;\n }\n\n if (!options.name && !options.input) {\n Logger.warn('Missing \"name\" or \"input\" parameters', options);\n }\n\n if (_.isArray(options.name) && _.isArray(options.input)) {\n throw new Error('Not allowed to have both \"name\" and \"input\" defined as array.');\n }\n\n if (options.type !== 'list' && options.name && model && model.allows) {\n let names: string[] = [];\n\n if (_.isArray(options.name)) {\n names = options.name;\n } else {\n names.push(options.name);\n }\n _.each(names, function (name) {\n if (!model.allows(name)) {\n throw new Error('field not allowed: ' + options.name);\n }\n });\n }\n\n if (_.isArray(options.input) && options.type !== 'list') {\n _.each(options.input, function (input) {\n validateInput(input, model);\n });\n }\n\n const keys = _.keys(options);\n\n const intersection = _.intersection(keys, ALL_OPTIONS);\n\n if (_.size(intersection) !== _.size(options)) {\n const fields = _.clone(ALL_OPTIONS);\n Logger.warn('Invalid input parameters', _.without(keys, ...fields), options);\n }\n}\n\nfunction generateInputOptions(options: InputOptions, form, createFn): InputOptions[] {\n options = _.clone(options);\n\n if (_.contains(['list', 'group'], options.type)) {\n options.params = _.defaults(\n {\n create: createFn,\n inputs: _.map(_.isArray(options.input) ? options.input : [options.input], function (input: InputOptions) {\n return _.first(generateInputOptions(input, form, createFn));\n })\n },\n options.params || {}\n );\n delete options.input;\n }\n\n const inputs: InputOptions[] = _.isArray(options.input) ? _.clone(options.input) : [options];\n\n return _.map(inputs, function (input) {\n const target: InputOptions = _.defaults(\n { model: form.model }, \n input,\n _.omit(options, 'input', 'inputs'),\n form.options, \n {\n id: _.uniqueId('input'),\n readOnly: form.isReadOnly(),\n read: form.hasReadMode()\n }\n );\n\n if (form.isReadOnly()) {\n target.read = target.readOnly = true;\n }\n return target;\n });\n}\n\nexport interface CreateReadFormButtonOptions {\n type: string;\n formTitle: string;\n className: string;\n}\n\nexport default {\n LABEL_OPTIONS: LABEL_OPTIONS,\n CONTAINER_OPTIONS: CONTAINER_OPTIONS,\n WRAPPER_OPTIONS: WRAPPER_OPTIONS,\n INPUT_OPTIONS: INPUT_OPTIONS,\n\n generateInputOptions: generateInputOptions,\n\n changeEventString: function (fieldNames) {\n return 'change:' + fieldNames.join(' change:');\n },\n\n createReadFormButton: function (options: CreateReadFormButtonOptions) {\n let action;\n let text;\n let ariaLabel;\n\n if (options.type === 'cancel') {\n text = ariaLabel = StringUtil.localize('oform.cancel', 'courage');\n action = function () {\n this.model.trigger('form:cancel');\n };\n } else {\n text = StringUtil.localize('oform.edit', 'courage');\n ariaLabel = text + ' ' + options.formTitle;\n action = function () {\n this.model.set('__edit__', true);\n };\n }\n\n return BaseView.extend({\n tagName: 'a',\n className: options.className,\n attributes: {\n href: '#',\n 'aria-label': ariaLabel\n },\n // TODO: refactor to enforce precompiled templates OKTA-309852\n // eslint-disable-next-line @okta/okta-ui/no-bare-templates\n template: function () {\n return _.escape(text);\n },\n events: {\n click: function (e) {\n e.preventDefault();\n action.call(this);\n }\n }\n });\n },\n\n createButton: function (options: CreateButtonOptions) {\n options = _.clone(options);\n switch (options.type) {\n case 'save':\n _.defaults(options, { className: 'button-primary' });\n break;\n case 'cancel':\n _.defaults(options, {\n className: 'button-clear', \n text: StringUtil.localize('oform.cancel', 'courage'),\n action: function () {\n this.model.trigger('form:cancel');\n }\n });\n break;\n case 'previous':\n _.defaults(options, {\n text: StringUtil.localize('oform.previous', 'courage'),\n action: function () {\n this.model.trigger('form:previous');\n }\n });\n break;\n default:\n break;\n }\n return createButton(options);\n },\n\n validateInput: validateInput,\n\n /**\n * Applies a show-when logic on a view instance.\n * The show-when is a map of a model field name -> a boolean or a function that returns a boolean.\n * The view will toggle based on the field value.\n *\n * @param {Okta.View} view a view instance that has a this.model attached to it\n * @param {Object} showWhen\n */\n applyShowWhen: function (view, showWhen) {\n const toggleAndResize = function (bool) {\n return function () {\n // The `toggle` is here since an event may be triggered before the el is in the DOM\n // and in that case slide events may not function as expected.\n view.$el.toggle(bool);\n view.model.trigger('form:resize');\n };\n };\n\n ViewUtil.applyDoWhen(view, decorateDoWhen(showWhen), function (bool, options) {\n if (!options.animate) {\n view.$el.toggle(bool);\n } else {\n view.$el['slide' + (bool ? 'Down' : 'Up')](200, toggleAndResize(bool));\n }\n });\n },\n\n applyToggleWhen: function (view, toggleWhen) {\n ViewUtil.applyDoWhen(view, decorateDoWhen(toggleWhen), function (bool, options) {\n view.$el.toggle(bool);\n view.model.trigger('form:resize');\n if (options.animate) {\n view.render();\n }\n });\n }\n};\n","import _ from '../../../util/underscore-wrapper';\nimport { BaseInputClass } from '../BaseInput';\n\nconst registry = {};\n\nfunction isBaseInput(input): input is BaseInputClass {\n if (_.isFunction(input)) {\n return _.isFunction(input.prototype.editMode) && _.isFunction(input.prototype.readMode);\n } else {\n return _.isObject(input) && _.isFunction(input.editMode) && _.isFunction(input.readMode);\n }\n}\n\n/**\n * @class module:Okta.internal.views.forms.helpers.InputRegistry\n */\nexport default /** @lends module:Okta.internal.views.forms.helpers.InputRegistry */ {\n isBaseInput: isBaseInput,\n\n /**\n * Register a form input\n * @param {String} type string identifier for the input\n * @param {BaseInput} input the input to register\n * @return {void}\n */\n register: function (type, input: BaseInputClass) {\n registry[type] = input;\n },\n\n /**\n * Get a form input by type\n * @param {Object} options input definition\n * @param {String} options.type string identifier for the input\n * @return {BaseInput} a matching input\n */\n get: function (options) {\n const input: BaseInputClass | ((...any) => BaseInputClass) = registry[options.type];\n\n return input && (isBaseInput(input) ? input : input(options));\n },\n\n /**\n * Unregister an input type\n * @param {String} type\n */\n unregister: function (type) {\n delete registry[type];\n }\n};\n","/* eslint max-statements: 0, max-params: 0 */\nimport _ from '../../../util/underscore-wrapper';\nimport StringUtil from '../../../util/StringUtil';\nimport BooleanSelect from '../inputs/BooleanSelect';\nimport TextBoxSet from '../inputs/TextBoxSet';\nimport EnumTypeHelper from './EnumTypeHelper';\nimport { InputOptions } from '../types';\n\nfunction convertStringToNumber(string) {\n const number = StringUtil.parseFloat(string);\n\n return string === '' ? null : number;\n}\n\n// converts possibleValues to choices\n// [a, b, c] => {a: a, b: b, c: c}\nfunction getChoices(values) {\n return _.object(values, values);\n}\n\nfunction isArray(type) {\n return type && type.indexOf('array') >= 0;\n}\n\n// A schema property may have an objectName either\n// at the root level or nested in the items object\nfunction getObjectName(schemaProp) {\n const items = schemaProp.get('items');\n\n if (items) {\n return items.objectName;\n }\n return schemaProp.get('objectName');\n}\n\n/**\n * Checks the validity of a schema property.\n *\n * @param {SchemaProperty} [schemaProp] A schema property backbone model\n * @param {Object} [values] An object of the form { key: [value1, value2]}\n * @return {Boolean} true/false\n * @private\n */\nfunction isValidSchemaProp(schemaProp, values) {\n const objectName = getObjectName(schemaProp);\n const results = values[objectName];\n\n // a schema property that references an empty list of values\n // Im looking at you, google apps.\n if (objectName && _(results).isEmpty()) {\n return false;\n }\n return true;\n}\n\n// Maps each __displayType__ to a basic set of inputOptions.\nfunction defaultOptions(property) {\n const type = property.get('__displayType__');\n const values = property.get('__possibleValues__');\n const name = property.get('name');\n const title = property.get('title');\n /* eslint complexity: [2, 24] */\n\n const inputOptions: InputOptions = {\n type: 'text',\n name: name,\n label: title || name\n };\n\n // @see customOptions for enum complex \"object\" type,\n // a.k.a \"object\" or \"arrayofobject\" type has enum values defined.\n // Other cases (e.g., nested object type) are not support yet.\n\n switch (type) {\n case 'arrayofstring':\n inputOptions.input = TextBoxSet;\n inputOptions.params = { itemType: 'string' };\n break;\n case 'arrayofnumber':\n inputOptions.input = TextBoxSet;\n inputOptions.params = { itemType: 'number' };\n break;\n case 'arrayofinteger':\n inputOptions.input = TextBoxSet;\n inputOptions.params = { itemType: 'integer' };\n break;\n case 'arrayofobject':\n inputOptions.input = TextBoxSet;\n inputOptions.params = { itemType: property.get('items').type };\n break;\n case 'arrayofref-id':\n inputOptions.input = TextBoxSet;\n inputOptions.params = { itemType: property.get('items').format };\n break;\n case 'boolean':\n inputOptions.input = BooleanSelect;\n break;\n case 'integer':\n case 'number':\n inputOptions.to = convertStringToNumber;\n break;\n case 'reference':\n inputOptions.type = 'select';\n inputOptions.options = getChoices(values);\n break;\n case 'image':\n inputOptions.readOnly = true;\n inputOptions.from = function (value) {\n return _.isEmpty(value) ? '' : StringUtil.localize('user.profile.image.image_set', 'courage'); // TODO\n };\n break;\n case 'password':\n inputOptions.type = 'password';\n break;\n case 'date':\n inputOptions.type = 'date';\n break;\n case 'uri':\n case 'country-code':\n case 'country_code':\n case 'language-code':\n case 'language_code':\n case 'email':\n case 'locale':\n case 'timezone':\n case 'string':\n case 'object':\n // default input options\n break;\n default:\n throw new Error(`unknown type: ${type}`);\n }\n return inputOptions;\n}\n\n// Sets nonbasic inputOptions, such as an array with possible values\nfunction customOptions(property) {\n let inputOptions: InputOptions = {};\n const name = property.get('name');\n const type = property.get('__displayType__');\n const values = property.get('__possibleValues__');\n const prefix = property.get('__fieldNamePrefix__');\n\n if (prefix) {\n inputOptions.name = prefix + name;\n inputOptions.errorField = name;\n }\n\n if (property.isEnumType()) {\n const configs = {\n displayType: type,\n title: property.get('title'),\n enumValues: property.getEnumValues()\n };\n\n inputOptions = _.extend({}, EnumTypeHelper.getEnumInputOptions(configs), inputOptions);\n } else if (isArray(type) && values) {\n inputOptions.type = 'checkboxset';\n inputOptions.input = null;\n inputOptions.options = getChoices(values);\n }\n\n return inputOptions;\n}\n\nfunction augmentSchemaProp(schemaProp, possibleValues, profile): void {\n const name = schemaProp.get('name');\n const prefix = profile.__nestedProperty__;\n let defaultValues = possibleValues[name];\n const userValues = profile.get(name);\n let values;\n\n // If API responds with a field name that differs from the form-field name\n // example: Model's 'profile.username' vs. server's 'username'\n if (prefix) {\n schemaProp.set('__fieldNamePrefix__', prefix);\n }\n\n // case 1: objectName - fixed list of values are set for the input\n const fixedValues = possibleValues[getObjectName(schemaProp)];\n\n // case 2: name only - default list of values are provided, user can add more\n // TODO: this case does not yet exist, so it is not tested\n if (defaultValues && userValues) {\n defaultValues = _.union(defaultValues, userValues);\n }\n\n // If both fixed and default values exist,\n // take the fixed values unless they are empty\n if (fixedValues && fixedValues.length) {\n values = fixedValues;\n } else if (defaultValues && defaultValues.length) {\n values = defaultValues;\n }\n\n schemaProp.set('__possibleValues__', values);\n}\n\nfunction augmentSchemaProps(schemaProps, possibleValues, profile) {\n schemaProps.each(function (schemaProp) {\n augmentSchemaProp(schemaProp, possibleValues, profile);\n });\n\n return schemaProps;\n}\n\n/**\n * Remove invalid schema properties from a collection\n *\n * @param {SchemaProperties Collection} [properties] A collection of schema properties\n * @param {Object} [values] An object of the form { key: [value1, value2]}\n * @return {Array} An array of valid schema models, this can be used to reset\n * a schema properties collection for example.\n * @private\n */\nfunction cleanSchema(properties, values) {\n return properties.filter(function (schema) {\n return isValidSchemaProp(schema, values);\n });\n}\n\nexport default {\n /**\n * Creates the options hash for BaseForm.addInput from a prepared schema\n * property.\n *\n * @param {Okta.Model} [preparedSchemaProp] A schema property backbone model\n * that has been standardized by the prepareSchema method.\n * @return {Object} An object containing all of the options needed by\n * BaseForm's addInput()\n */\n createInputOptions: function (preparedSchemaProp) {\n const custom = customOptions(preparedSchemaProp);\n const standard = defaultOptions(preparedSchemaProp);\n\n // underscore did not support nested extend\n // https://github.com/jashkenas/underscore/issues/162\n if (custom.params && standard.params) {\n custom.params = _.defaults(custom.params, standard.params);\n }\n return _.defaults(custom, standard);\n },\n\n hasValidSchemaProps: function (schemaProps, possibleValues) {\n if (_.isEmpty(schemaProps)) {\n return false;\n }\n const validSchema = cleanSchema(schemaProps, possibleValues);\n return !!validSchema.length;\n },\n\n /**\n * This method is responsible for preparing a collection for the form\n * factory to use by putting all of the information to create an input\n * into the schema property and removing invalid properties.\n * The typical UD form takes 3 models:\n * The data model has the input values.\n * The schema model describes which input to use, such as a textbox or a checkbox.\n * The possible values model provide a list of default options to display, for example in a drop down menu.\n *\n * @param {SchemaProperty Collection} [schemaProps] A schema property backbone model.\n * @param {Object} [possibleValues] An object of the form { key: [value1, value2]}\n * @param {Okta.Model} [profile] A backbone model containing the property described by the schema property.\n * @return {SchemaProperty Collection} A schema property collection with standardized models.\n * The standard schema model adds a couple of additional private properties to\n * allow the form factory to reference lookup values or name prefixes without going to a second model.\n */\n prepareSchema: function (schemaProps, possibleValues, profile) {\n schemaProps.reset(cleanSchema(schemaProps, possibleValues));\n return augmentSchemaProps(schemaProps, possibleValues, profile);\n },\n\n /**\n * `prepareSchema` will reset the property list which may not be necessary at some case.\n * like when setting default value for schema properties.\n * (more detail about such case @see wiki UX, App+Entitlements+for+Provisioning)\n *\n * @param { }\n * @return {String}\n */\n\n augmentSchemaProps: augmentSchemaProps,\n\n augmentSchemaProp: augmentSchemaProp\n};\n","// TODO: maybe replaced by\n// https://github.com/Calvein/empty-module\n// https://github.com/crimx/empty-module-loader\n\n\n\n\nexport default {\n extend: () => {}\n};\n","import $ from '@okta/courage/src/util/jquery-wrapper';\n\n/*!\n * jQuery UI Scroll Parent @VERSION\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * Modifications Copyright 2021 Okta, Inc.\n */\n\n// This is required because SIW doesn't want to include jqueryui even though it's an external dependency of courage\n$.fn.scrollParent = function( includeHidden? ) {\n const position = this.css( \"position\" ),\n excludeStaticParent = position === \"absolute\",\n overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/,\n scrollParent = this.parents().filter( function() {\n const parent = $( this );\n if ( excludeStaticParent && parent.css( \"position\" ) === \"static\" ) {\n return false;\n }\n return overflowRegex.test( parent.css( \"overflow\" ) + parent.css( \"overflow-y\" ) +\n parent.css( \"overflow-x\" ) );\n } ).eq( 0 );\n\n return position === \"fixed\" || !scrollParent.length ?\n $( this[ 0 ].ownerDocument || document ) :\n scrollParent;\n};\n","// Backbone.js 1.4.0\n\n// (c) 2010-2019 Jeremy Ashkenas and DocumentCloud\n// Backbone may be freely distributed under the MIT license.\n// For all details and documentation:\n// http://backbonejs.org\n\n(function(factory) {\n\n // Establish the root object, `window` (`self`) in the browser, or `global` on the server.\n // We use `self` instead of `window` for `WebWorker` support.\n var root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global;\n\n // Set up Backbone appropriately for the environment. Start with AMD.\n if (typeof define === 'function' && define.amd) {\n define(['underscore', 'jquery', 'exports'], function(_, $, exports) {\n // Export global even in AMD case in case this script is loaded with\n // others that may still expect a global Backbone.\n root.Backbone = factory(root, exports, _, $);\n });\n\n // Next for Node.js or CommonJS. jQuery may not be needed as a module.\n } else if (typeof exports !== 'undefined') {\n var _ = require('underscore'), $;\n try { $ = require('jquery'); } catch (e) {}\n factory(root, exports, _, $);\n\n // Finally, as a browser global.\n } else {\n root.Backbone = factory(root, {}, root._, root.jQuery || root.Zepto || root.ender || root.$);\n }\n\n})(function(root, Backbone, _, $) {\n\n // Initial Setup\n // -------------\n\n // Save the previous value of the `Backbone` variable, so that it can be\n // restored later on, if `noConflict` is used.\n var previousBackbone = root.Backbone;\n\n // Create a local reference to a common array method we'll want to use later.\n var slice = Array.prototype.slice;\n\n // Current version of the library. Keep in sync with `package.json`.\n Backbone.VERSION = '1.4.0';\n\n // For Backbone's purposes, jQuery, Zepto, Ender, or My Library (kidding) owns\n // the `$` variable.\n Backbone.$ = $;\n\n // Runs Backbone.js in *noConflict* mode, returning the `Backbone` variable\n // to its previous owner. Returns a reference to this Backbone object.\n Backbone.noConflict = function() {\n root.Backbone = previousBackbone;\n return this;\n };\n\n // Turn on `emulateHTTP` to support legacy HTTP servers. Setting this option\n // will fake `\"PATCH\"`, `\"PUT\"` and `\"DELETE\"` requests via the `_method` parameter and\n // set a `X-Http-Method-Override` header.\n Backbone.emulateHTTP = false;\n\n // Turn on `emulateJSON` to support legacy servers that can't deal with direct\n // `application/json` requests ... this will encode the body as\n // `application/x-www-form-urlencoded` instead and will send the model in a\n // form param named `model`.\n Backbone.emulateJSON = false;\n\n // Backbone.Events\n // ---------------\n\n // A module that can be mixed in to *any object* in order to provide it with\n // a custom event channel. You may bind a callback to an event with `on` or\n // remove with `off`; `trigger`-ing an event fires all callbacks in\n // succession.\n //\n // var object = {};\n // _.extend(object, Backbone.Events);\n // object.on('expand', function(){ alert('expanded'); });\n // object.trigger('expand');\n //\n var Events = Backbone.Events = {};\n\n // Regular expression used to split event strings.\n var eventSplitter = /\\s+/;\n\n // A private global variable to share between listeners and listenees.\n var _listening;\n\n // Iterates over the standard `event, callback` (as well as the fancy multiple\n // space-separated events `\"change blur\", callback` and jQuery-style event\n // maps `{event: callback}`).\n var eventsApi = function(iteratee, events, name, callback, opts) {\n var i = 0, names;\n if (name && typeof name === 'object') {\n // Handle event maps.\n if (callback !== void 0 && 'context' in opts && opts.context === void 0) opts.context = callback;\n for (names = _.keys(name); i < names.length ; i++) {\n events = eventsApi(iteratee, events, names[i], name[names[i]], opts);\n }\n } else if (name && eventSplitter.test(name)) {\n // Handle space-separated event names by delegating them individually.\n for (names = name.split(eventSplitter); i < names.length; i++) {\n events = iteratee(events, names[i], callback, opts);\n }\n } else {\n // Finally, standard events.\n events = iteratee(events, name, callback, opts);\n }\n return events;\n };\n\n // Bind an event to a `callback` function. Passing `\"all\"` will bind\n // the callback to all events fired.\n Events.on = function(name, callback, context) {\n this._events = eventsApi(onApi, this._events || {}, name, callback, {\n context: context,\n ctx: this,\n listening: _listening\n });\n\n if (_listening) {\n var listeners = this._listeners || (this._listeners = {});\n listeners[_listening.id] = _listening;\n // Allow the listening to use a counter, instead of tracking\n // callbacks for library interop\n _listening.interop = false;\n }\n\n return this;\n };\n\n // Inversion-of-control versions of `on`. Tell *this* object to listen to\n // an event in another object... keeping track of what it's listening to\n // for easier unbinding later.\n Events.listenTo = function(obj, name, callback) {\n if (!obj) return this;\n var id = obj._listenId || (obj._listenId = _.uniqueId('l'));\n var listeningTo = this._listeningTo || (this._listeningTo = {});\n var listening = _listening = listeningTo[id];\n\n // This object is not listening to any other events on `obj` yet.\n // Setup the necessary references to track the listening callbacks.\n if (!listening) {\n this._listenId || (this._listenId = _.uniqueId('l'));\n listening = _listening = listeningTo[id] = new Listening(this, obj);\n }\n\n // Bind callbacks on obj.\n var error = tryCatchOn(obj, name, callback, this);\n _listening = void 0;\n\n if (error) throw error;\n // If the target obj is not Backbone.Events, track events manually.\n if (listening.interop) listening.on(name, callback);\n\n return this;\n };\n\n // The reducing API that adds a callback to the `events` object.\n var onApi = function(events, name, callback, options) {\n if (callback) {\n var handlers = events[name] || (events[name] = []);\n var context = options.context, ctx = options.ctx, listening = options.listening;\n if (listening) listening.count++;\n\n handlers.push({callback: callback, context: context, ctx: context || ctx, listening: listening});\n }\n return events;\n };\n\n // An try-catch guarded #on function, to prevent poisoning the global\n // `_listening` variable.\n var tryCatchOn = function(obj, name, callback, context) {\n try {\n obj.on(name, callback, context);\n } catch (e) {\n return e;\n }\n };\n\n // Remove one or many callbacks. If `context` is null, removes all\n // callbacks with that function. If `callback` is null, removes all\n // callbacks for the event. If `name` is null, removes all bound\n // callbacks for all events.\n Events.off = function(name, callback, context) {\n if (!this._events) return this;\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: context,\n listeners: this._listeners\n });\n\n return this;\n };\n\n // Tell this object to stop listening to either specific events ... or\n // to every object it's currently listening to.\n Events.stopListening = function(obj, name, callback) {\n var listeningTo = this._listeningTo;\n if (!listeningTo) return this;\n\n var ids = obj ? [obj._listenId] : _.keys(listeningTo);\n for (var i = 0; i < ids.length; i++) {\n var listening = listeningTo[ids[i]];\n\n // If listening doesn't exist, this object is not currently\n // listening to obj. Break out early.\n if (!listening) break;\n\n listening.obj.off(name, callback, this);\n if (listening.interop) listening.off(name, callback);\n }\n if (_.isEmpty(listeningTo)) this._listeningTo = void 0;\n\n return this;\n };\n\n // The reducing API that removes a callback from the `events` object.\n var offApi = function(events, name, callback, options) {\n if (!events) return;\n\n var context = options.context, listeners = options.listeners;\n var i = 0, names;\n\n // Delete all event listeners and \"drop\" events.\n if (!name && !context && !callback) {\n for (names = _.keys(listeners); i < names.length; i++) {\n listeners[names[i]].cleanup();\n }\n return;\n }\n\n names = name ? [name] : _.keys(events);\n for (; i < names.length; i++) {\n name = names[i];\n var handlers = events[name];\n\n // Bail out if there are no events stored.\n if (!handlers) break;\n\n // Find any remaining events.\n var remaining = [];\n for (var j = 0; j < handlers.length; j++) {\n var handler = handlers[j];\n if (\n callback && callback !== handler.callback &&\n callback !== handler.callback._callback ||\n context && context !== handler.context\n ) {\n remaining.push(handler);\n } else {\n var listening = handler.listening;\n if (listening) listening.off(name, callback);\n }\n }\n\n // Replace events if there are any remaining. Otherwise, clean up.\n if (remaining.length) {\n events[name] = remaining;\n } else {\n delete events[name];\n }\n }\n\n return events;\n };\n\n // Bind an event to only be triggered a single time. After the first time\n // the callback is invoked, its listener will be removed. If multiple events\n // are passed in using the space-separated syntax, the handler will fire\n // once for each event, not once for a combination of all events.\n Events.once = function(name, callback, context) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, this.off.bind(this));\n if (typeof name === 'string' && context == null) callback = void 0;\n return this.on(events, callback, context);\n };\n\n // Inversion-of-control versions of `once`.\n Events.listenToOnce = function(obj, name, callback) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, this.stopListening.bind(this, obj));\n return this.listenTo(obj, events);\n };\n\n // Reduces the event callbacks into a map of `{event: onceWrapper}`.\n // `offer` unbinds the `onceWrapper` after it has been called.\n var onceMap = function(map, name, callback, offer) {\n if (callback) {\n var once = map[name] = _.once(function() {\n offer(name, once);\n callback.apply(this, arguments);\n });\n once._callback = callback;\n }\n return map;\n };\n\n // Trigger one or many events, firing all bound callbacks. Callbacks are\n // passed the same arguments as `trigger` is, apart from the event name\n // (unless you're listening on `\"all\"`, which will cause your callback to\n // receive the true name of the event as the first argument).\n Events.trigger = function(name) {\n if (!this._events) return this;\n\n var length = Math.max(0, arguments.length - 1);\n var args = Array(length);\n for (var i = 0; i < length; i++) args[i] = arguments[i + 1];\n\n eventsApi(triggerApi, this._events, name, void 0, args);\n return this;\n };\n\n // Handles triggering the appropriate event callbacks.\n var triggerApi = function(objEvents, name, callback, args) {\n if (objEvents) {\n var events = objEvents[name];\n var allEvents = objEvents.all;\n if (events && allEvents) allEvents = allEvents.slice();\n if (events) triggerEvents(events, args);\n if (allEvents) triggerEvents(allEvents, [name].concat(args));\n }\n return objEvents;\n };\n\n // A difficult-to-believe, but optimized internal dispatch function for\n // triggering events. Tries to keep the usual cases speedy (most internal\n // Backbone events have 3 arguments).\n var triggerEvents = function(events, args) {\n var ev, i = -1, l = events.length, a1 = args[0], a2 = args[1], a3 = args[2];\n switch (args.length) {\n case 0: while (++i < l) (ev = events[i]).callback.call(ev.ctx); return;\n case 1: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1); return;\n case 2: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2); return;\n case 3: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2, a3); return;\n default: while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args); return;\n }\n };\n\n // A listening class that tracks and cleans up memory bindings\n // when all callbacks have been offed.\n var Listening = function(listener, obj) {\n this.id = listener._listenId;\n this.listener = listener;\n this.obj = obj;\n this.interop = true;\n this.count = 0;\n this._events = void 0;\n };\n\n Listening.prototype.on = Events.on;\n\n // Offs a callback (or several).\n // Uses an optimized counter if the listenee uses Backbone.Events.\n // Otherwise, falls back to manual tracking to support events\n // library interop.\n Listening.prototype.off = function(name, callback) {\n var cleanup;\n if (this.interop) {\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: void 0,\n listeners: void 0\n });\n cleanup = !this._events;\n } else {\n this.count--;\n cleanup = this.count === 0;\n }\n if (cleanup) this.cleanup();\n };\n\n // Cleans up memory bindings between the listener and the listenee.\n Listening.prototype.cleanup = function() {\n delete this.listener._listeningTo[this.obj._listenId];\n if (!this.interop) delete this.obj._listeners[this.id];\n };\n\n // Aliases for backwards compatibility.\n Events.bind = Events.on;\n Events.unbind = Events.off;\n\n // Allow the `Backbone` object to serve as a global event bus, for folks who\n // want global \"pubsub\" in a convenient place.\n _.extend(Backbone, Events);\n\n // Backbone.Model\n // --------------\n\n // Backbone **Models** are the basic data object in the framework --\n // frequently representing a row in a table in a database on your server.\n // A discrete chunk of data and a bunch of useful, related methods for\n // performing computations and transformations on that data.\n\n // Create a new model with the specified attributes. A client id (`cid`)\n // is automatically generated and assigned for you.\n var Model = Backbone.Model = function(attributes, options) {\n var attrs = attributes || {};\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n this.cid = _.uniqueId(this.cidPrefix);\n this.attributes = {};\n if (options.collection) this.collection = options.collection;\n if (options.parse) attrs = this.parse(attrs, options) || {};\n var defaults = _.result(this, 'defaults');\n attrs = _.defaults(_.extend({}, defaults, attrs), defaults);\n this.set(attrs, options);\n this.changed = {};\n this.initialize.apply(this, arguments);\n };\n\n // Attach all inheritable methods to the Model prototype.\n _.extend(Model.prototype, Events, {\n\n // A hash of attributes whose current and previous value differ.\n changed: null,\n\n // The value returned during the last failed validation.\n validationError: null,\n\n // The default name for the JSON `id` attribute is `\"id\"`. MongoDB and\n // CouchDB users may want to set this to `\"_id\"`.\n idAttribute: 'id',\n\n // The prefix is used to create the client id which is used to identify models locally.\n // You may want to override this if you're experiencing name clashes with model ids.\n cidPrefix: 'c',\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Model.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Return a copy of the model's `attributes` object.\n toJSON: function(options) {\n return _.clone(this.attributes);\n },\n\n // Proxy `Backbone.sync` by default -- but override this if you need\n // custom syncing semantics for *this* particular model.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Get the value of an attribute.\n get: function(attr) {\n return this.attributes[attr];\n },\n\n // Get the HTML-escaped value of an attribute.\n escape: function(attr) {\n return _.escape(this.get(attr));\n },\n\n // Returns `true` if the attribute contains a value that is not null\n // or undefined.\n has: function(attr) {\n return this.get(attr) != null;\n },\n\n // Special-cased proxy to underscore's `_.matches` method.\n matches: function(attrs) {\n return !!_.iteratee(attrs, this)(this.attributes);\n },\n\n // Set a hash of model attributes on the object, firing `\"change\"`. This is\n // the core primitive operation of a model, updating the data and notifying\n // anyone who needs to know about the change in state. The heart of the beast.\n set: function(key, val, options) {\n if (key == null) return this;\n\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options || (options = {});\n\n // Run validation.\n if (!this._validate(attrs, options)) return false;\n\n // Extract attributes and options.\n var unset = options.unset;\n var silent = options.silent;\n var changes = [];\n var changing = this._changing;\n this._changing = true;\n\n if (!changing) {\n this._previousAttributes = _.clone(this.attributes);\n this.changed = {};\n }\n\n var current = this.attributes;\n var changed = this.changed;\n var prev = this._previousAttributes;\n\n // For each `set` attribute, update or delete the current value.\n for (var attr in attrs) {\n val = attrs[attr];\n if (!_.isEqual(current[attr], val)) changes.push(attr);\n if (!_.isEqual(prev[attr], val)) {\n changed[attr] = val;\n } else {\n delete changed[attr];\n }\n unset ? delete current[attr] : current[attr] = val;\n }\n\n // Update the `id`.\n if (this.idAttribute in attrs) this.id = this.get(this.idAttribute);\n\n // Trigger all relevant attribute changes.\n if (!silent) {\n if (changes.length) this._pending = options;\n for (var i = 0; i < changes.length; i++) {\n this.trigger('change:' + changes[i], this, current[changes[i]], options);\n }\n }\n\n // You might be wondering why there's a `while` loop here. Changes can\n // be recursively nested within `\"change\"` events.\n if (changing) return this;\n if (!silent) {\n while (this._pending) {\n options = this._pending;\n this._pending = false;\n this.trigger('change', this, options);\n }\n }\n this._pending = false;\n this._changing = false;\n return this;\n },\n\n // Remove an attribute from the model, firing `\"change\"`. `unset` is a noop\n // if the attribute doesn't exist.\n unset: function(attr, options) {\n return this.set(attr, void 0, _.extend({}, options, {unset: true}));\n },\n\n // Clear all attributes on the model, firing `\"change\"`.\n clear: function(options) {\n var attrs = {};\n for (var key in this.attributes) attrs[key] = void 0;\n return this.set(attrs, _.extend({}, options, {unset: true}));\n },\n\n // Determine if the model has changed since the last `\"change\"` event.\n // If you specify an attribute name, determine if that attribute has changed.\n hasChanged: function(attr) {\n if (attr == null) return !_.isEmpty(this.changed);\n return _.has(this.changed, attr);\n },\n\n // Return an object containing all the attributes that have changed, or\n // false if there are no changed attributes. Useful for determining what\n // parts of a view need to be updated and/or what attributes need to be\n // persisted to the server. Unset attributes will be set to undefined.\n // You can also pass an attributes object to diff against the model,\n // determining if there *would be* a change.\n changedAttributes: function(diff) {\n if (!diff) return this.hasChanged() ? _.clone(this.changed) : false;\n var old = this._changing ? this._previousAttributes : this.attributes;\n var changed = {};\n var hasChanged;\n for (var attr in diff) {\n var val = diff[attr];\n if (_.isEqual(old[attr], val)) continue;\n changed[attr] = val;\n hasChanged = true;\n }\n return hasChanged ? changed : false;\n },\n\n // Get the previous value of an attribute, recorded at the time the last\n // `\"change\"` event was fired.\n previous: function(attr) {\n if (attr == null || !this._previousAttributes) return null;\n return this._previousAttributes[attr];\n },\n\n // Get all of the attributes of the model at the time of the previous\n // `\"change\"` event.\n previousAttributes: function() {\n return _.clone(this._previousAttributes);\n },\n\n // Fetch the model from the server, merging the response with the model's\n // local attributes. Any changed attributes will trigger a \"change\" event.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var model = this;\n var success = options.success;\n options.success = function(resp) {\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (!model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Set a hash of model attributes, and sync the model to the server.\n // If the server returns an attributes hash that differs, the model's\n // state will be `set` again.\n save: function(key, val, options) {\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (key == null || typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options = _.extend({validate: true, parse: true}, options);\n var wait = options.wait;\n\n // If we're not waiting and attributes exist, save acts as\n // `set(attr).save(null, opts)` with validation. Otherwise, check if\n // the model will be valid when the attributes, if any, are set.\n if (attrs && !wait) {\n if (!this.set(attrs, options)) return false;\n } else if (!this._validate(attrs, options)) {\n return false;\n }\n\n // After a successful server-side save, the client is (optionally)\n // updated with the server-side state.\n var model = this;\n var success = options.success;\n var attributes = this.attributes;\n options.success = function(resp) {\n // Ensure attributes are restored during synchronous saves.\n model.attributes = attributes;\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (wait) serverAttrs = _.extend({}, attrs, serverAttrs);\n if (serverAttrs && !model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n\n // Set temporary attributes if `{wait: true}` to properly find new ids.\n if (attrs && wait) this.attributes = _.extend({}, attributes, attrs);\n\n var method = this.isNew() ? 'create' : options.patch ? 'patch' : 'update';\n if (method === 'patch' && !options.attrs) options.attrs = attrs;\n var xhr = this.sync(method, this, options);\n\n // Restore attributes.\n this.attributes = attributes;\n\n return xhr;\n },\n\n // Destroy this model on the server if it was already persisted.\n // Optimistically removes the model from its collection, if it has one.\n // If `wait: true` is passed, waits for the server to respond before removal.\n destroy: function(options) {\n options = options ? _.clone(options) : {};\n var model = this;\n var success = options.success;\n var wait = options.wait;\n\n var destroy = function() {\n model.stopListening();\n model.trigger('destroy', model, model.collection, options);\n };\n\n options.success = function(resp) {\n if (wait) destroy();\n if (success) success.call(options.context, model, resp, options);\n if (!model.isNew()) model.trigger('sync', model, resp, options);\n };\n\n var xhr = false;\n if (this.isNew()) {\n _.defer(options.success);\n } else {\n wrapError(this, options);\n xhr = this.sync('delete', this, options);\n }\n if (!wait) destroy();\n return xhr;\n },\n\n // Default URL for the model's representation on the server -- if you're\n // using Backbone's restful methods, override this to change the endpoint\n // that will be called.\n url: function() {\n var base =\n _.result(this, 'urlRoot') ||\n _.result(this.collection, 'url') ||\n urlError();\n if (this.isNew()) return base;\n var id = this.get(this.idAttribute);\n return base.replace(/[^\\/]$/, '$&/') + encodeURIComponent(id);\n },\n\n // **parse** converts a response into the hash of attributes to be `set` on\n // the model. The default implementation is just to pass the response along.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new model with identical attributes to this one.\n clone: function() {\n return new this.constructor(this.attributes);\n },\n\n // A model is new if it has never been saved to the server, and lacks an id.\n isNew: function() {\n return !this.has(this.idAttribute);\n },\n\n // Check if the model is currently in a valid state.\n isValid: function(options) {\n return this._validate({}, _.extend({}, options, {validate: true}));\n },\n\n // Run validation against the next complete set of model attributes,\n // returning `true` if all is well. Otherwise, fire an `\"invalid\"` event.\n _validate: function(attrs, options) {\n if (!options.validate || !this.validate) return true;\n attrs = _.extend({}, this.attributes, attrs);\n var error = this.validationError = this.validate(attrs, options) || null;\n if (!error) return true;\n this.trigger('invalid', this, error, _.extend(options, {validationError: error}));\n return false;\n }\n\n });\n\n // Backbone.Collection\n // -------------------\n\n // If models tend to represent a single row of data, a Backbone Collection is\n // more analogous to a table full of data ... or a small slice or page of that\n // table, or a collection of rows that belong together for a particular reason\n // -- all of the messages in this particular folder, all of the documents\n // belonging to this particular author, and so on. Collections maintain\n // indexes of their models, both in order, and for lookup by `id`.\n\n // Create a new **Collection**, perhaps to contain a specific type of `model`.\n // If a `comparator` is specified, the Collection will maintain\n // its models in sort order, as they're added and removed.\n var Collection = Backbone.Collection = function(models, options) {\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n if (options.model) this.model = options.model;\n if (options.comparator !== void 0) this.comparator = options.comparator;\n this._reset();\n this.initialize.apply(this, arguments);\n if (models) this.reset(models, _.extend({silent: true}, options));\n };\n\n // Default options for `Collection#set`.\n var setOptions = {add: true, remove: true, merge: true};\n var addOptions = {add: true, remove: false};\n\n // Splices `insert` into `array` at index `at`.\n var splice = function(array, insert, at) {\n at = Math.min(Math.max(at, 0), array.length);\n var tail = Array(array.length - at);\n var length = insert.length;\n var i;\n for (i = 0; i < tail.length; i++) tail[i] = array[i + at];\n for (i = 0; i < length; i++) array[i + at] = insert[i];\n for (i = 0; i < tail.length; i++) array[i + length + at] = tail[i];\n };\n\n // Define the Collection's inheritable methods.\n _.extend(Collection.prototype, Events, {\n\n // The default model for a collection is just a **Backbone.Model**.\n // This should be overridden in most cases.\n model: Model,\n\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Collection.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // The JSON representation of a Collection is an array of the\n // models' attributes.\n toJSON: function(options) {\n return this.map(function(model) { return model.toJSON(options); });\n },\n\n // Proxy `Backbone.sync` by default.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Add a model, or list of models to the set. `models` may be Backbone\n // Models or raw JavaScript objects to be converted to Models, or any\n // combination of the two.\n add: function(models, options) {\n return this.set(models, _.extend({merge: false}, options, addOptions));\n },\n\n // Remove a model, or a list of models from the set.\n remove: function(models, options) {\n options = _.extend({}, options);\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n var removed = this._removeModels(models, options);\n if (!options.silent && removed.length) {\n options.changes = {added: [], merged: [], removed: removed};\n this.trigger('update', this, options);\n }\n return singular ? removed[0] : removed;\n },\n\n // Update a collection by `set`-ing a new list of models, adding new ones,\n // removing models that are no longer present, and merging models that\n // already exist in the collection, as necessary. Similar to **Model#set**,\n // the core operation for updating the data contained by the collection.\n set: function(models, options) {\n if (models == null) return;\n\n options = _.extend({}, setOptions, options);\n if (options.parse && !this._isModel(models)) {\n models = this.parse(models, options) || [];\n }\n\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n\n var at = options.at;\n if (at != null) at = +at;\n if (at > this.length) at = this.length;\n if (at < 0) at += this.length + 1;\n\n var set = [];\n var toAdd = [];\n var toMerge = [];\n var toRemove = [];\n var modelMap = {};\n\n var add = options.add;\n var merge = options.merge;\n var remove = options.remove;\n\n var sort = false;\n var sortable = this.comparator && at == null && options.sort !== false;\n var sortAttr = _.isString(this.comparator) ? this.comparator : null;\n\n // Turn bare objects into model references, and prevent invalid models\n // from being added.\n var model, i;\n for (i = 0; i < models.length; i++) {\n model = models[i];\n\n // If a duplicate is found, prevent it from being added and\n // optionally merge it into the existing model.\n var existing = this.get(model);\n if (existing) {\n if (merge && model !== existing) {\n var attrs = this._isModel(model) ? model.attributes : model;\n if (options.parse) attrs = existing.parse(attrs, options);\n existing.set(attrs, options);\n toMerge.push(existing);\n if (sortable && !sort) sort = existing.hasChanged(sortAttr);\n }\n if (!modelMap[existing.cid]) {\n modelMap[existing.cid] = true;\n set.push(existing);\n }\n models[i] = existing;\n\n // If this is a new, valid model, push it to the `toAdd` list.\n } else if (add) {\n model = models[i] = this._prepareModel(model, options);\n if (model) {\n toAdd.push(model);\n this._addReference(model, options);\n modelMap[model.cid] = true;\n set.push(model);\n }\n }\n }\n\n // Remove stale models.\n if (remove) {\n for (i = 0; i < this.length; i++) {\n model = this.models[i];\n if (!modelMap[model.cid]) toRemove.push(model);\n }\n if (toRemove.length) this._removeModels(toRemove, options);\n }\n\n // See if sorting is needed, update `length` and splice in new models.\n var orderChanged = false;\n var replace = !sortable && add && remove;\n if (set.length && replace) {\n orderChanged = this.length !== set.length || _.some(this.models, function(m, index) {\n return m !== set[index];\n });\n this.models.length = 0;\n splice(this.models, set, 0);\n this.length = this.models.length;\n } else if (toAdd.length) {\n if (sortable) sort = true;\n splice(this.models, toAdd, at == null ? this.length : at);\n this.length = this.models.length;\n }\n\n // Silently sort the collection if appropriate.\n if (sort) this.sort({silent: true});\n\n // Unless silenced, it's time to fire all appropriate add/sort/update events.\n if (!options.silent) {\n for (i = 0; i < toAdd.length; i++) {\n if (at != null) options.index = at + i;\n model = toAdd[i];\n model.trigger('add', model, this, options);\n }\n if (sort || orderChanged) this.trigger('sort', this, options);\n if (toAdd.length || toRemove.length || toMerge.length) {\n options.changes = {\n added: toAdd,\n removed: toRemove,\n merged: toMerge\n };\n this.trigger('update', this, options);\n }\n }\n\n // Return the added (or merged) model (or models).\n return singular ? models[0] : models;\n },\n\n // When you have more items than you want to add or remove individually,\n // you can reset the entire set with a new list of models, without firing\n // any granular `add` or `remove` events. Fires `reset` when finished.\n // Useful for bulk operations and optimizations.\n reset: function(models, options) {\n options = options ? _.clone(options) : {};\n for (var i = 0; i < this.models.length; i++) {\n this._removeReference(this.models[i], options);\n }\n options.previousModels = this.models;\n this._reset();\n models = this.add(models, _.extend({silent: true}, options));\n if (!options.silent) this.trigger('reset', this, options);\n return models;\n },\n\n // Add a model to the end of the collection.\n push: function(model, options) {\n return this.add(model, _.extend({at: this.length}, options));\n },\n\n // Remove a model from the end of the collection.\n pop: function(options) {\n var model = this.at(this.length - 1);\n return this.remove(model, options);\n },\n\n // Add a model to the beginning of the collection.\n unshift: function(model, options) {\n return this.add(model, _.extend({at: 0}, options));\n },\n\n // Remove a model from the beginning of the collection.\n shift: function(options) {\n var model = this.at(0);\n return this.remove(model, options);\n },\n\n // Slice out a sub-array of models from the collection.\n slice: function() {\n return slice.apply(this.models, arguments);\n },\n\n // Get a model from the set by id, cid, model object with id or cid\n // properties, or an attributes object that is transformed through modelId.\n get: function(obj) {\n if (obj == null) return void 0;\n return this._byId[obj] ||\n this._byId[this.modelId(this._isModel(obj) ? obj.attributes : obj)] ||\n obj.cid && this._byId[obj.cid];\n },\n\n // Returns `true` if the model is in the collection.\n has: function(obj) {\n return this.get(obj) != null;\n },\n\n // Get the model at the given index.\n at: function(index) {\n if (index < 0) index += this.length;\n return this.models[index];\n },\n\n // Return models with matching attributes. Useful for simple cases of\n // `filter`.\n where: function(attrs, first) {\n return this[first ? 'find' : 'filter'](attrs);\n },\n\n // Return the first model with matching attributes. Useful for simple cases\n // of `find`.\n findWhere: function(attrs) {\n return this.where(attrs, true);\n },\n\n // Force the collection to re-sort itself. You don't need to call this under\n // normal circumstances, as the set will maintain sort order as each item\n // is added.\n sort: function(options) {\n var comparator = this.comparator;\n if (!comparator) throw new Error('Cannot sort a set without a comparator');\n options || (options = {});\n\n var length = comparator.length;\n if (_.isFunction(comparator)) comparator = comparator.bind(this);\n\n // Run sort based on type of `comparator`.\n if (length === 1 || _.isString(comparator)) {\n this.models = this.sortBy(comparator);\n } else {\n this.models.sort(comparator);\n }\n if (!options.silent) this.trigger('sort', this, options);\n return this;\n },\n\n // Pluck an attribute from each model in the collection.\n pluck: function(attr) {\n return this.map(attr + '');\n },\n\n // Fetch the default set of models for this collection, resetting the\n // collection when they arrive. If `reset: true` is passed, the response\n // data will be passed through the `reset` method instead of `set`.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var success = options.success;\n var collection = this;\n options.success = function(resp) {\n var method = options.reset ? 'reset' : 'set';\n collection[method](resp, options);\n if (success) success.call(options.context, collection, resp, options);\n collection.trigger('sync', collection, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Create a new instance of a model in this collection. Add the model to the\n // collection immediately, unless `wait: true` is passed, in which case we\n // wait for the server to agree.\n create: function(model, options) {\n options = options ? _.clone(options) : {};\n var wait = options.wait;\n model = this._prepareModel(model, options);\n if (!model) return false;\n if (!wait) this.add(model, options);\n var collection = this;\n var success = options.success;\n options.success = function(m, resp, callbackOpts) {\n if (wait) collection.add(m, callbackOpts);\n if (success) success.call(callbackOpts.context, m, resp, callbackOpts);\n };\n model.save(null, options);\n return model;\n },\n\n // **parse** converts a response into a list of models to be added to the\n // collection. The default implementation is just to pass it through.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new collection with an identical list of models as this one.\n clone: function() {\n return new this.constructor(this.models, {\n model: this.model,\n comparator: this.comparator\n });\n },\n\n // Define how to uniquely identify models in the collection.\n modelId: function(attrs) {\n return attrs[this.model.prototype.idAttribute || 'id'];\n },\n\n // Get an iterator of all models in this collection.\n values: function() {\n return new CollectionIterator(this, ITERATOR_VALUES);\n },\n\n // Get an iterator of all model IDs in this collection.\n keys: function() {\n return new CollectionIterator(this, ITERATOR_KEYS);\n },\n\n // Get an iterator of all [ID, model] tuples in this collection.\n entries: function() {\n return new CollectionIterator(this, ITERATOR_KEYSVALUES);\n },\n\n // Private method to reset all internal state. Called when the collection\n // is first initialized or reset.\n _reset: function() {\n this.length = 0;\n this.models = [];\n this._byId = {};\n },\n\n // Prepare a hash of attributes (or other model) to be added to this\n // collection.\n _prepareModel: function(attrs, options) {\n if (this._isModel(attrs)) {\n if (!attrs.collection) attrs.collection = this;\n return attrs;\n }\n options = options ? _.clone(options) : {};\n options.collection = this;\n var model = new this.model(attrs, options);\n if (!model.validationError) return model;\n this.trigger('invalid', this, model.validationError, options);\n return false;\n },\n\n // Internal method called by both remove and set.\n _removeModels: function(models, options) {\n var removed = [];\n for (var i = 0; i < models.length; i++) {\n var model = this.get(models[i]);\n if (!model) continue;\n\n var index = this.indexOf(model);\n this.models.splice(index, 1);\n this.length--;\n\n // Remove references before triggering 'remove' event to prevent an\n // infinite loop. #3693\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes);\n if (id != null) delete this._byId[id];\n\n if (!options.silent) {\n options.index = index;\n model.trigger('remove', model, this, options);\n }\n\n removed.push(model);\n this._removeReference(model, options);\n }\n return removed;\n },\n\n // Method for checking whether an object should be considered a model for\n // the purposes of adding to the collection.\n _isModel: function(model) {\n return model instanceof Model;\n },\n\n // Internal method to create a model's ties to a collection.\n _addReference: function(model, options) {\n this._byId[model.cid] = model;\n var id = this.modelId(model.attributes);\n if (id != null) this._byId[id] = model;\n model.on('all', this._onModelEvent, this);\n },\n\n // Internal method to sever a model's ties to a collection.\n _removeReference: function(model, options) {\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes);\n if (id != null) delete this._byId[id];\n if (this === model.collection) delete model.collection;\n model.off('all', this._onModelEvent, this);\n },\n\n // Internal method called every time a model in the set fires an event.\n // Sets need to update their indexes when models change ids. All other\n // events simply proxy through. \"add\" and \"remove\" events that originate\n // in other collections are ignored.\n _onModelEvent: function(event, model, collection, options) {\n if (model) {\n if ((event === 'add' || event === 'remove') && collection !== this) return;\n if (event === 'destroy') this.remove(model, options);\n if (event === 'change') {\n var prevId = this.modelId(model.previousAttributes());\n var id = this.modelId(model.attributes);\n if (prevId !== id) {\n if (prevId != null) delete this._byId[prevId];\n if (id != null) this._byId[id] = model;\n }\n }\n }\n this.trigger.apply(this, arguments);\n }\n\n });\n\n // Defining an @@iterator method implements JavaScript's Iterable protocol.\n // In modern ES2015 browsers, this value is found at Symbol.iterator.\n /* global Symbol */\n var $$iterator = typeof Symbol === 'function' && Symbol.iterator;\n if ($$iterator) {\n Collection.prototype[$$iterator] = Collection.prototype.values;\n }\n\n // CollectionIterator\n // ------------------\n\n // A CollectionIterator implements JavaScript's Iterator protocol, allowing the\n // use of `for of` loops in modern browsers and interoperation between\n // Backbone.Collection and other JavaScript functions and third-party libraries\n // which can operate on Iterables.\n var CollectionIterator = function(collection, kind) {\n this._collection = collection;\n this._kind = kind;\n this._index = 0;\n };\n\n // This \"enum\" defines the three possible kinds of values which can be emitted\n // by a CollectionIterator that correspond to the values(), keys() and entries()\n // methods on Collection, respectively.\n var ITERATOR_VALUES = 1;\n var ITERATOR_KEYS = 2;\n var ITERATOR_KEYSVALUES = 3;\n\n // All Iterators should themselves be Iterable.\n if ($$iterator) {\n CollectionIterator.prototype[$$iterator] = function() {\n return this;\n };\n }\n\n CollectionIterator.prototype.next = function() {\n if (this._collection) {\n\n // Only continue iterating if the iterated collection is long enough.\n if (this._index < this._collection.length) {\n var model = this._collection.at(this._index);\n this._index++;\n\n // Construct a value depending on what kind of values should be iterated.\n var value;\n if (this._kind === ITERATOR_VALUES) {\n value = model;\n } else {\n var id = this._collection.modelId(model.attributes);\n if (this._kind === ITERATOR_KEYS) {\n value = id;\n } else { // ITERATOR_KEYSVALUES\n value = [id, model];\n }\n }\n return {value: value, done: false};\n }\n\n // Once exhausted, remove the reference to the collection so future\n // calls to the next method always return done.\n this._collection = void 0;\n }\n\n return {value: void 0, done: true};\n };\n\n // Backbone.View\n // -------------\n\n // Backbone Views are almost more convention than they are actual code. A View\n // is simply a JavaScript object that represents a logical chunk of UI in the\n // DOM. This might be a single item, an entire list, a sidebar or panel, or\n // even the surrounding frame which wraps your whole app. Defining a chunk of\n // UI as a **View** allows you to define your DOM events declaratively, without\n // having to worry about render order ... and makes it easy for the view to\n // react to specific changes in the state of your models.\n\n // Creating a Backbone.View creates its initial element outside of the DOM,\n // if an existing element is not provided...\n var View = Backbone.View = function(options) {\n this.cid = _.uniqueId('view');\n this.preinitialize.apply(this, arguments);\n _.extend(this, _.pick(options, viewOptions));\n this._ensureElement();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regex to split keys for `delegate`.\n var delegateEventSplitter = /^(\\S+)\\s*(.*)$/;\n\n // List of view options to be set as properties.\n var viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events'];\n\n // Set up all inheritable **Backbone.View** properties and methods.\n _.extend(View.prototype, Events, {\n\n // The default `tagName` of a View's element is `\"div\"`.\n tagName: 'div',\n\n // jQuery delegate for element lookup, scoped to DOM elements within the\n // current view. This should be preferred to global lookups where possible.\n $: function(selector) {\n return this.$el.find(selector);\n },\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the View\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // **render** is the core function that your view should override, in order\n // to populate its element (`this.el`), with the appropriate HTML. The\n // convention is for **render** to always return `this`.\n render: function() {\n return this;\n },\n\n // Remove this view by taking the element out of the DOM, and removing any\n // applicable Backbone.Events listeners.\n remove: function() {\n this._removeElement();\n this.stopListening();\n return this;\n },\n\n // Remove this view's element from the document and all event listeners\n // attached to it. Exposed for subclasses using an alternative DOM\n // manipulation API.\n _removeElement: function() {\n this.$el.remove();\n },\n\n // Change the view's element (`this.el` property) and re-delegate the\n // view's events on the new element.\n setElement: function(element) {\n this.undelegateEvents();\n this._setElement(element);\n this.delegateEvents();\n return this;\n },\n\n // Creates the `this.el` and `this.$el` references for this view using the\n // given `el`. `el` can be a CSS selector or an HTML string, a jQuery\n // context or an element. Subclasses can override this to utilize an\n // alternative DOM manipulation API and are only required to set the\n // `this.el` property.\n _setElement: function(el) {\n this.$el = el instanceof Backbone.$ ? el : Backbone.$(el);\n this.el = this.$el[0];\n },\n\n // Set callbacks, where `this.events` is a hash of\n //\n // *{\"event selector\": \"callback\"}*\n //\n // {\n // 'mousedown .title': 'edit',\n // 'click .button': 'save',\n // 'click .open': function(e) { ... }\n // }\n //\n // pairs. Callbacks will be bound to the view, with `this` set properly.\n // Uses event delegation for efficiency.\n // Omitting the selector binds the event to `this.el`.\n delegateEvents: function(events) {\n events || (events = _.result(this, 'events'));\n if (!events) return this;\n this.undelegateEvents();\n for (var key in events) {\n var method = events[key];\n if (!_.isFunction(method)) method = this[method];\n if (!method) continue;\n var match = key.match(delegateEventSplitter);\n this.delegate(match[1], match[2], method.bind(this));\n }\n return this;\n },\n\n // Add a single event listener to the view's element (or a child element\n // using `selector`). This only works for delegate-able events: not `focus`,\n // `blur`, and not `change`, `submit`, and `reset` in Internet Explorer.\n delegate: function(eventName, selector, listener) {\n this.$el.on(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Clears all callbacks previously bound to the view by `delegateEvents`.\n // You usually don't need to use this, but may wish to if you have multiple\n // Backbone views attached to the same DOM element.\n undelegateEvents: function() {\n if (this.$el) this.$el.off('.delegateEvents' + this.cid);\n return this;\n },\n\n // A finer-grained `undelegateEvents` for removing a single delegated event.\n // `selector` and `listener` are both optional.\n undelegate: function(eventName, selector, listener) {\n this.$el.off(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Produces a DOM element to be assigned to your view. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _createElement: function(tagName) {\n return document.createElement(tagName);\n },\n\n // Ensure that the View has a DOM element to render into.\n // If `this.el` is a string, pass it through `$()`, take the first\n // matching element, and re-assign it to `el`. Otherwise, create\n // an element from the `id`, `className` and `tagName` properties.\n _ensureElement: function() {\n if (!this.el) {\n var attrs = _.extend({}, _.result(this, 'attributes'));\n if (this.id) attrs.id = _.result(this, 'id');\n if (this.className) attrs['class'] = _.result(this, 'className');\n this.setElement(this._createElement(_.result(this, 'tagName')));\n this._setAttributes(attrs);\n } else {\n this.setElement(_.result(this, 'el'));\n }\n },\n\n // Set attributes from a hash on this view's element. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _setAttributes: function(attributes) {\n this.$el.attr(attributes);\n }\n\n });\n\n // Proxy Backbone class methods to Underscore functions, wrapping the model's\n // `attributes` object or collection's `models` array behind the scenes.\n //\n // collection.filter(function(model) { return model.get('age') > 10 });\n // collection.each(this.addView);\n //\n // `Function#apply` can be slow so we use the method's arg count, if we know it.\n var addMethod = function(base, length, method, attribute) {\n switch (length) {\n case 1: return function() {\n return base[method](this[attribute]);\n };\n case 2: return function(value) {\n return base[method](this[attribute], value);\n };\n case 3: return function(iteratee, context) {\n return base[method](this[attribute], cb(iteratee, this), context);\n };\n case 4: return function(iteratee, defaultVal, context) {\n return base[method](this[attribute], cb(iteratee, this), defaultVal, context);\n };\n default: return function() {\n var args = slice.call(arguments);\n args.unshift(this[attribute]);\n return base[method].apply(base, args);\n };\n }\n };\n\n var addUnderscoreMethods = function(Class, base, methods, attribute) {\n _.each(methods, function(length, method) {\n if (base[method]) Class.prototype[method] = addMethod(base, length, method, attribute);\n });\n };\n\n // Support `collection.sortBy('attr')` and `collection.findWhere({id: 1})`.\n var cb = function(iteratee, instance) {\n if (_.isFunction(iteratee)) return iteratee;\n if (_.isObject(iteratee) && !instance._isModel(iteratee)) return modelMatcher(iteratee);\n if (_.isString(iteratee)) return function(model) { return model.get(iteratee); };\n return iteratee;\n };\n var modelMatcher = function(attrs) {\n var matcher = _.matches(attrs);\n return function(model) {\n return matcher(model.attributes);\n };\n };\n\n // Underscore methods that we want to implement on the Collection.\n // 90% of the core usefulness of Backbone Collections is actually implemented\n // right here:\n var collectionMethods = {forEach: 3, each: 3, map: 3, collect: 3, reduce: 0,\n foldl: 0, inject: 0, reduceRight: 0, foldr: 0, find: 3, detect: 3, filter: 3,\n select: 3, reject: 3, every: 3, all: 3, some: 3, any: 3, include: 3, includes: 3,\n contains: 3, invoke: 0, max: 3, min: 3, toArray: 1, size: 1, first: 3,\n head: 3, take: 3, initial: 3, rest: 3, tail: 3, drop: 3, last: 3,\n without: 0, difference: 0, indexOf: 3, shuffle: 1, lastIndexOf: 3,\n isEmpty: 1, chain: 1, sample: 3, partition: 3, groupBy: 3, countBy: 3,\n sortBy: 3, indexBy: 3, findIndex: 3, findLastIndex: 3};\n\n\n // Underscore methods that we want to implement on the Model, mapped to the\n // number of arguments they take.\n var modelMethods = {keys: 1, values: 1, pairs: 1, invert: 1, pick: 0,\n omit: 0, chain: 1, isEmpty: 1};\n\n // Mix in each Underscore method as a proxy to `Collection#models`.\n\n _.each([\n [Collection, collectionMethods, 'models'],\n [Model, modelMethods, 'attributes']\n ], function(config) {\n var Base = config[0],\n methods = config[1],\n attribute = config[2];\n\n Base.mixin = function(obj) {\n var mappings = _.reduce(_.functions(obj), function(memo, name) {\n memo[name] = 0;\n return memo;\n }, {});\n addUnderscoreMethods(Base, obj, mappings, attribute);\n };\n\n addUnderscoreMethods(Base, _, methods, attribute);\n });\n\n // Backbone.sync\n // -------------\n\n // Override this function to change the manner in which Backbone persists\n // models to the server. You will be passed the type of request, and the\n // model in question. By default, makes a RESTful Ajax request\n // to the model's `url()`. Some possible customizations could be:\n //\n // * Use `setTimeout` to batch rapid-fire updates into a single request.\n // * Send up the models as XML instead of JSON.\n // * Persist models via WebSockets instead of Ajax.\n //\n // Turn on `Backbone.emulateHTTP` in order to send `PUT` and `DELETE` requests\n // as `POST`, with a `_method` parameter containing the true HTTP method,\n // as well as all requests with the body as `application/x-www-form-urlencoded`\n // instead of `application/json` with the model in a param named `model`.\n // Useful when interfacing with server-side languages like **PHP** that make\n // it difficult to read the body of `PUT` requests.\n Backbone.sync = function(method, model, options) {\n var type = methodMap[method];\n\n // Default options, unless specified.\n _.defaults(options || (options = {}), {\n emulateHTTP: Backbone.emulateHTTP,\n emulateJSON: Backbone.emulateJSON\n });\n\n // Default JSON-request options.\n var params = {type: type, dataType: 'json'};\n\n // Ensure that we have a URL.\n if (!options.url) {\n params.url = _.result(model, 'url') || urlError();\n }\n\n // Ensure that we have the appropriate request data.\n if (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n params.contentType = 'application/json';\n params.data = JSON.stringify(options.attrs || model.toJSON(options));\n }\n\n // For older servers, emulate JSON by encoding the request into an HTML-form.\n if (options.emulateJSON) {\n params.contentType = 'application/x-www-form-urlencoded';\n params.data = params.data ? {model: params.data} : {};\n }\n\n // For older servers, emulate HTTP by mimicking the HTTP method with `_method`\n // And an `X-HTTP-Method-Override` header.\n if (options.emulateHTTP && (type === 'PUT' || type === 'DELETE' || type === 'PATCH')) {\n params.type = 'POST';\n if (options.emulateJSON) params.data._method = type;\n var beforeSend = options.beforeSend;\n options.beforeSend = function(xhr) {\n xhr.setRequestHeader('X-HTTP-Method-Override', type);\n if (beforeSend) return beforeSend.apply(this, arguments);\n };\n }\n\n // Don't process data on a non-GET request.\n if (params.type !== 'GET' && !options.emulateJSON) {\n params.processData = false;\n }\n\n // Pass along `textStatus` and `errorThrown` from jQuery.\n var error = options.error;\n options.error = function(xhr, textStatus, errorThrown) {\n options.textStatus = textStatus;\n options.errorThrown = errorThrown;\n if (error) error.call(options.context, xhr, textStatus, errorThrown);\n };\n\n // Make the request, allowing the user to override any Ajax options.\n var xhr = options.xhr = Backbone.ajax(_.extend(params, options));\n model.trigger('request', model, xhr, options);\n return xhr;\n };\n\n // Map from CRUD to HTTP for our default `Backbone.sync` implementation.\n var methodMap = {\n create: 'POST',\n update: 'PUT',\n patch: 'PATCH',\n delete: 'DELETE',\n read: 'GET'\n };\n\n // Set the default implementation of `Backbone.ajax` to proxy through to `$`.\n // Override this if you'd like to use a different library.\n Backbone.ajax = function() {\n return Backbone.$.ajax.apply(Backbone.$, arguments);\n };\n\n // Backbone.Router\n // ---------------\n\n // Routers map faux-URLs to actions, and fire events when routes are\n // matched. Creating a new one sets its `routes` hash, if not set statically.\n var Router = Backbone.Router = function(options) {\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n if (options.routes) this.routes = options.routes;\n this._bindRoutes();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regular expressions for matching named param parts and splatted\n // parts of route strings.\n var optionalParam = /\\((.*?)\\)/g;\n var namedParam = /(\\(\\?)?:\\w+/g;\n var splatParam = /\\*\\w+/g;\n var escapeRegExp = /[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g;\n\n // Set up all inheritable **Backbone.Router** properties and methods.\n _.extend(Router.prototype, Events, {\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Router.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Manually bind a single named route to a callback. For example:\n //\n // this.route('search/:query/p:num', 'search', function(query, num) {\n // ...\n // });\n //\n route: function(route, name, callback) {\n if (!_.isRegExp(route)) route = this._routeToRegExp(route);\n if (_.isFunction(name)) {\n callback = name;\n name = '';\n }\n if (!callback) callback = this[name];\n var router = this;\n Backbone.history.route(route, function(fragment) {\n var args = router._extractParameters(route, fragment);\n if (router.execute(callback, args, name) !== false) {\n router.trigger.apply(router, ['route:' + name].concat(args));\n router.trigger('route', name, args);\n Backbone.history.trigger('route', router, name, args);\n }\n });\n return this;\n },\n\n // Execute a route handler with the provided parameters. This is an\n // excellent place to do pre-route setup or post-route cleanup.\n execute: function(callback, args, name) {\n if (callback) callback.apply(this, args);\n },\n\n // Simple proxy to `Backbone.history` to save a fragment into the history.\n navigate: function(fragment, options) {\n Backbone.history.navigate(fragment, options);\n return this;\n },\n\n // Bind all defined routes to `Backbone.history`. We have to reverse the\n // order of the routes here to support behavior where the most general\n // routes can be defined at the bottom of the route map.\n _bindRoutes: function() {\n if (!this.routes) return;\n this.routes = _.result(this, 'routes');\n var route, routes = _.keys(this.routes);\n while ((route = routes.pop()) != null) {\n this.route(route, this.routes[route]);\n }\n },\n\n // Convert a route string into a regular expression, suitable for matching\n // against the current location hash.\n _routeToRegExp: function(route) {\n route = route.replace(escapeRegExp, '\\\\$&')\n .replace(optionalParam, '(?:$1)?')\n .replace(namedParam, function(match, optional) {\n return optional ? match : '([^/?]+)';\n })\n .replace(splatParam, '([^?]*?)');\n return new RegExp('^' + route + '(?:\\\\?([\\\\s\\\\S]*))?$');\n },\n\n // Given a route, and a URL fragment that it matches, return the array of\n // extracted decoded parameters. Empty or unmatched parameters will be\n // treated as `null` to normalize cross-browser behavior.\n _extractParameters: function(route, fragment) {\n var params = route.exec(fragment).slice(1);\n return _.map(params, function(param, i) {\n // Don't decode the search params.\n if (i === params.length - 1) return param || null;\n return param ? decodeURIComponent(param) : null;\n });\n }\n\n });\n\n // Backbone.History\n // ----------------\n\n // Handles cross-browser history management, based on either\n // [pushState](http://diveintohtml5.info/history.html) and real URLs, or\n // [onhashchange](https://developer.mozilla.org/en-US/docs/DOM/window.onhashchange)\n // and URL fragments. If the browser supports neither (old IE, natch),\n // falls back to polling.\n var History = Backbone.History = function() {\n this.handlers = [];\n this.checkUrl = this.checkUrl.bind(this);\n\n // Ensure that `History` can be used outside of the browser.\n if (typeof window !== 'undefined') {\n this.location = window.location;\n this.history = window.history;\n }\n };\n\n // Cached regex for stripping a leading hash/slash and trailing space.\n var routeStripper = /^[#\\/]|\\s+$/g;\n\n // Cached regex for stripping leading and trailing slashes.\n var rootStripper = /^\\/+|\\/+$/g;\n\n // Cached regex for stripping urls of hash.\n var pathStripper = /#.*$/;\n\n // Has the history handling already been started?\n History.started = false;\n\n // Set up all inheritable **Backbone.History** properties and methods.\n _.extend(History.prototype, Events, {\n\n // The default interval to poll for hash changes, if necessary, is\n // twenty times a second.\n interval: 50,\n\n // Are we at the app root?\n atRoot: function() {\n var path = this.location.pathname.replace(/[^\\/]$/, '$&/');\n return path === this.root && !this.getSearch();\n },\n\n // Does the pathname match the root?\n matchRoot: function() {\n var path = this.decodeFragment(this.location.pathname);\n var rootPath = path.slice(0, this.root.length - 1) + '/';\n return rootPath === this.root;\n },\n\n // Unicode characters in `location.pathname` are percent encoded so they're\n // decoded for comparison. `%25` should not be decoded since it may be part\n // of an encoded parameter.\n decodeFragment: function(fragment) {\n return decodeURI(fragment.replace(/%25/g, '%2525'));\n },\n\n // In IE6, the hash fragment and search params are incorrect if the\n // fragment contains `?`.\n getSearch: function() {\n var match = this.location.href.replace(/#.*/, '').match(/\\?.+/);\n return match ? match[0] : '';\n },\n\n // Gets the true hash value. Cannot use location.hash directly due to bug\n // in Firefox where location.hash will always be decoded.\n getHash: function(window) {\n var match = (window || this).location.href.match(/#(.*)$/);\n return match ? match[1] : '';\n },\n\n // Get the pathname and search params, without the root.\n getPath: function() {\n var path = this.decodeFragment(\n this.location.pathname + this.getSearch()\n ).slice(this.root.length - 1);\n return path.charAt(0) === '/' ? path.slice(1) : path;\n },\n\n // Get the cross-browser normalized URL fragment from the path or hash.\n getFragment: function(fragment) {\n if (fragment == null) {\n if (this._usePushState || !this._wantsHashChange) {\n fragment = this.getPath();\n } else {\n fragment = this.getHash();\n }\n }\n return fragment.replace(routeStripper, '');\n },\n\n // Start the hash change handling, returning `true` if the current URL matches\n // an existing route, and `false` otherwise.\n start: function(options) {\n if (History.started) throw new Error('Backbone.history has already been started');\n History.started = true;\n\n // Figure out the initial configuration. Do we need an iframe?\n // Is pushState desired ... is it available?\n this.options = _.extend({root: '/'}, this.options, options);\n this.root = this.options.root;\n this._wantsHashChange = this.options.hashChange !== false;\n this._hasHashChange = 'onhashchange' in window && (document.documentMode === void 0 || document.documentMode > 7);\n this._useHashChange = this._wantsHashChange && this._hasHashChange;\n this._wantsPushState = !!this.options.pushState;\n this._hasPushState = !!(this.history && this.history.pushState);\n this._usePushState = this._wantsPushState && this._hasPushState;\n this.fragment = this.getFragment();\n\n // Normalize root to always include a leading and trailing slash.\n this.root = ('/' + this.root + '/').replace(rootStripper, '/');\n\n // Transition from hashChange to pushState or vice versa if both are\n // requested.\n if (this._wantsHashChange && this._wantsPushState) {\n\n // If we've started off with a route from a `pushState`-enabled\n // browser, but we're currently in a browser that doesn't support it...\n if (!this._hasPushState && !this.atRoot()) {\n var rootPath = this.root.slice(0, -1) || '/';\n this.location.replace(rootPath + '#' + this.getPath());\n // Return immediately as browser will do redirect to new url\n return true;\n\n // Or if we've started out with a hash-based route, but we're currently\n // in a browser where it could be `pushState`-based instead...\n } else if (this._hasPushState && this.atRoot()) {\n this.navigate(this.getHash(), {replace: true});\n }\n\n }\n\n // Proxy an iframe to handle location events if the browser doesn't\n // support the `hashchange` event, HTML5 history, or the user wants\n // `hashChange` but not `pushState`.\n if (!this._hasHashChange && this._wantsHashChange && !this._usePushState) {\n this.iframe = document.createElement('iframe');\n this.iframe.src = 'javascript:0';\n this.iframe.style.display = 'none';\n this.iframe.tabIndex = -1;\n var body = document.body;\n // Using `appendChild` will throw on IE < 9 if the document is not ready.\n var iWindow = body.insertBefore(this.iframe, body.firstChild).contentWindow;\n iWindow.document.open();\n iWindow.document.close();\n iWindow.location.hash = '#' + this.fragment;\n }\n\n // Add a cross-platform `addEventListener` shim for older browsers.\n var addEventListener = window.addEventListener || function(eventName, listener) {\n return attachEvent('on' + eventName, listener);\n };\n\n // Depending on whether we're using pushState or hashes, and whether\n // 'onhashchange' is supported, determine how we check the URL state.\n if (this._usePushState) {\n addEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n addEventListener('hashchange', this.checkUrl, false);\n } else if (this._wantsHashChange) {\n this._checkUrlInterval = setInterval(this.checkUrl, this.interval);\n }\n\n if (!this.options.silent) return this.loadUrl();\n },\n\n // Disable Backbone.history, perhaps temporarily. Not useful in a real app,\n // but possibly useful for unit testing Routers.\n stop: function() {\n // Add a cross-platform `removeEventListener` shim for older browsers.\n var removeEventListener = window.removeEventListener || function(eventName, listener) {\n return detachEvent('on' + eventName, listener);\n };\n\n // Remove window listeners.\n if (this._usePushState) {\n removeEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n removeEventListener('hashchange', this.checkUrl, false);\n }\n\n // Clean up the iframe if necessary.\n if (this.iframe) {\n document.body.removeChild(this.iframe);\n this.iframe = null;\n }\n\n // Some environments will throw when clearing an undefined interval.\n if (this._checkUrlInterval) clearInterval(this._checkUrlInterval);\n History.started = false;\n },\n\n // Add a route to be tested when the fragment changes. Routes added later\n // may override previous routes.\n route: function(route, callback) {\n this.handlers.unshift({route: route, callback: callback});\n },\n\n // Checks the current URL to see if it has changed, and if it has,\n // calls `loadUrl`, normalizing across the hidden iframe.\n checkUrl: function(e) {\n var current = this.getFragment();\n\n // If the user pressed the back button, the iframe's hash will have\n // changed and we should use that for comparison.\n if (current === this.fragment && this.iframe) {\n current = this.getHash(this.iframe.contentWindow);\n }\n\n if (current === this.fragment) return false;\n if (this.iframe) this.navigate(current);\n this.loadUrl();\n },\n\n // Attempt to load the current URL fragment. If a route succeeds with a\n // match, returns `true`. If no defined routes matches the fragment,\n // returns `false`.\n loadUrl: function(fragment) {\n // If the root doesn't match, no routes can match either.\n if (!this.matchRoot()) return false;\n fragment = this.fragment = this.getFragment(fragment);\n return _.some(this.handlers, function(handler) {\n if (handler.route.test(fragment)) {\n handler.callback(fragment);\n return true;\n }\n });\n },\n\n // Save a fragment into the hash history, or replace the URL state if the\n // 'replace' option is passed. You are responsible for properly URL-encoding\n // the fragment in advance.\n //\n // The options object can contain `trigger: true` if you wish to have the\n // route callback be fired (not usually desirable), or `replace: true`, if\n // you wish to modify the current URL without adding an entry to the history.\n navigate: function(fragment, options) {\n if (!History.started) return false;\n if (!options || options === true) options = {trigger: !!options};\n\n // Normalize the fragment.\n fragment = this.getFragment(fragment || '');\n\n // Don't include a trailing slash on the root.\n var rootPath = this.root;\n if (fragment === '' || fragment.charAt(0) === '?') {\n rootPath = rootPath.slice(0, -1) || '/';\n }\n var url = rootPath + fragment;\n\n // Strip the fragment of the query and hash for matching.\n fragment = fragment.replace(pathStripper, '');\n\n // Decode for matching.\n var decodedFragment = this.decodeFragment(fragment);\n\n if (this.fragment === decodedFragment) return;\n this.fragment = decodedFragment;\n\n // If pushState is available, we use it to set the fragment as a real URL.\n if (this._usePushState) {\n this.history[options.replace ? 'replaceState' : 'pushState']({}, document.title, url);\n\n // If hash changes haven't been explicitly disabled, update the hash\n // fragment to store history.\n } else if (this._wantsHashChange) {\n this._updateHash(this.location, fragment, options.replace);\n if (this.iframe && fragment !== this.getHash(this.iframe.contentWindow)) {\n var iWindow = this.iframe.contentWindow;\n\n // Opening and closing the iframe tricks IE7 and earlier to push a\n // history entry on hash-tag change. When replace is true, we don't\n // want this.\n if (!options.replace) {\n iWindow.document.open();\n iWindow.document.close();\n }\n\n this._updateHash(iWindow.location, fragment, options.replace);\n }\n\n // If you've told us that you explicitly don't want fallback hashchange-\n // based history, then `navigate` becomes a page refresh.\n } else {\n return this.location.assign(url);\n }\n if (options.trigger) return this.loadUrl(fragment);\n },\n\n // Update the hash location, either replacing the current entry, or adding\n // a new one to the browser history.\n _updateHash: function(location, fragment, replace) {\n if (replace) {\n var href = location.href.replace(/(javascript:|#).*$/, '');\n location.replace(href + '#' + fragment);\n } else {\n // Some browsers require that `hash` contains a leading #.\n location.hash = '#' + fragment;\n }\n }\n\n });\n\n // Create the default Backbone.history.\n Backbone.history = new History;\n\n // Helpers\n // -------\n\n // Helper function to correctly set up the prototype chain for subclasses.\n // Similar to `goog.inherits`, but uses a hash of prototype properties and\n // class properties to be extended.\n var extend = function(protoProps, staticProps) {\n var parent = this;\n var child;\n\n // The constructor function for the new subclass is either defined by you\n // (the \"constructor\" property in your `extend` definition), or defaulted\n // by us to simply call the parent constructor.\n if (protoProps && _.has(protoProps, 'constructor')) {\n child = protoProps.constructor;\n } else {\n child = function(){ return parent.apply(this, arguments); };\n }\n\n // Add static properties to the constructor function, if supplied.\n _.extend(child, parent, staticProps);\n\n // Set the prototype chain to inherit from `parent`, without calling\n // `parent`'s constructor function and add the prototype properties.\n child.prototype = _.create(parent.prototype, protoProps);\n child.prototype.constructor = child;\n\n // Set a convenience property in case the parent's prototype is needed\n // later.\n child.__super__ = parent.prototype;\n\n return child;\n };\n\n // Set up inheritance for the model, collection, router, view and history.\n Model.extend = Collection.extend = Router.extend = View.extend = History.extend = extend;\n\n // Throw an error when a URL is needed, and none is supplied.\n var urlError = function() {\n throw new Error('A \"url\" property or function must be specified');\n };\n\n // Wrap an optional error callback with a fallback error event.\n var wrapError = function(model, options) {\n var error = options.error;\n options.error = function(resp) {\n if (error) error.call(options.context, model, resp, options);\n model.trigger('error', model, resp, options);\n };\n };\n\n return Backbone;\n});\n","(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['module', 'select'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(module, require('select'));\n } else {\n var mod = {\n exports: {}\n };\n factory(mod, global.select);\n global.clipboardAction = mod.exports;\n }\n})(this, function (module, _select) {\n 'use strict';\n\n var _select2 = _interopRequireDefault(_select);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var ClipboardAction = function () {\n /**\n * @param {Object} options\n */\n function ClipboardAction(options) {\n _classCallCheck(this, ClipboardAction);\n\n this.resolveOptions(options);\n this.initSelection();\n }\n\n /**\n * Defines base properties passed from constructor.\n * @param {Object} options\n */\n\n\n _createClass(ClipboardAction, [{\n key: 'resolveOptions',\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this.action = options.action;\n this.container = options.container;\n this.emitter = options.emitter;\n this.target = options.target;\n this.text = options.text;\n this.trigger = options.trigger;\n\n this.selectedText = '';\n }\n }, {\n key: 'initSelection',\n value: function initSelection() {\n if (this.text) {\n this.selectFake();\n } else if (this.target) {\n this.selectTarget();\n }\n }\n }, {\n key: 'selectFake',\n value: function selectFake() {\n var _this = this;\n\n var isRTL = document.documentElement.getAttribute('dir') == 'rtl';\n\n this.removeFake();\n\n this.fakeHandlerCallback = function () {\n return _this.removeFake();\n };\n this.fakeHandler = this.container.addEventListener('click', this.fakeHandlerCallback) || true;\n\n this.fakeElem = document.createElement('textarea');\n // Prevent zooming on iOS\n this.fakeElem.style.fontSize = '12pt';\n // Reset box model\n this.fakeElem.style.border = '0';\n this.fakeElem.style.padding = '0';\n this.fakeElem.style.margin = '0';\n // Move element out of screen horizontally\n this.fakeElem.style.position = 'absolute';\n this.fakeElem.style[isRTL ? 'right' : 'left'] = '-9999px';\n // Move element to the same position vertically\n var yPosition = window.pageYOffset || document.documentElement.scrollTop;\n this.fakeElem.style.top = yPosition + 'px';\n\n this.fakeElem.setAttribute('readonly', '');\n this.fakeElem.value = this.text;\n\n this.container.appendChild(this.fakeElem);\n\n this.selectedText = (0, _select2.default)(this.fakeElem);\n this.copyText();\n }\n }, {\n key: 'removeFake',\n value: function removeFake() {\n if (this.fakeHandler) {\n this.container.removeEventListener('click', this.fakeHandlerCallback);\n this.fakeHandler = null;\n this.fakeHandlerCallback = null;\n }\n\n if (this.fakeElem) {\n this.container.removeChild(this.fakeElem);\n this.fakeElem = null;\n }\n }\n }, {\n key: 'selectTarget',\n value: function selectTarget() {\n this.selectedText = (0, _select2.default)(this.target);\n this.copyText();\n }\n }, {\n key: 'copyText',\n value: function copyText() {\n var succeeded = void 0;\n\n try {\n succeeded = document.execCommand(this.action);\n } catch (err) {\n succeeded = false;\n }\n\n this.handleResult(succeeded);\n }\n }, {\n key: 'handleResult',\n value: function handleResult(succeeded) {\n this.emitter.emit(succeeded ? 'success' : 'error', {\n action: this.action,\n text: this.selectedText,\n trigger: this.trigger,\n clearSelection: this.clearSelection.bind(this)\n });\n }\n }, {\n key: 'clearSelection',\n value: function clearSelection() {\n if (this.trigger) {\n this.trigger.focus();\n }\n\n window.getSelection().removeAllRanges();\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.removeFake();\n }\n }, {\n key: 'action',\n set: function set() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'copy';\n\n this._action = action;\n\n if (this._action !== 'copy' && this._action !== 'cut') {\n throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n }\n },\n get: function get() {\n return this._action;\n }\n }, {\n key: 'target',\n set: function set(target) {\n if (target !== undefined) {\n if (target && (typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object' && target.nodeType === 1) {\n if (this.action === 'copy' && target.hasAttribute('disabled')) {\n throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n }\n\n if (this.action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\n throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\n }\n\n this._target = target;\n } else {\n throw new Error('Invalid \"target\" value, use a valid Element');\n }\n }\n },\n get: function get() {\n return this._target;\n }\n }]);\n\n return ClipboardAction;\n }();\n\n module.exports = ClipboardAction;\n});","(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['module', './clipboard-action', 'tiny-emitter', 'good-listener'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(module, require('./clipboard-action'), require('tiny-emitter'), require('good-listener'));\n } else {\n var mod = {\n exports: {}\n };\n factory(mod, global.clipboardAction, global.tinyEmitter, global.goodListener);\n global.clipboard = mod.exports;\n }\n})(this, function (module, _clipboardAction, _tinyEmitter, _goodListener) {\n 'use strict';\n\n var _clipboardAction2 = _interopRequireDefault(_clipboardAction);\n\n var _tinyEmitter2 = _interopRequireDefault(_tinyEmitter);\n\n var _goodListener2 = _interopRequireDefault(_goodListener);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var Clipboard = function (_Emitter) {\n _inherits(Clipboard, _Emitter);\n\n /**\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n * @param {Object} options\n */\n function Clipboard(trigger, options) {\n _classCallCheck(this, Clipboard);\n\n var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this));\n\n _this.resolveOptions(options);\n _this.listenClick(trigger);\n return _this;\n }\n\n /**\n * Defines if attributes would be resolved using internal setter functions\n * or custom functions that were passed in the constructor.\n * @param {Object} options\n */\n\n\n _createClass(Clipboard, [{\n key: 'resolveOptions',\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n this.container = _typeof(options.container) === 'object' ? options.container : document.body;\n }\n }, {\n key: 'listenClick',\n value: function listenClick(trigger) {\n var _this2 = this;\n\n this.listener = (0, _goodListener2.default)(trigger, 'click', function (e) {\n return _this2.onClick(e);\n });\n }\n }, {\n key: 'onClick',\n value: function onClick(e) {\n var trigger = e.delegateTarget || e.currentTarget;\n\n if (this.clipboardAction) {\n this.clipboardAction = null;\n }\n\n this.clipboardAction = new _clipboardAction2.default({\n action: this.action(trigger),\n target: this.target(trigger),\n text: this.text(trigger),\n container: this.container,\n trigger: trigger,\n emitter: this\n });\n }\n }, {\n key: 'defaultAction',\n value: function defaultAction(trigger) {\n return getAttributeValue('action', trigger);\n }\n }, {\n key: 'defaultTarget',\n value: function defaultTarget(trigger) {\n var selector = getAttributeValue('target', trigger);\n\n if (selector) {\n return document.querySelector(selector);\n }\n }\n }, {\n key: 'defaultText',\n value: function defaultText(trigger) {\n return getAttributeValue('text', trigger);\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.listener.destroy();\n\n if (this.clipboardAction) {\n this.clipboardAction.destroy();\n this.clipboardAction = null;\n }\n }\n }], [{\n key: 'isSupported',\n value: function isSupported() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\n\n var actions = typeof action === 'string' ? [action] : action;\n var support = !!document.queryCommandSupported;\n\n actions.forEach(function (action) {\n support = support && !!document.queryCommandSupported(action);\n });\n\n return support;\n }\n }]);\n\n return Clipboard;\n }(_tinyEmitter2.default);\n\n /**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n function getAttributeValue(suffix, element) {\n var attribute = 'data-clipboard-' + suffix;\n\n if (!element.hasAttribute(attribute)) {\n return;\n }\n\n return element.getAttribute(attribute);\n }\n\n module.exports = Clipboard;\n});","var DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n var proto = Element.prototype;\n\n proto.matches = proto.matchesSelector ||\n proto.mozMatchesSelector ||\n proto.msMatchesSelector ||\n proto.oMatchesSelector ||\n proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest (element, selector) {\n while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n if (typeof element.matches === 'function' &&\n element.matches(selector)) {\n return element;\n }\n element = element.parentNode;\n }\n}\n\nmodule.exports = closest;\n","var closest = require('./closest');\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n var listenerFn = listener.apply(this, arguments);\n\n element.addEventListener(type, listenerFn, useCapture);\n\n return {\n destroy: function() {\n element.removeEventListener(type, listenerFn, useCapture);\n }\n }\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n // Handle the regular Element usage\n if (typeof elements.addEventListener === 'function') {\n return _delegate.apply(null, arguments);\n }\n\n // Handle Element-less usage, it defaults to global delegation\n if (typeof type === 'function') {\n // Use `document` as the first parameter, then apply arguments\n // This is a short way to .unshift `arguments` without running into deoptimizations\n return _delegate.bind(null, document).apply(null, arguments);\n }\n\n // Handle Selector-based usage\n if (typeof elements === 'string') {\n elements = document.querySelectorAll(elements);\n }\n\n // Handle Array-like based usage\n return Array.prototype.map.call(elements, function (element) {\n return _delegate(element, selector, type, callback, useCapture);\n });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n return function(e) {\n e.delegateTarget = closest(e.target, selector);\n\n if (e.delegateTarget) {\n callback.call(element, e);\n }\n }\n}\n\nmodule.exports = delegate;\n","/**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.node = function(value) {\n return value !== undefined\n && value instanceof HTMLElement\n && value.nodeType === 1;\n};\n\n/**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.nodeList = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return value !== undefined\n && (type === '[object NodeList]' || type === '[object HTMLCollection]')\n && ('length' in value)\n && (value.length === 0 || exports.node(value[0]));\n};\n\n/**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.string = function(value) {\n return typeof value === 'string'\n || value instanceof String;\n};\n\n/**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.fn = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return type === '[object Function]';\n};\n","var is = require('./is');\nvar delegate = require('delegate');\n\n/**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listen(target, type, callback) {\n if (!target && !type && !callback) {\n throw new Error('Missing required arguments');\n }\n\n if (!is.string(type)) {\n throw new TypeError('Second argument must be a String');\n }\n\n if (!is.fn(callback)) {\n throw new TypeError('Third argument must be a Function');\n }\n\n if (is.node(target)) {\n return listenNode(target, type, callback);\n }\n else if (is.nodeList(target)) {\n return listenNodeList(target, type, callback);\n }\n else if (is.string(target)) {\n return listenSelector(target, type, callback);\n }\n else {\n throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n }\n}\n\n/**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNode(node, type, callback) {\n node.addEventListener(type, callback);\n\n return {\n destroy: function() {\n node.removeEventListener(type, callback);\n }\n }\n}\n\n/**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNodeList(nodeList, type, callback) {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.addEventListener(type, callback);\n });\n\n return {\n destroy: function() {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.removeEventListener(type, callback);\n });\n }\n }\n}\n\n/**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenSelector(selector, type, callback) {\n return delegate(document.body, selector, type, callback);\n}\n\nmodule.exports = listen;\n","function select(element) {\n var selectedText;\n\n if (element.nodeName === 'SELECT') {\n element.focus();\n\n selectedText = element.value;\n }\n else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n var isReadOnly = element.hasAttribute('readonly');\n\n if (!isReadOnly) {\n element.setAttribute('readonly', '');\n }\n\n element.select();\n element.setSelectionRange(0, element.value.length);\n\n if (!isReadOnly) {\n element.removeAttribute('readonly');\n }\n\n selectedText = element.value;\n }\n else {\n if (element.hasAttribute('contenteditable')) {\n element.focus();\n }\n\n var selection = window.getSelection();\n var range = document.createRange();\n\n range.selectNodeContents(element);\n selection.removeAllRanges();\n selection.addRange(range);\n\n selectedText = selection.toString();\n }\n\n return selectedText;\n}\n\nmodule.exports = select;\n","function E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n","module.exports = require(\"handlebars\");","module.exports = require(\"handlebars/runtime\");","module.exports = require(\"jquery\");","module.exports = require(\"okta-i18n-bundles\");","module.exports = require(\"qtip\");","module.exports = require(\"underscore\");","// 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 = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(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 = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(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};","import BaseCollection from './courage/models/BaseCollection';\nimport BaseModel from './courage/models/BaseModel';\nimport BaseSchema from './courage/models/BaseSchema';\nimport Model from './courage/models/Model';\nimport SchemaProperty from './courage/models/SchemaProperty';\nimport BaseController from './courage/util/BaseController';\nimport BaseRouter from './courage/util/BaseRouter';\nimport ButtonFactory from './courage/util/ButtonFactory';\nimport Class from './courage/util/Class';\nimport Cookie from './courage/util/Cookie';\nimport Clipboard from './courage/util/Clipboard';\nimport Keys from './courage/util/Keys';\nimport Logger from './courage/util/Logger';\nimport StringUtil from './courage/util/StringUtil';\nimport Util from './courage/util/Util';\nimport Handlebars from './courage/util/handlebars-wrapper';\nimport $ from './courage/util/jquery-wrapper';\nimport _ from './courage/util/underscore-wrapper';\nimport ListView from './courage/views/Backbone.ListView';\nimport BaseView from './courage/views/BaseView';\nimport BaseDropDown from './courage/views/components/BaseDropDown';\nimport Notification from './courage/views/components/Notification';\nimport BaseForm from './courage/views/forms/BaseForm';\nimport Toolbar from './courage/views/forms/components/Toolbar';\nimport FormUtil from './courage/views/forms/helpers/FormUtil';\nimport InputRegistry from './courage/views/forms/helpers/InputRegistry';\nimport SchemaFormFactory from './courage/views/forms/helpers/SchemaFormFactory';\nimport CheckBox from './courage/views/forms/inputs/CheckBox';\nimport PasswordBox from './courage/views/forms/inputs/PasswordBox';\nimport Radio from './courage/views/forms/inputs/Radio';\nimport Select from './courage/views/forms/inputs/Select';\nimport InputGroup from './courage/views/forms/inputs/InputGroup';\nimport TextBox from './courage/views/forms/inputs/TextBox';\nimport Callout from './courage/views/components/Callout';\nimport Backbone from 'backbone';\n\nimport FrameworkView from './courage/framework/View';\n\nimport './util/scrollParent';\n\n// The string will be returned unchanged. All templates should be precompiled.\nFrameworkView.prototype.compileTemplate = function(str) {\n const compiledTmpl = function fakeTemplate() {\n return str;\n };\n compiledTmpl.source = ''; // to satisfy TS\n return compiledTmpl;\n};\n\n// Override events to not support `Enter` submitting the form twice - OKTA-321999 and OKTA-317629\nconst events = {\n 'input input': 'update',\n 'change input': 'update',\n 'keydown input': 'update',\n 'keyup input': function (e) {\n if (Keys.isEsc(e)) {\n this.model.trigger('form:cancel');\n }\n }\n};\nconst TextBoxForSigninWidget = TextBox.extend({ events });\nconst PasswordBoxForSigninWidget = PasswordBox.extend({ events });\n\nconst Form = BaseForm.extend({\n scrollOnError() {\n // scrollOnError is true by default. Override to false if `scrollOnError` has been set to false in widget settings.\n const { settings } = this.options;\n if (settings.get('features.scrollOnError') === false) {\n return false;\n }\n return true;\n }\n});\n\nconst loc = StringUtil.localize;\nconst createButton = ButtonFactory.create;\nconst createCallout = Callout.create;\nconst registerInput = InputRegistry.register;\nconst Collection = BaseCollection;\nconst View = BaseView;\nconst Router = BaseRouter;\nconst Controller = BaseController;\n\nexport interface Internal {\n util: any;\n views: {\n components: any;\n forms: {\n helpers: any;\n components: any;\n inputs: any;\n }\n },\n models: any;\n}\nconst internal: Internal = {\n util: {\n Util,\n Cookie,\n Clipboard,\n Logger,\n Class,\n Keys,\n },\n\n views: {\n components: {\n BaseDropDown,\n Notification,\n },\n\n forms: {\n helpers: {\n FormUtil,\n SchemaFormFactory,\n },\n\n components: {\n Toolbar,\n },\n\n inputs: {\n TextBox: TextBoxForSigninWidget,\n PasswordBox: PasswordBoxForSigninWidget,\n CheckBox,\n Radio,\n Select,\n InputGroup,\n },\n },\n },\n\n models: {\n BaseSchema,\n SchemaProperty,\n },\n};\n\nregisterInput('text', TextBoxForSigninWidget);\nregisterInput('password', PasswordBoxForSigninWidget);\nregisterInput('checkbox', CheckBox);\nregisterInput('radio', Radio);\nregisterInput('select', Select);\nregisterInput('group', InputGroup);\n\nexport {\n Backbone,\n\n $,\n\n _,\n\n Handlebars,\n\n loc,\n\n createButton,\n\n createCallout,\n\n registerInput,\n\n Model,\n\n // TODO: BaseModel has been deprecated and shall not be public\n // remove this once clean up usage in widget.\n BaseModel,\n\n Collection,\n\n FrameworkView,\n\n View,\n\n ListView,\n\n Router,\n\n Controller,\n\n Form,\n\n internal,\n};\n\n// Additional type exports\nexport * from './courage/views/forms/types';\nexport * from './courage/framework/Model';\nexport * from './courage/models/Model';\nexport * from './courage/util/BaseRouter';\nexport * from './courage/util/SettingsModel';\nexport * from './courage/util/jquery-wrapper';\nexport * from './courage/util/underscore-wrapper';\n","/*\n * Checking in as there is no npm module to consume. \n * Current version is 2.15.\n * Repo - https://github.com/TypingDNA/TypingDnaRecorder-JavaScript\n */\n\n/**\n * TypingDNA - Typing Biometrics JavaScript API\n * https://api.typingdna.com/scripts/typingdna.js\n * https://typingdna.com/scripts/typingdna.js (alternative)\n *\n * @version 2.15\n * @author Raul Popa\n * @copyright SC TypingDNA SRL, http://typingdna.com\n * @license http://www.apache.org/licenses/LICENSE-2.0\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * Typical usage:\n * var tdna = new TypingDNA(); // creates a new TypingDNA object and starts recording\n * var typingPattern = tdna.getTypingPattern({type=1, text=\"Hello5g21?*\"});\n * returns a type 1 typing pattern (and continues recording afterwards)\n *\n * Optional:\n * tdna.stop(); // ends recording and clears history stack (returns recording flag: false)\n * tdna.start(); // restarts the recording after a stop (returns recording flag: true)\n * tdna.reset(); // restarts the recording anytime, clears history stack and starts from scratch (returns nothing)\n * var typingPatternQuality = TypingDNA.getQuality(typingPattern); //returns the quality/strength of any typing pattern\n * (there is no need to initialize the class to do pattern quality checking)\n */\n\n/**\n * Creates a single instance (or a reference) of the TypingDNA class\n * @return {Object} Returns the single instance of the TypingDNA class.\n * @example var tdna = new TypingDNA();\n */\nmodule.exports = function TypingDNA() {\n if (TypingDNA.initialized != true) {\n TypingDNA.prototype.start = function() {\n return TypingDNA.start.apply(this, arguments);\n }\n TypingDNA.prototype.stop = function() {\n return TypingDNA.stop.apply(this, arguments);\n }\n TypingDNA.prototype.reset = function() {\n return TypingDNA.reset.apply(this, arguments);\n }\n TypingDNA.prototype.addTarget = function() {\n return TypingDNA.addTarget.apply(this, arguments);\n }\n TypingDNA.prototype.removeTarget = function() {\n return TypingDNA.removeTarget.apply(this, arguments);\n }\n TypingDNA.prototype.getTypingPattern = function() {\n return TypingDNA.getTypingPattern.apply(this, arguments);\n }\n TypingDNA.prototype.get = function() {\n // still works but will be deprecated in favor of getTypignPattern()\n return TypingDNA.get.apply(this, arguments);\n }\n TypingDNA.prototype.startDiagram = function() {\n // deprecated in favor of start()\n //return TypingDNA.startDiagram.apply(this, arguments);\n }\n TypingDNA.prototype.stopDiagram = function() {\n // deprecated in favor of stop()\n //return TypingDNA.stopDiagram.apply(this, arguments);\n }\n TypingDNA.prototype.getDiagram = function() {\n // still works but will be deprecated in favor of getTypignPattern()\n return TypingDNA.getDiagram.apply(this, arguments);\n }\n TypingDNA.prototype.getExtendedDiagram = function() {\n // still works but will be deprecated in favor of getTypignPattern()\n return TypingDNA.getExtendedDiagram.apply(this, arguments);\n }\n TypingDNA.prototype.getMouseDiagram = function() {\n return TypingDNA.getMouseDiagram.apply(this, arguments);\n }\n TypingDNA.prototype.startMouse = function() {\n return TypingDNA.startMouse.apply(this, arguments);\n }\n TypingDNA.prototype.stopMouse = function() {\n return TypingDNA.stopMouse.apply(this, arguments);\n }\n TypingDNA.prototype.getQuality = function() {\n return TypingDNA.getQuality.apply(this, arguments);\n }\n TypingDNA.prototype.getLength = function() {\n return TypingDNA.getLength.apply(this, arguments);\n }\n TypingDNA.prototype.isMobile = function() {\n return TypingDNA.isMobile.apply(this, arguments);\n }\n TypingDNA.prototype.getTextId = function() {\n return TypingDNA.getTextId.apply(this, arguments)\n }\n TypingDNA.initialized = true;\n TypingDNA.prototype.maxHistoryLength = TypingDNA.maxHistoryLength;\n TypingDNA.prototype.defaultHistoryLength = TypingDNA.defaultHistoryLength;\n TypingDNA.prototype.maxSeekTime = TypingDNA.maxSeekTime;\n TypingDNA.prototype.maxPressTime = TypingDNA.maxPressTime;\n TypingDNA.version = 2.15;\n TypingDNA.flags = 0;\n TypingDNA.instance = this;\n TypingDNA.document = document;\n TypingDNA.maxHistoryLength = 2000;\n TypingDNA.maxSeekTime = 1500;\n TypingDNA.maxPressTime = 300;\n TypingDNA.defaultHistoryLength = 160;\n TypingDNA.spKeyCodes = [8, 13, 32];\n TypingDNA.spKeyCodesObj = {\n 8: 1,\n 13: 1,\n 32: 1\n };\n TypingDNA.keyCodes = [65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 32, 222, 188, 190, 186, 187, 189, 191, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57];\n TypingDNA.keyCodesObj = {}\n for (var i in TypingDNA.keyCodes) {\n TypingDNA.keyCodesObj[TypingDNA.keyCodes[i]] = 1;\n }\n TypingDNA.pt1 = TypingDNA.ut1 = (new Date).getTime();\n TypingDNA.wfk = [];\n TypingDNA.sti = [];\n TypingDNA.skt = [];\n TypingDNA.recording = true;\n TypingDNA.mouseRecording = true;\n TypingDNA.mouseMoveRecording = false;\n TypingDNA.spKeyRecording = true;\n TypingDNA.diagramRecording = true;\n TypingDNA.dwfk = [];\n TypingDNA.dsti = [];\n TypingDNA.dskt = [];\n TypingDNA.drkc = [];\n TypingDNA.dlastDownKey;\n TypingDNA.prevKeyCode = 0;\n TypingDNA.maxMoveDeltaTime = 600;\n TypingDNA.maxScrollDeltaTime = 800;\n TypingDNA.maxStopTime = 1500;\n TypingDNA.maxClickTime = 600;\n TypingDNA.maxMouseHistoryLength = 500;\n TypingDNA.lastMouseMoveTime = TypingDNA.lastMouseDownTime = (new Date).getTime();\n TypingDNA.stopTimes = [];\n TypingDNA.clickTimes = [];\n TypingDNA.lastMouseStop = true;\n TypingDNA.zl = 0.0000001;\n TypingDNA.isAndroidChrome = false;\n TypingDNA.ACLastTime = (new Date).getTime();\n TypingDNA.ACSeekTime = 0;\n TypingDNA.ACPressTime = 0;\n TypingDNA.ACLastCharCode = 0;\n TypingDNA.ACLastKeyCode = 0;\n TypingDNA.ACInputLengths = {\n inputs: [],\n lastLength: [],\n };\n TypingDNA.ACPreviousKeyCode = 0;\n TypingDNA.targetIds = [];\n TypingDNA.lastTarget = \"\";\n TypingDNA.lastTargetFound = false;\n TypingDNA.replaceMissingKeys = true;\n TypingDNA.replaceMissingKeysPerc = 7;\n\n TypingDNA.keyDown = function(e) {\n if (!TypingDNA.recording && !TypingDNA.diagramRecording) {\n return;\n }\n if (!TypingDNA.isTarget(e.target.id)) {\n return;\n }\n var keyCode = e.keyCode;\n if (TypingDNA.wfk[keyCode] == 1 || TypingDNA.dwfk[keyCode] == 1) {\n //return;\n }\n if (keyCode == 229 && TypingDNA.isMobile() && !TypingDNA.isAndroidChrome) {\n TypingDNA.isAndroidChrome = true;\n\n TypingDNA.ACSeekTime = (new Date).getTime() - TypingDNA.ACLastTime;\n TypingDNA.ACLastTime = (new Date).getTime();\n\n TypingDNA.document.removeEventListener(\"keydown\", TypingDNA.keyDown);\n TypingDNA.document.removeEventListener(\"keyup\", TypingDNA.keyUp);\n TypingDNA.document.removeEventListener(\"keypress\", TypingDNA.keyPress);\n\n // if android\n TypingDNA.document.addEventListener(\"keydown\", TypingDNA.ACKeyDown);\n TypingDNA.document.addEventListener(\"keyup\", TypingDNA.ACKeyUp);\n } else {\n var t0 = TypingDNA.pt1;\n TypingDNA.pt1 = (new Date).getTime();\n var seekTotal = TypingDNA.pt1 - t0;\n var startTime = TypingDNA.pt1;\n if (TypingDNA.recording == true || (TypingDNA.spKeyCodesObj[keyCode] && TypingDNA.spKeyRecording == true)) {\n if (!e.shiftKey || TypingDNA.isMobile()) {\n TypingDNA.wfk[keyCode] = 1;\n TypingDNA.skt[keyCode] = seekTotal;\n TypingDNA.sti[keyCode] = startTime;\n }\n }\n if (TypingDNA.diagramRecording == true) {\n TypingDNA.dwfk[keyCode] = 1;\n TypingDNA.dskt[keyCode] = seekTotal;\n TypingDNA.dsti[keyCode] = startTime;\n TypingDNA.dlastDownKey = keyCode;\n }\n }\n }\n\n TypingDNA.keyPress = function(e) {\n if (!TypingDNA.recording && !TypingDNA.diagramRecording) {\n return;\n }\n if (!TypingDNA.isTarget(e.target.id)) {\n return;\n }\n if (TypingDNA.diagramRecording == true) {\n var keyCode = TypingDNA.dlastDownKey;\n TypingDNA.drkc[keyCode] = e.charCode;\n }\n }\n\n TypingDNA.keyUp = function(e) {\n if (!TypingDNA.recording && !TypingDNA.diagramRecording) {\n return;\n }\n if (!TypingDNA.isTarget(e.target.id)) {\n return;\n }\n var ut = (new Date).getTime();\n var keyCode = e.keyCode;\n if (TypingDNA.recording == true || (TypingDNA.spKeyCodesObj[keyCode] && TypingDNA.spKeyRecording == true)) {\n if (!e.shiftKey || TypingDNA.isMobile()) {\n if (TypingDNA.wfk[keyCode] == 1) {\n var pressTime = ut - TypingDNA.sti[keyCode];\n var seekTime = TypingDNA.skt[keyCode];\n var arr = [keyCode, seekTime, pressTime, TypingDNA.prevKeyCode, ut, e.target.id];\n TypingDNA.history.add(arr);\n TypingDNA.prevKeyCode = keyCode;\n }\n }\n TypingDNA.wfk[keyCode] = 0;\n }\n if (TypingDNA.diagramRecording == true) {\n if (TypingDNA.drkc[keyCode] != undefined && TypingDNA.drkc[keyCode] != 0) {\n if (TypingDNA.dwfk[keyCode] == 1) {\n var pressTime = ut - TypingDNA.dsti[keyCode];\n var seekTime = TypingDNA.dskt[keyCode];\n var realKeyCode = TypingDNA.drkc[keyCode];\n var arrD = [keyCode, seekTime, pressTime, realKeyCode, ut, e.target.id];\n TypingDNA.history.addDiagram(arrD);\n }\n }\n TypingDNA.dwfk[keyCode] = 0;\n }\n }\n\n TypingDNA.mouseScroll = function(e) {\n if (TypingDNA.mouseRecording == true) {\n if (TypingDNA.mouseMoveRecording == true) {\n if (TypingDNA.mouse.scrollStarted == true) {\n var currentTime = (new Date).getTime();\n TypingDNA.mouse.scrollTimes.push(currentTime);\n TypingDNA.mouse.scrollTopArr.push(TypingDNA.document.body.scrollTop);\n clearInterval(TypingDNA.scrollInterval);\n TypingDNA.scrollInterval = setInterval(TypingDNA.mouse.checkScroll, TypingDNA.maxScrollDeltaTime);\n } else {\n TypingDNA.mouse.scrollStarted = true\n }\n }\n }\n }\n\n TypingDNA.mouseMove = function(e) {\n if (TypingDNA.mouseRecording == true) {\n var currentTime = (new Date).getTime();\n if (TypingDNA.mouseMoveRecording == true) {\n if (TypingDNA.mouse.started == true) {\n TypingDNA.mouse.times.push(currentTime);\n TypingDNA.mouse.xPositions.push(e.screenX);\n TypingDNA.mouse.yPositions.push(e.screenY);\n clearInterval(TypingDNA.moveInterval);\n TypingDNA.moveInterval = setInterval(TypingDNA.mouse.checkMove, TypingDNA.maxMoveDeltaTime);\n } else {\n TypingDNA.mouse.started = true;\n }\n }\n TypingDNA.lastMouseMoveTime = currentTime;\n }\n }\n\n TypingDNA.mouseDown = function(e) {\n if (TypingDNA.mouseRecording == true) {\n TypingDNA.mouse.checkMove();\n TypingDNA.mouse.checkScroll();\n if (e.which == 1) {\n TypingDNA.lastMouseDownTime = (new Date).getTime();\n var stopTime = TypingDNA.lastMouseDownTime - TypingDNA.lastMouseMoveTime;\n if (stopTime < TypingDNA.maxStopTime && TypingDNA.lastMouseStop == false) {\n TypingDNA.stopTimes.push(stopTime);\n if (TypingDNA.mouseMoveRecording == true) {\n var eventType = 3;\n var arr = [eventType, stopTime];\n TypingDNA.mouse.history.add(arr);\n TypingDNA.lastMouseStop = true;\n }\n }\n }\n }\n }\n\n TypingDNA.mouseUp = function(e) {\n if (TypingDNA.mouseRecording == true) {\n if (e.which == 1) {\n var clickTime = (new Date).getTime() - TypingDNA.lastMouseDownTime;\n if (clickTime < TypingDNA.maxClickTime && TypingDNA.lastMouseDownTime > TypingDNA.lastMouseMoveTime) {\n TypingDNA.clickTimes.push(clickTime);\n if (TypingDNA.mouseMoveRecording == true) {\n var eventType = 4;\n var arr = [eventType, clickTime];\n TypingDNA.mouse.history.add(arr);\n }\n }\n }\n }\n }\n\n TypingDNA.ACKeyDown = function(e) {\n if (!TypingDNA.recording && !TypingDNA.diagramRecording) {\n return;\n }\n TypingDNA.ACSeekTime = (new Date).getTime() - TypingDNA.ACLastTime;\n TypingDNA.ACLastTime = (new Date).getTime();\n if (!TypingDNA.isTarget(e.target.id)) {\n return;\n }\n if(TypingDNA.ACInputLengths.inputs.indexOf(e.target) === -1) {\n TypingDNA.ACInputLengths.inputs.push(e.target);\n TypingDNA.ACInputLengths.lastLength.push(0);\n }\n }\n\n TypingDNA.ACKeyUp = function(e) {\n if (!TypingDNA.recording && !TypingDNA.diagramRecording) {\n return;\n }\n TypingDNA.ACPressTime = (new Date).getTime() - TypingDNA.ACLastTime;\n TypingDNA.ACLastTime = (new Date).getTime();\n if (!TypingDNA.isTarget(e.target.id)) {\n return;\n }\n var keyCode = e.keyCode;\n var targetIndex = TypingDNA.ACInputLengths.inputs.indexOf(e.target);\n if(targetIndex === -1) {\n TypingDNA.ACInputLengths.inputs.push(e.target);\n TypingDNA.ACInputLengths.lastLength.push(0);\n targetIndex = TypingDNA.ACInputLengths.inputs.indexOf(e.target);\n }\n if (keyCode == 229 && e.target.value.length >= TypingDNA.ACInputLengths.lastLength[targetIndex]) {\n var char = e.target.value.substr((e.target.selectionStart - 1) || 0 , 1);\n keyCode = char.toUpperCase().charCodeAt(0);\n TypingDNA.ACLastCharCode = char.charCodeAt(0);\n TypingDNA.ACLastKeyCode = char.toUpperCase().charCodeAt(0);\n }\n TypingDNA.ACInputLengths.lastLength[targetIndex] = e.target.value.length;\n var arr = [keyCode, TypingDNA.ACSeekTime, TypingDNA.ACPressTime, TypingDNA.ACPreviousKeyCode, TypingDNA.ACLastTime];\n TypingDNA.history.add(arr);\n TypingDNA.ACPreviousKeyCode = keyCode;\n if (TypingDNA.diagramRecording == true ) {\n var arrD = [keyCode, TypingDNA.ACSeekTime, TypingDNA.ACPressTime, TypingDNA.ACLastCharCode];\n TypingDNA.history.addDiagram(arrD);\n }\n }\n\n TypingDNA.isTarget = function(target) {\n if (TypingDNA.lastTarget == target && TypingDNA.lastTargetFound) {\n return true;\n } else {\n var targetLength = TypingDNA.targetIds.length;\n var targetFound = false;\n if (targetLength > 0) {\n for (var i = 0; i < targetLength; i++) {\n if (TypingDNA.targetIds[i] == target) {\n targetFound = true;\n break;\n }\n }\n TypingDNA.lastTarget = target;\n TypingDNA.lastTargetFound = targetFound;\n return targetFound;\n } else {\n TypingDNA.lastTarget = target;\n TypingDNA.lastTargetFound = true;\n return true;\n }\n }\n }\n\n if (TypingDNA.document.addEventListener) {\n TypingDNA.document.addEventListener(\"keydown\", TypingDNA.keyDown);\n TypingDNA.document.addEventListener(\"keyup\", TypingDNA.keyUp);\n TypingDNA.document.addEventListener(\"keypress\", TypingDNA.keyPress);\n TypingDNA.document.addEventListener(\"mousemove\", TypingDNA.mouseMove);\n TypingDNA.document.addEventListener(\"mousedown\", TypingDNA.mouseDown);\n TypingDNA.document.addEventListener(\"mouseup\", TypingDNA.mouseUp);\n TypingDNA.document.addEventListener(\"scroll\", TypingDNA.mouseScroll);\n } else if (TypingDNA.document.attachEvent) {\n TypingDNA.document.attachEvent(\"onkeydown\", TypingDNA.keyDown);\n TypingDNA.document.attachEvent(\"onkeyup\", TypingDNA.keyUp);\n TypingDNA.document.attachEvent(\"onkeypress\", TypingDNA.keyPress);\n TypingDNA.document.attachEvent(\"onmousemove\", TypingDNA.mouseMove);\n TypingDNA.document.attachEvent(\"onmousedown\", TypingDNA.mouseDown);\n TypingDNA.document.attachEvent(\"onmouseup\", TypingDNA.mouseUp);\n TypingDNA.document.attachEvent(\"onscroll\", TypingDNA.mouseScroll);\n } else {\n console.log(\"browser not supported\");\n }\n\n TypingDNA.mouse = {};\n TypingDNA.mouse.times = [];\n TypingDNA.mouse.xPositions = [];\n TypingDNA.mouse.yPositions = [];\n TypingDNA.mouse.scrollTimes = [];\n TypingDNA.mouse.scrollTopArr = [];\n TypingDNA.mouse.history = {};\n TypingDNA.mouse.history.stack = [];\n\n TypingDNA.mouse.getDistance = function(a, b) {\n return Math.sqrt((a * a) + (b * b));\n }\n\n TypingDNA.mouse.getTotalDistance = function(xPositions, yPositions) {\n var totalDistance = 0;\n var length = xPositions.length;\n for (i = 1; i < length - 1; i++) {\n var a = xPositions[i] - xPositions[i - 1];\n var b = yPositions[i] - yPositions[i - 1];\n totalDistance += TypingDNA.mouse.getDistance(a, b);\n }\n return totalDistance;\n }\n\n TypingDNA.mouse.getAngle = function(xPosDelta, yPosDelta) {\n var angle = 0;\n var leftRight = (xPosDelta >= 0); // 1 if left, 0 if right\n var downUp = (yPosDelta < 0); // 1 if down, 0 if up\n if (leftRight) {\n if (downUp) {\n angle = 180 + (Math.round(Math.atan(Math.abs(xPosDelta) / (Math.abs(yPosDelta) + 0.0000001)) / 0.01745329251)) // 0.01745329251 = pi/180\n } else {\n angle = 270 + (90 - Math.round(Math.atan(Math.abs(xPosDelta) / (Math.abs(yPosDelta) + 0.0000001)) / 0.01745329251))\n }\n } else {\n if (downUp) {\n angle = 90 + (90 - Math.round(Math.atan(Math.abs(xPosDelta) / (Math.abs(yPosDelta) + 0.0000001)) / 0.01745329251))\n } else {\n angle = Math.round(Math.atan(Math.abs(xPosDelta) / (Math.abs(yPosDelta) + 0.0000001)) / 0.01745329251)\n }\n }\n return angle;\n }\n\n TypingDNA.mouse.recordMoveAction = function() {\n var length = TypingDNA.mouse.times.length;\n if (length < 3) {\n return;\n }\n var deltaTime = TypingDNA.mouse.times[length - 1] - TypingDNA.mouse.times[0];\n var xPosDelta = TypingDNA.mouse.xPositions[length - 1] - TypingDNA.mouse.xPositions[0];\n var yPosDelta = TypingDNA.mouse.yPositions[length - 1] - TypingDNA.mouse.yPositions[0];\n var directDistance = Math.round(TypingDNA.mouse.getDistance(xPosDelta, yPosDelta));\n var totalDistance = Math.round(TypingDNA.mouse.getTotalDistance(TypingDNA.mouse.xPositions, TypingDNA.mouse.yPositions));\n var ratioDistance = Math.round(totalDistance * 100 / directDistance);\n var speed = Math.round(directDistance * 100 / deltaTime);\n var angle = TypingDNA.mouse.getAngle(xPosDelta, yPosDelta);\n var eventType = 1;\n var arr = [eventType, deltaTime, directDistance, speed, angle, ratioDistance];\n for (i in arr) {\n if (isNaN(arr[i])) {\n return;\n }\n }\n TypingDNA.mouse.history.add(arr);\n TypingDNA.lastMouseStop = false;\n }\n\n TypingDNA.mouse.recordScrollAction = function() {\n var length = TypingDNA.mouse.scrollTimes.length;\n if (length < 2) {\n return;\n }\n var deltaTime = TypingDNA.mouse.scrollTimes[length - 1] - TypingDNA.mouse.scrollTimes[0];\n var directDistance = TypingDNA.mouse.scrollTopArr[length - 1] - TypingDNA.mouse.scrollTopArr[0];\n var speed = Math.round(directDistance * 100 / deltaTime);\n var eventType = 2;\n var arr = [eventType, deltaTime, directDistance, speed];\n for (i in arr) {\n if (isNaN(arr[i]) && !isFinite(arr[i])) {\n return;\n }\n }\n TypingDNA.mouse.history.add(arr);\n }\n\n TypingDNA.mouse.history.add = function(arr) {\n this.stack.push(arr);\n if (this.stack.length > TypingDNA.maxMouseHistoryLength) {\n this.stack.shift();\n }\n }\n\n TypingDNA.mouse.history.getDiagram = function() {\n var mouseDiagram = this.stack.join(\"|\");\n return [String(TypingDNA.isMobile()) + \",\" + String(TypingDNA.version), mouseDiagram].join(\"|\");\n }\n\n TypingDNA.mouse.clearLastMove = function() {\n TypingDNA.mouse.times = [];\n TypingDNA.mouse.xPositions = [];\n TypingDNA.mouse.yPositions = [];\n }\n\n TypingDNA.mouse.checkMove = function() {\n clearInterval(TypingDNA.moveInterval);\n if (TypingDNA.mouse.started == true) {\n TypingDNA.mouse.started = false;\n TypingDNA.mouse.recordMoveAction();\n TypingDNA.mouse.clearLastMove();\n }\n }\n\n TypingDNA.mouse.clearLastScroll = function() {\n TypingDNA.mouse.scrollTimes = [];\n TypingDNA.mouse.scrollTopArr = [];\n }\n\n TypingDNA.mouse.checkScroll = function() {\n clearInterval(TypingDNA.scrollInterval);\n if (TypingDNA.mouse.scrollStarted == true) {\n TypingDNA.mouse.scrollStarted = false;\n TypingDNA.mouse.recordScrollAction();\n TypingDNA.mouse.clearLastScroll();\n }\n }\n\n /**\n * Adds a target to the targetIds array.\n */\n TypingDNA.addTarget = function(target) {\n var targetLength = TypingDNA.targetIds.length;\n var targetFound = false;\n if (targetLength > 0) {\n for (var i = 0; i < targetLength; i++) {\n if (TypingDNA.targetIds[i] == target) {\n targetFound = true;\n break;\n }\n }\n if (!targetFound) {\n TypingDNA.targetIds.push(target);\n }\n } else {\n TypingDNA.targetIds.push(target);\n }\n }\n\n /**\n * Adds a target to the targetIds array.\n */\n TypingDNA.removeTarget = function(target) {\n var targetLength = TypingDNA.targetIds.length;\n if (targetLength > 0) {\n for (var i = 0; i < targetLength; i++) {\n if (TypingDNA.targetIds[i] == target) {\n TypingDNA.targetIds.splice(i, 1);\n break;\n }\n }\n }\n }\n\n /**\n * Resets the history stack\n */\n TypingDNA.reset = function(all) {\n TypingDNA.history.stack = [];\n TypingDNA.history.stackDiagram = [];\n TypingDNA.clickTimes = [];\n TypingDNA.stopTimes = [];\n TypingDNA.ACInputLengths = {\n inputs: [],\n lastLength: [],\n };\n if (all == true) {\n TypingDNA.mouse.history.stack = [];\n }\n }\n\n /**\n * Automatically called at initilization. It starts the recording of keystrokes.\n */\n TypingDNA.start = function() {\n TypingDNA.diagramRecording = true;\n return TypingDNA.recording = true;\n }\n\n /**\n * Ends the recording of further keystrokes. To restart recording afterwards you can\n * either call TypingDNA.start() or create a new TypingDNA object again, not recommended.\n */\n TypingDNA.stop = function() {\n TypingDNA.diagramRecording = false;\n return TypingDNA.recording = false;\n }\n\n /**\n * Starts the recording of mouse activity.\n */\n TypingDNA.startMouse = function() {\n return TypingDNA.mouseRecording = TypingDNA.mouseMoveRecording = true;\n }\n\n /**\n * Stops the recording of mouse activity.\n */\n TypingDNA.stopMouse = function() {\n return TypingDNA.mouseRecording = TypingDNA.mouseMoveRecording = false;\n }\n\n /**\n * This is the main function that outputs the typing pattern as a String\n * {type:Number, text:String, textId:Number, length: Number, targetId:String, caseSensitive:Boolean}\n * @param {Object} obj an object with the following properties\n * * * @param {String} type 0 for anytext pattern, 1 for sametext pattern (also called diagram pattern)\n * * * and 2 for extended pattern (most versatile, can replace both anytext and sametext patterns)\n * * * @param {Number} length (Optional) the length of the text in the history for which you want\n * * * the typing pattern. length is ignored when text or targetId is set (or both).\n * * * @param {String} text (Only for type 1 and type 2) a typed string that you want the typing pattern for\n * * * @param {Number} textId (Optional, only for type 1 and type 2) a personalized id for the typed text\n * * * @param {String} targetId (Optional) specifies if pattern is obtain only from text typed in a certain target\n * * * @param {Boolean} caseSensitive (Optional, default: false) Used if you pass a text for type 1 or type 2\n * * * DEPRECATED * * * in favor of type = 2 * * *\n * * * @param {Boolean} extended (Only for type 1) specifies if full information about what was typed is produced,\n * * * including the actual key pressed, if false, only the order of pressed keys is kept (no actual content)\n * @return {String} A typing pattern in string form\n * @example var typingPattern = tdna.getTypingPattern({type=0, length=180});\n * @example var typingPattern = tdna.getTypingPattern({type=1, text=\"Hello5g21?*\"});\n * @example var typingPattern = tdna.getTypingPattern({type=2, text=\"example@mail.com\"});\n */\n TypingDNA.getTypingPattern = function(obj) {\n if (typeof obj === 'object') {\n switch (obj.type) {\n case 0:\n return TypingDNA.get(obj.length, obj.targetId);\n break;\n case 1:\n var str = (obj.text != undefined) ? obj.text : obj.length;\n return TypingDNA.history.getDiagram(obj.extended, str, obj.textId, obj.targetId, obj.caseSensitive);\n break;\n case 2:\n var str = (obj.text != undefined) ? obj.text : obj.length;\n return TypingDNA.history.getDiagram(true, str, obj.textId, obj.targetId, obj.caseSensitive);\n break;\n default:\n return TypingDNA.get(obj.length);\n break;\n }\n } else {\n return TypingDNA.get();\n }\n }\n\n TypingDNA.getDiagram = function(str, textId) {\n return TypingDNA.history.getDiagram(false, str, textId, undefined, false);\n }\n\n TypingDNA.getExtendedDiagram = function(str, textId) {\n return TypingDNA.history.getDiagram(true, str, textId, undefined, false);\n }\n\n TypingDNA.getMouseDiagram = function() {\n return TypingDNA.mouse.history.getDiagram();\n }\n\n TypingDNA.get = function(length, targetId) {\n var historyTotalLength = TypingDNA.history.stack.length;\n if (length == undefined || length == 0) {\n length = TypingDNA.defaultHistoryLength;\n }\n if (length > historyTotalLength) {\n length = historyTotalLength;\n }\n var obj = {};\n [obj.arr, targetLength] = TypingDNA.history.get(length, \"\", targetId);\n if (targetId != undefined && targetId != \"\") {\n length = targetLength;\n }\n var zl = TypingDNA.zl;\n var histRev = length;\n var histSktF = TypingDNA.math.fo(TypingDNA.history.get(length, \"seek\", targetId));\n var histPrtF = TypingDNA.math.fo(TypingDNA.history.get(length, \"press\", targetId));\n var pressHistMean = Math.round(TypingDNA.math.avg(histPrtF));\n var seekHistMean = Math.round(TypingDNA.math.avg(histSktF));\n var pressHistSD = Math.round(TypingDNA.math.sd(histPrtF));\n var seekHistSD = Math.round(TypingDNA.math.sd(histSktF));\n var charMeanTime = seekHistMean + pressHistMean;\n var pressRatio = TypingDNA.math.rd((pressHistMean + zl) / (charMeanTime + zl), 4);\n var seekToPressRatio = TypingDNA.math.rd((1 - pressRatio) / pressRatio, 4);\n var pressSDToPressRatio = TypingDNA.math.rd((pressHistSD + zl) / (pressHistMean + zl), 4);\n var seekSDToPressRatio = TypingDNA.math.rd((seekHistSD + zl) / (pressHistMean + zl), 4);\n var cpm = Math.round(6E4 / (charMeanTime + zl));\n if (histRev == 0) {\n cpm = 0;\n }\n for (var i in obj.arr) {\n var rev = obj.arr[i][1].length;\n var seekMean = 0;\n var pressMean = 0;\n var postMean = 0;\n var seekSD = 0;\n var pressSD = 0;\n var postSD = 0;\n switch (obj.arr[i][0].length) {\n case 0:\n break;\n case 1:\n var seekMean = TypingDNA.math.rd((obj.arr[i][0][0] + zl) / (seekHistMean + zl), 4);\n break;\n default:\n var arr = TypingDNA.math.fo(obj.arr[i][0]);\n seekMean = TypingDNA.math.rd((TypingDNA.math.avg(arr) + zl) / (seekHistMean + zl), 4);\n seekSD = TypingDNA.math.rd((TypingDNA.math.sd(arr) + zl) / (seekHistSD + zl), 4);\n }\n switch (obj.arr[i][1].length) {\n case 0:\n break;\n case 1:\n var pressMean = TypingDNA.math.rd((obj.arr[i][1][0] + zl) / (pressHistMean + zl), 4);\n break;\n default:\n var arr = TypingDNA.math.fo(obj.arr[i][1]);\n pressMean = TypingDNA.math.rd((TypingDNA.math.avg(arr) + zl) / (pressHistMean + zl), 4);\n pressSD = TypingDNA.math.rd((TypingDNA.math.sd(arr) + zl) / (pressHistSD + zl), 4);\n }\n switch (obj.arr[i][2].length) {\n case 0:\n break;\n case 1:\n var postMean = TypingDNA.math.rd((obj.arr[i][2][0] + zl) / (seekHistMean + zl), 4);\n break;\n default:\n var arr = TypingDNA.math.fo(obj.arr[i][2]);\n postMean = TypingDNA.math.rd((TypingDNA.math.avg(arr) + zl) / (seekHistMean + zl), 4);\n postSD = TypingDNA.math.rd((TypingDNA.math.sd(arr) + zl) / (seekHistSD + zl), 4);\n }\n delete obj.arr[i][2];\n delete obj.arr[i][1];\n delete obj.arr[i][0];\n obj.arr[i][0] = rev;\n obj.arr[i][1] = seekMean;\n obj.arr[i][2] = pressMean;\n obj.arr[i][3] = postMean;\n obj.arr[i][4] = seekSD;\n obj.arr[i][5] = pressSD;\n obj.arr[i][6] = postSD;\n }\n var arr = [];\n TypingDNA.apu(arr, histRev);\n TypingDNA.apu(arr, cpm);\n TypingDNA.apu(arr, charMeanTime);\n TypingDNA.apu(arr, pressRatio);\n TypingDNA.apu(arr, seekToPressRatio);\n TypingDNA.apu(arr, pressSDToPressRatio);\n TypingDNA.apu(arr, seekSDToPressRatio);\n TypingDNA.apu(arr, pressHistMean);\n TypingDNA.apu(arr, seekHistMean);\n TypingDNA.apu(arr, pressHistSD);\n TypingDNA.apu(arr, seekHistSD);\n for (var c = 0; c <= 6; c++) {\n for (var i = 0; i < 44; i++) {\n var keyCode = TypingDNA.keyCodes[i];\n var val = obj.arr[keyCode][c];\n if (val == 0 && c > 0) {\n val = 1;\n }\n TypingDNA.apu(arr, val);\n }\n }\n TypingDNA.apu(arr, TypingDNA.isMobile());\n TypingDNA.apu(arr, TypingDNA.version);\n TypingDNA.apu(arr, TypingDNA.flags);\n arr.push(TypingDNA.history.getSpecialKeys());\n return arr.join(\",\");\n }\n\n TypingDNA.apu = function(arr, val) {\n \"NaN\" == String(val) && (val = 0);\n arr.push(val);\n }\n\n TypingDNA.math = {};\n\n TypingDNA.math.rd = function(val, dec) {\n return Number(val.toFixed(dec));\n }\n\n TypingDNA.math.avg = function(arr) {\n var len = arr.length;\n if (len > 0) {\n var sum = 0;\n for (var i = 0; i < len; i++) {\n sum += arr[i];\n }\n return this.rd(sum / len, 4);\n } else {\n return 0;\n }\n }\n\n TypingDNA.math.sd = function(arr) {\n var len = arr.length;\n if (len < 2) {\n return 0;\n } else {\n var sumVS = 0;\n var mean = this.avg(arr);\n for (var i = 0; i < len; i++) {\n sumVS += (arr[i] - mean) * (arr[i] - mean);\n }\n var sd = Math.sqrt(sumVS / len);\n return sd;\n }\n }\n\n TypingDNA.math.fo = function(arr) {\n if (arr.length > 1) {\n var values = arr.concat();\n var len = arr.length;\n values.sort(function(a, b) {\n return a - b;\n });\n var asd = this.sd(values);\n var aMean = values[Math.ceil(arr.length / 2)];\n var multiplier = 2;\n var maxVal = aMean + multiplier * asd;\n var minVal = aMean - multiplier * asd;\n if (len < 20) {\n minVal = 0;\n }\n var fVal = [];\n for (var i = 0; i < len; i++) {\n var tempval = values[i];\n if (tempval < maxVal && tempval > minVal) {\n fVal.push(tempval);\n }\n }\n return fVal;\n } else {\n return arr;\n }\n }\n\n // Calculate a 32 bit FNV-1a hash\n TypingDNA.math.fnv1aHash = function(str) {\n if (str == undefined && typeof str !== 'string') {\n return 0;\n }\n str = str.toLowerCase();\n var i, l;\n var hval = 0x721b5ad4;\n for (i = 0, l = str.length; i < l; i++) {\n hval ^= str.charCodeAt(i);\n hval += (hval << 1) + (hval << 4) + (hval << 7) + (hval << 8) + (hval << 24);\n }\n return hval >>> 0;\n }\n\n TypingDNA.history = {};\n TypingDNA.history.stack = [];\n TypingDNA.history.stackDiagram = [];\n\n TypingDNA.history.add = function(arr) {\n this.stack.push(arr);\n if (this.stack.length > TypingDNA.maxHistoryLength) {\n this.stack.shift();\n }\n }\n\n TypingDNA.history.addDiagram = function(arr) {\n this.stackDiagram.push(arr);\n }\n\n TypingDNA.history.getDiagram = function(extended, str, textId, targetId, caseSensitive) {\n var caseSensitive = (caseSensitive != undefined) ? caseSensitive : (str == undefined || str == \"\");\n var returnArr = [];\n var diagramType = (extended == true) ? 1 : 0;\n var stackDiagram = this.stackDiagram;\n if (targetId != undefined && targetId != \"\" && stackDiagram.length > 0) {\n stackDiagram = TypingDNA.sliceStackByTargetId(stackDiagram, targetId);\n if (str == undefined || str == \"\") {\n var element = TypingDNA.document.getElementById(targetId);\n if (element != null) {\n str = element.value;\n }\n }\n } else {\n var targetLength = TypingDNA.targetIds.length;\n if (str == undefined || str == \"\") {\n if (targetLength > 0) {\n str = \"\";\n for (var i = 0; i < targetLength; i++) {\n var element = TypingDNA.document.getElementById(TypingDNA.targetIds[i]);\n if (element != null) {\n str += element.value;\n }\n }\n } else {\n if (!extended) {\n console.log(\"Please use extended pattern OR provide a fixed string param OR use the addTarget method.\");\n }\n }\n }\n }\n var missingCount = 0;\n var diagramHistoryLength = stackDiagram.length;\n var strLength = diagramHistoryLength;\n if (typeof str === 'string') {\n strLength = str.length;\n } else if (typeof str === 'number' && str < diagramHistoryLength) {\n strLength = str;\n }\n var returnTextId = 0;\n if (textId != undefined) {\n if (isNaN(parseInt(textId))) {\n returnTextId = TypingDNA.math.fnv1aHash(textId);\n } else {\n returnTextId = parseInt(textId);\n }\n } else {\n if (typeof str === 'string') {\n returnTextId = TypingDNA.math.fnv1aHash(str);\n }\n }\n returnArr.push([TypingDNA.isMobile(), TypingDNA.version, TypingDNA.flags, diagramType, strLength, returnTextId, TypingDNA.history.getSpecialKeys()]);\n if (str != undefined && str.length > 0 && typeof str === 'string') {\n var strLower = str.toLowerCase();\n var strUpper = str.toUpperCase();\n var lastFoundPos = [];\n var lastPos = 0;\n var strUpperCharCode;\n var currentSensitiveCharCode;\n for (var i = 0; i < str.length; i++) {\n var currentCharCode = str.charCodeAt(i);\n if (!caseSensitive) {\n strUpperCharCode = strUpper.charCodeAt(i);\n currentSensitiveCharCode = (strUpperCharCode != currentCharCode) ? strUpperCharCode : strLower.charCodeAt(i);\n }\n var startPos = lastPos;\n var finishPos = diagramHistoryLength;\n var found = false;\n while (found == false) {\n for (var j = startPos; j < finishPos; j++) {\n var arr = stackDiagram[j];\n var charCode = arr[3];\n if (charCode == currentCharCode || (!caseSensitive && charCode == currentSensitiveCharCode)) {\n found = true;\n if (j == lastPos) {\n lastPos++;\n lastFoundPos = [];\n } else {\n lastFoundPos.push(j);\n var len = lastFoundPos.length;\n if (len > 1 && lastFoundPos[len - 1] == lastFoundPos[len - 2] + 1) {\n lastPos = j + 1;\n lastFoundPos = [];\n }\n }\n var keyCode = arr[0];\n var seekTime = arr[1];\n var pressTime = arr[2];\n if (extended) {\n returnArr.push([charCode, seekTime, pressTime, keyCode]);\n } else {\n returnArr.push([seekTime, pressTime]);\n }\n break;\n }\n }\n if (found == false) {\n if (startPos != 0) {\n startPos = 0;\n finishPos = lastPos;\n } else {\n found = true;\n if (TypingDNA.replaceMissingKeys) {\n missingCount++;\n if (typeof TypingDNA.savedMissingAvgValues !== 'object' || TypingDNA.savedMissingAvgValues.historyLength != diagramHistoryLength) {\n var histSktF = TypingDNA.math.fo(TypingDNA.history.get(0, \"seek\"));\n var histPrtF = TypingDNA.math.fo(TypingDNA.history.get(0, \"press\"));\n var seekTime = Math.round(TypingDNA.math.avg(histSktF));\n var pressTime = Math.round(TypingDNA.math.avg(histPrtF));\n TypingDNA.savedMissingAvgValues = {\n seekTime: seekTime,\n pressTime: pressTime,\n historyLength: diagramHistoryLength\n };\n } else {\n var seekTime = TypingDNA.savedMissingAvgValues.seekTime;\n var pressTime = TypingDNA.savedMissingAvgValues.pressTime;\n }\n var missing = 1;\n if (extended) {\n returnArr.push([currentCharCode, seekTime, pressTime, currentCharCode, missing]);\n } else {\n returnArr.push([seekTime, pressTime, missing]);\n }\n break;\n }\n }\n }\n }\n if (TypingDNA.replaceMissingKeysPerc < missingCount * 100 / strLength) {\n return null;\n }\n }\n } else {\n var startCount = 0;\n if (typeof str === 'number') {\n startCount = diagramHistoryLength - str;\n }\n if (startCount < 0) {\n startCount = 0;\n }\n for (var i = startCount; i < diagramHistoryLength; i++) {\n var arr = stackDiagram[i];\n var keyCode = arr[0];\n var seekTime = arr[1];\n var pressTime = arr[2];\n if (extended) {\n var charCode = arr[3];\n returnArr.push([charCode, seekTime, pressTime, keyCode]);\n } else {\n returnArr.push([seekTime, pressTime]);\n }\n }\n }\n return returnArr.join(\"|\");\n }\n\n TypingDNA.sliceStackByTargetId = function(stack, targetId) {\n var length = stack.length;\n var newStack = [];\n for (i = 0; i < length; i++) {\n var arr = stack[i];\n if (arr[5] == targetId) {\n newStack.push(arr);\n }\n }\n return newStack;\n }\n\n TypingDNA.history.get = function(length, type, targetId) {\n var stack = this.stack;\n if (targetId != undefined && targetId != \"\" && stack.length > 0) {\n stack = TypingDNA.sliceStackByTargetId(stack, targetId);\n }\n var historyTotalLength = stack.length;\n if (length == 0 || length == undefined) {\n length = TypingDNA.defaultHistoryLength;\n }\n if (length > historyTotalLength) {\n length = historyTotalLength;\n }\n switch (type) {\n case \"seek\":\n var seekArr = [];\n for (i = 1; i <= length; i++) {\n var seekTime = stack[historyTotalLength - i][1];\n if (seekTime <= TypingDNA.maxSeekTime) {\n seekArr.push(seekTime);\n }\n };\n return seekArr;\n break;\n case \"press\":\n var pressArr = [];\n for (i = 1; i <= length; i++) {\n var pressTime = stack[historyTotalLength - i][2];\n if (pressTime <= TypingDNA.maxPressTime) {\n pressArr.push(pressTime);\n }\n };\n return pressArr;\n break;\n default:\n var historyStackObj = {};\n for (var i in TypingDNA.keyCodes) {\n historyStackObj[TypingDNA.keyCodes[i]] = [\n [],\n [],\n []\n ];\n }\n for (i = 1; i <= length; i++) {\n var arr = stack[historyTotalLength - i];\n var keyCode = arr[0];\n var seekTime = arr[1];\n var pressTime = arr[2];\n var prevKeyCode = arr[3];\n if (TypingDNA.keyCodesObj[keyCode]) {\n if (seekTime <= TypingDNA.maxSeekTime) {\n historyStackObj[keyCode][0].push(seekTime);\n if (prevKeyCode != 0 && TypingDNA.keyCodesObj[prevKeyCode]) {\n historyStackObj[prevKeyCode][2].push(seekTime);\n }\n }\n if (pressTime <= TypingDNA.maxPressTime) {\n historyStackObj[keyCode][1].push(pressTime);\n }\n }\n };\n return [historyStackObj, length];\n }\n }\n\n TypingDNA.history.getSpecialKeys = function() {\n var returnArr = [];\n var length = this.stack.length;\n var historyStackObj = {};\n for (var i in TypingDNA.spKeyCodes) {\n historyStackObj[TypingDNA.spKeyCodes[i]] = [\n [],\n ];\n }\n for (i = 1; i <= length; i++) {\n var arr = this.stack[length - i];\n if (TypingDNA.spKeyCodesObj[arr[0]]) {\n var keyCode = arr[0];\n var pressTime = arr[2];\n if (pressTime <= TypingDNA.maxPressTime) {\n historyStackObj[keyCode][0].push(pressTime);\n }\n }\n }\n for (var i in TypingDNA.spKeyCodes) {\n var arr = TypingDNA.math.fo(historyStackObj[TypingDNA.spKeyCodes[i]][0]);\n var arrLen = arr.length;\n returnArr.push(arrLen);\n if (arrLen > 1) {\n returnArr.push(Math.round(TypingDNA.math.avg(arr)));\n returnArr.push(Math.round(TypingDNA.math.sd(arr)));\n } else if (arrLen == 1) {\n returnArr.push([arr[0], -1]);\n } else {\n returnArr.push([-1, -1]);\n }\n }\n var clicksArrLen = TypingDNA.clickTimes.length;\n returnArr.push(clicksArrLen);\n if (clicksArrLen > 1) {\n returnArr.push(Math.round(TypingDNA.math.avg(TypingDNA.clickTimes)));\n returnArr.push(Math.round(TypingDNA.math.sd(TypingDNA.clickTimes)));\n } else if (clicksArrLen == 1) {\n returnArr.push(TypingDNA.clickTimes[0], -1);\n } else {\n returnArr.push([-1, -1]);\n }\n var stopArrLen = TypingDNA.stopTimes.length;\n returnArr.push(stopArrLen);\n if (stopArrLen > 1) {\n returnArr.push(Math.round(TypingDNA.math.avg(TypingDNA.stopTimes)));\n returnArr.push(Math.round(TypingDNA.math.sd(TypingDNA.stopTimes)));\n } else if (stopArrLen == 1) {\n returnArr.push(TypingDNA.stopTimes[0], -1);\n } else {\n returnArr.push([-1, -1]);\n }\n return returnArr;\n }\n\n /**\n * Checks the quality of a typing pattern, how well it is revelated, how useful the\n * information will be for matching applications. It returns a value between 0 and 1.\n * Values over 0.3 are acceptable, however a value over 0.7 shows good pattern strength.\n * @param {String} typingPattern The typing pattern string returned by the get() function.\n * @return {Number} A real number between 0 and 1. A close to 1 value means a stronger pattern.\n * @example var quality = tdna.getQuality(typingPattern);\n */\n TypingDNA.getQuality = function(typingPattern) {\n var obj = typingPattern.split(\",\");\n for (i = 0; i < obj.length; i++) {\n obj[i] = Number(obj[i]);\n }\n var totalEvents = obj[0];\n var acc = rec = avgAcc = 0;\n var avg = TypingDNA.math.avg(obj);\n var revs = obj.slice(11, 55);\n for (var i in revs) {\n rec += Number(revs[i] > 0);\n acc += Number(revs[i] > 4);\n avgAcc += Number(revs[i] > avg);\n }\n var tReturn = Math.sqrt(rec * acc * avgAcc) / 80;\n return tReturn > 1 ? 1 : tReturn;\n }\n\n /**\n * Checks the validity of a typing pattern if recorded on mobile.\n * @param {String} typingPattern The typing pattern string returned by the get() function.\n * @return {Number} A real number between 0 and 1. A number larger than 0.7 usually means a valid pattern.\n * @example var quality = tdna.checkMobileValidity(typingPattern);\n */\n TypingDNA.checkMobileValidity = function(typingPattern) {\n var obj = typingPattern.split(\",\");\n var totalEvents = obj[0];\n if (totalEvents == 0) {\n return 0;\n }\n var rec = 0;\n var revs = obj.slice(11, 55);\n for (var i in revs) {\n rec += Number(revs[i]);\n }\n return rec / totalEvents;\n }\n\n TypingDNA.getLength = function(typingPattern) {\n return Number(typingPattern.split(\",\")[1]);\n }\n\n TypingDNA.isMobile = function() {\n if (TypingDNA.mobile != undefined) {\n return TypingDNA.mobile;\n } else {\n var check = 0;\n (function(a) {\n if (\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i\n .test(a) ||\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i\n .test(a.substr(0, 4))) {\n check = 1\n }\n })(navigator.userAgent || navigator.vendor || window.opera);\n TypingDNA.mobile = check;\n return check;\n }\n }\n\n TypingDNA.getTextId = function(str) {\n return TypingDNA.math.fnv1aHash(str);\n }\n } else {\n // TypingDNA is a static class, currently doesn't support actual multiple instances (Singleton implementation)\n return TypingDNA.instance;\n }\n}\n","/**\n * \n * This file has been modified to override doPostBack\n * Check out the doPostBack function below for more details.\n * Override the doPostBack function when upgrading.\n * Unable to make a wrapper because it is invoked using an internal name within \n * this library.\n * \n * Current Verison = https://github.com/duosecurity/duo_web_sdk/blob/7aec8dd895ea4bd4549069e76076850eccfe07f2/index.js\n * PS: they dont seem to version correctly hence using commit.\n */\n\n/**\n * Duo Web SDK v2\n * Copyright 2019, Duo Security\n */\n\n(function (root, factory) {\n /*eslint-disable */\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define([], factory);\n /*eslint-enable */\n } else if (typeof module === 'object' && module.exports) {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory();\n } else {\n // Browser globals (root is window)\n var Duo = factory();\n // If the Javascript was loaded via a script tag, attempt to autoload\n // the frame.\n Duo._onReady(Duo.init);\n\n // Attach Duo to the `window` object\n root.Duo = Duo;\n }\n}(this, function() {\n var DUO_MESSAGE_FORMAT = /^(?:AUTH|ENROLL)+\\|[A-Za-z0-9\\+\\/=]+\\|[A-Za-z0-9\\+\\/=]+$/;\n var DUO_ERROR_FORMAT = /^ERR\\|[\\w\\s\\.\\(\\)]+$/;\n var DUO_OPEN_WINDOW_FORMAT = /^DUO_OPEN_WINDOW\\|/;\n var VALID_OPEN_WINDOW_DOMAINS = [\n 'duo.com',\n 'duosecurity.com',\n 'duomobile.s3-us-west-1.amazonaws.com'\n ];\n\n var postAction,\n postArgument,\n host,\n sigRequest,\n duoSig,\n appSig,\n iframe,\n submitCallback;\n\n // We use this function instead of setting initial values in the var\n // declarations to make sure the initial values and subsequent\n // re-initializations are always the same.\n initializeStatefulVariables();\n\n /**\n * Set local variables to whatever they should be before you call init().\n */\n function initializeStatefulVariables() {\n postAction = '';\n postArgument = 'sig_response';\n host = undefined;\n sigRequest = undefined;\n duoSig = undefined;\n appSig = undefined;\n iframe = undefined;\n submitCallback = undefined;\n }\n\n function throwError(message, givenUrl) {\n var url = (\n givenUrl ||\n 'https://www.duosecurity.com/docs/duoweb#3.-show-the-iframe'\n );\n throw new Error(\n 'Duo Web SDK error: ' + message +\n (url ? ('\\n' + 'See ' + url + ' for more information') : '')\n );\n }\n\n function hyphenize(str) {\n return str.replace(/([a-z])([A-Z])/, '$1-$2').toLowerCase();\n }\n\n // cross-browser data attributes\n function getDataAttribute(element, name) {\n if ('dataset' in element) {\n return element.dataset[name];\n } else {\n return element.getAttribute('data-' + hyphenize(name));\n }\n }\n\n // cross-browser event binding/unbinding\n function on(context, event, fallbackEvent, callback) {\n if ('addEventListener' in window) {\n context.addEventListener(event, callback, false);\n } else {\n context.attachEvent(fallbackEvent, callback);\n }\n }\n\n function off(context, event, fallbackEvent, callback) {\n if ('removeEventListener' in window) {\n context.removeEventListener(event, callback, false);\n } else {\n context.detachEvent(fallbackEvent, callback);\n }\n }\n\n function onReady(callback) {\n on(document, 'DOMContentLoaded', 'onreadystatechange', callback);\n }\n\n function offReady(callback) {\n off(document, 'DOMContentLoaded', 'onreadystatechange', callback);\n }\n\n function onMessage(callback) {\n on(window, 'message', 'onmessage', callback);\n }\n\n function offMessage(callback) {\n off(window, 'message', 'onmessage', callback);\n }\n\n /**\n * Parse the sig_request parameter, throwing errors if the token contains\n * a server error or if the token is invalid.\n *\n * @param {String} sig Request token\n */\n function parseSigRequest(sig) {\n if (!sig) {\n // nothing to do\n return;\n }\n\n // see if the token contains an error, throwing it if it does\n if (sig.indexOf('ERR|') === 0) {\n throwError(sig.split('|')[1]);\n }\n\n // validate the token\n if (sig.indexOf(':') === -1 || sig.split(':').length !== 2) {\n throwError(\n 'Duo was given a bad token. This might indicate a configuration ' +\n 'problem with one of Duo\\'s client libraries.'\n );\n }\n\n var sigParts = sig.split(':');\n\n // hang on to the token, and the parsed duo and app sigs\n sigRequest = sig;\n duoSig = sigParts[0];\n appSig = sigParts[1];\n\n return {\n sigRequest: sig,\n duoSig: sigParts[0],\n appSig: sigParts[1]\n };\n }\n\n /**\n * Validate that a MessageEvent came from the Duo service, and that it\n * is a properly formatted payload.\n *\n * The Google Chrome sign-in page injects some JS into pages that also\n * make use of postMessage, so we need to do additional validation above\n * and beyond the origin.\n *\n * @param {MessageEvent} event Message received via postMessage\n */\n function isDuoMessage(event) {\n return Boolean(\n event.origin === ('https://' + host) &&\n typeof event.data === 'string' &&\n (\n event.data.match(DUO_MESSAGE_FORMAT) ||\n event.data.match(DUO_ERROR_FORMAT) ||\n event.data.match(DUO_OPEN_WINDOW_FORMAT)\n )\n );\n }\n\n /**\n * Validate the request token and prepare for the iframe to become ready.\n *\n * All options below can be passed into an options hash to `Duo.init`, or\n * specified on the iframe using `data-` attributes.\n *\n * Options specified using the options hash will take precedence over\n * `data-` attributes.\n *\n * Example using options hash:\n * ```javascript\n * Duo.init({\n * iframe: \"some_other_id\",\n * host: \"api-main.duo.test\",\n * sig_request: \"...\",\n * post_action: \"/auth\",\n * post_argument: \"resp\"\n * });\n * ```\n *\n * Example using `data-` attributes:\n * ```html\n * \n * ```\n *\n * Some browsers (especially embedded browsers) don't like it when the Duo\n * Web SDK changes the `src` attribute on the iframe. To prevent this, there\n * is an alternative way to use the Duo Web SDK:\n *\n * Add a div (or any other container element) instead of an iframe to the\n * DOM with an id of \"duo_iframe\", or pass that element to the\n * `iframeContainer` parameter of `Duo.init`. An iframe will be created and\n * inserted into that container element, preventing `src` change related\n * bugs. WARNING: All other elements in the container will be deleted.\n *\n * The `iframeAttributes` parameter of `Duo.init` is available to set any\n * attributes on the inserted iframe if the Duo Web SDK is inserting the\n * iframe. For details, see the parameter documentation below.\n *\n * @param {Object} options\n * @param {String} options.host - Hostname for the Duo Prompt.\n * @param {String} options.sig_request - Request token.\n * @param {String|HTMLElement} [options.iframe] - The iframe, or id of an\n * iframe that will be used for the Duo Prompt. If you don't provide\n * this or the `iframeContainer` parameter the Duo Web SDK will default\n * to using whatever element has an id of \"duo_iframe\".\n * @param {String|HTMLElement} [options.iframeContainer] - The element you\n * want the Duo Prompt inserted into, or the id of that element.\n * Anything inside this element will be deleted and replaced with an\n * iframe hosting the Duo prompt. If you don't provide this or the\n * `iframe` parameter the Duo Web SDK will default to using whatever\n * element has an id of \"duo_iframe\".\n * @param {Object} [options.iframeAttributes] - Object with names and\n * values coresponding to attributes you want added to the Duo Prompt\n * iframe, like `title`, `width` and `allow`. WARNING: this parameter\n * only works if you use the `iframeContainer` parameter or add an id\n * of \"duo_iframe\" to an element that isn't an iframe. If you have\n * added an iframe to the DOM yourself, you should set those attributes\n * directly on the iframe.\n * @param {String} [options.post_action=''] - URL to POST back to after a\n * successful auth.\n * @param {String} [options.post_argument='sig_response'] - Parameter name\n * to use for response token.\n * @param {Function} [options.submit_callback] - If provided, the Duo Web\n * SDK will not submit the form. Instead it will execute this callback\n * function passing in a reference to the \"duo_form\" form object.\n * `submit_callback`` can be used to prevent the webpage from reloading.\n */\n function init(options) {\n // If init() is called more than once we have to reset all the local\n // variables to ensure init() will work the same way every time. This\n // helps people making single page applications. SPAs may periodically\n // remove the iframe and add a new one that has to be initialized.\n initializeStatefulVariables();\n\n if (options) {\n if (options.host) {\n host = options.host;\n }\n\n if (options.sig_request) {\n parseSigRequest(options.sig_request);\n }\n\n if (options.post_action) {\n postAction = options.post_action;\n }\n\n if (options.post_argument) {\n postArgument = options.post_argument;\n }\n\n if (typeof options.submit_callback === 'function') {\n submitCallback = options.submit_callback;\n }\n }\n\n var promptElement = getPromptElement(options);\n if (promptElement) {\n // If we can get the element that will host the prompt, set it.\n ready(promptElement, options.iframeAttributes || {});\n } else {\n // If the element that will host the prompt isn't available yet, set\n // it up after the DOM finishes loading.\n asyncReady(options);\n }\n\n // always clean up after yourself!\n offReady(init);\n }\n\n /**\n * Given the options from init(), get the iframe or iframe container that\n * should be used for the Duo Prompt. Returns `null` if nothing was found.\n */\n function getPromptElement(options) {\n var result;\n\n if (options.iframe && options.iframeContainer) {\n throwError(\n 'Passing both `iframe` and `iframeContainer` arguments at the' +\n ' same time is not allowed.'\n );\n } else if (options.iframe) {\n // If we are getting an iframe, try to get it and raise if the\n // element we find is NOT an iframe.\n result = getUserDefinedElement(options.iframe);\n validateIframe(result);\n } else if (options.iframeContainer) {\n result = getUserDefinedElement(options.iframeContainer);\n validateIframeContainer(result);\n } else {\n result = document.getElementById('duo_iframe');\n }\n\n return result;\n }\n\n /**\n * When given an HTMLElement, return it. When given a string, get an element\n * with that id, else return null.\n */\n function getUserDefinedElement(object) {\n if (object.tagName) {\n return object;\n } else if (typeof object == 'string') {\n return document.getElementById(object);\n }\n return null;\n }\n\n /**\n * Check if the given thing is an iframe.\n */\n function isIframe(element) {\n return (\n element &&\n element.tagName &&\n element.tagName.toLowerCase() === 'iframe'\n );\n }\n\n /**\n * Throw an error if we are given an element that is NOT an iframe.\n */\n function validateIframe(element) {\n if (element && !isIframe(element)) {\n throwError(\n '`iframe` only accepts an iframe element or the id of an' +\n ' iframe. To use a non-iframe element, use the' +\n ' `iframeContainer` argument.'\n );\n }\n }\n\n /**\n * Throw an error if we are given an element that IS an iframe instead of an\n * element that we can insert an iframe into.\n */\n function validateIframeContainer(element) {\n if (element && isIframe(element)) {\n throwError(\n '`iframeContainer` only accepts a non-iframe element or the' +\n ' id of a non-iframe. To use a non-iframe element, use the' +\n ' `iframeContainer` argument on Duo.init().'\n );\n }\n }\n\n /**\n * Generate the URL that goes to the Duo Prompt.\n */\n function generateIframeSrc() {\n return [\n 'https://', host, '/frame/web/v1/auth?tx=', duoSig,\n '&parent=', encodeURIComponent(document.location.href),\n '&v=2.8'\n ].join('');\n }\n\n /**\n * This function is called when a message was received from another domain\n * using the `postMessage` API. Check that the event came from the Duo\n * service domain, and that the message is a properly formatted payload,\n * then perform the post back to the primary service.\n *\n * @param event Event object (contains origin and data)\n */\n function onReceivedMessage(event) {\n if (isDuoMessage(event)) {\n if (event.data.match(DUO_OPEN_WINDOW_FORMAT)) {\n var url = event.data.substring(\"DUO_OPEN_WINDOW|\".length);\n if (isValidUrlToOpen(url)) {\n // Open the URL that comes after the DUO_WINDOW_OPEN token.\n window.open(url, \"_self\");\n }\n }\n else {\n // the event came from duo, do the post back\n doPostBack(event.data);\n\n // always clean up after yourself!\n offMessage(onReceivedMessage);\n }\n }\n }\n\n /**\n * Validate that this passed in URL is one that we will actually allow to\n * be opened.\n * @param url String URL that the message poster wants to open\n * @returns {boolean} true if we allow this url to be opened in the window\n */\n function isValidUrlToOpen(url) {\n if (!url) {\n return false;\n }\n\n var parser = document.createElement('a');\n parser.href = url;\n\n if (parser.protocol === \"duotrustedendpoints:\") {\n return true;\n } else if (parser.protocol !== \"https:\") {\n return false;\n }\n\n for (var i = 0; i < VALID_OPEN_WINDOW_DOMAINS.length; i++) {\n if (parser.hostname.endsWith(\".\" + VALID_OPEN_WINDOW_DOMAINS[i]) ||\n parser.hostname === VALID_OPEN_WINDOW_DOMAINS[i]) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Register a callback to call ready() after the DOM has loaded.\n */\n function asyncReady(options) {\n var callback = function() {\n var promptElement = getPromptElement(options);\n if (!promptElement) {\n throwError(\n 'This page does not contain an iframe for Duo to use.' +\n ' Add an element like' +\n ' to this page.'\n );\n }\n\n ready(promptElement, options.iframeAttributes || {});\n\n // Always clean up after yourself.\n offReady(callback)\n };\n\n onReady(callback);\n }\n\n /**\n * Point the iframe at Duo, then wait for it to postMessage back to us.\n */\n function ready(promptElement, iframeAttributes) {\n if (!host) {\n host = getDataAttribute(promptElement, 'host');\n\n if (!host) {\n throwError(\n 'No API hostname is given for Duo to use. Be sure to pass ' +\n 'a `host` parameter to Duo.init, or through the `data-host` ' +\n 'attribute on the iframe element.'\n );\n }\n }\n\n if (!duoSig || !appSig) {\n parseSigRequest(getDataAttribute(promptElement, 'sigRequest'));\n\n if (!duoSig || !appSig) {\n throwError(\n 'No valid signed request is given. Be sure to give the ' +\n '`sig_request` parameter to Duo.init, or use the ' +\n '`data-sig-request` attribute on the iframe element.'\n );\n }\n }\n\n // if postAction/Argument are defaults, see if they are specified\n // as data attributes on the iframe\n if (postAction === '') {\n postAction = getDataAttribute(promptElement, 'postAction') || postAction;\n }\n\n if (postArgument === 'sig_response') {\n postArgument = getDataAttribute(promptElement, 'postArgument') || postArgument;\n }\n\n if (isIframe(promptElement)) {\n iframe = promptElement;\n iframe.src = generateIframeSrc();\n } else {\n // If given a container to put an iframe in, clean out any children\n // child elements in case `init()` was called more than once.\n while (promptElement.firstChild) {\n // We call `removeChild()` instead of doing `innerHTML = \"\"`\n // to make sure we unbind any events.\n promptElement.removeChild(promptElement.firstChild)\n }\n\n iframe = document.createElement('iframe');\n\n // Set the src and all other attributes on the new iframe.\n iframeAttributes['src'] = generateIframeSrc();\n for (var name in iframeAttributes) {\n iframe.setAttribute(name, iframeAttributes[name]);\n }\n\n promptElement.appendChild(iframe);\n }\n\n // listen for the 'message' event\n onMessage(onReceivedMessage);\n }\n\n /**\n * We received a postMessage from Duo. POST back to the primary service\n * with the response token, and any additional user-supplied parameters\n * given in form#duo_form.\n */\n // function doPostBack(response) {\n // // create a hidden input to contain the response token\n // var input = document.createElement('input');\n // input.type = 'hidden';\n // input.name = postArgument;\n // input.value = response + ':' + appSig;\n\n // // user may supply their own form with additional inputs\n // var form = document.getElementById('duo_form');\n\n // // if the form doesn't exist, create one\n // if (!form) {\n // form = document.createElement('form');\n\n // // insert the new form after the iframe\n // iframe.parentElement.insertBefore(form, iframe.nextSibling);\n // }\n\n // // make sure we are actually posting to the right place\n // form.method = 'POST';\n // form.action = postAction;\n\n // // add the response token input to the form\n // form.appendChild(input);\n\n // // away we go!\n // if (typeof submitCallback === \"function\") {\n // submitCallback.call(null, form);\n // } else {\n // form.submit();\n // }\n // }\n\n // OKTA: Overriding their doPostBack logic because we want to submit this\n // through ajax, not a postBack\n function doPostBack(response) {\n postAction(response + ':' + appSig);\n }\n \n\n return {\n init: init,\n _onReady: onReady,\n _parseSigRequest: parseSigRequest,\n _isDuoMessage: isDuoMessage,\n _doPostBack: doPostBack\n };\n}));","/*!\n * Copyright (c) 2015-2016, 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 { _, loc } from 'okta';\nimport Enums from 'util/Enums';\nimport FormController from 'util/FormController';\nimport FormType from 'util/FormType';\nexport default FormController.extend({\n className: 'account-unlocked',\n Model: function() {\n return {\n local: {\n userFullName: ['string', false, this.options.appState.get('userFullName')],\n },\n };\n },\n\n Form: {\n title: _.partial(loc, 'account.unlock.unlocked.title', 'login'),\n subtitle: _.partial(loc, 'account.unlock.unlocked.desc', 'login'),\n noButtonBar: true,\n attributes: { 'data-se': 'account-unlocked' },\n formChildren: function() {\n return [\n FormType.Button({\n title: loc('goback', 'login'),\n className: 'button button-primary button-wide',\n attributes: { 'data-se': 'back-button' },\n click: function() {\n this.state.set('navigateDir', Enums.DIRECTION_BACK);\n this.options.appState.trigger('navigate', '');\n },\n }),\n ];\n },\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 FormController from 'util/FormController';\nimport EnterPasscodeForm from 'views/enroll-factors/EnterPasscodeForm';\nimport Footer from 'views/enroll-factors/Footer';\nexport default FormController.extend({\n className: 'activate-totp',\n Model: function() {\n return {\n props: {\n factorId: ['string', true, this.options.appState.get('activatedFactorId')],\n passCode: ['string', true],\n },\n local: {\n __factorType__: ['string', false, this.options.factorType],\n __provider__: ['string', false, this.options.provider],\n },\n save: function() {\n return this.doTransaction(function(transaction) {\n return transaction.activate({\n passCode: this.get('passCode'),\n });\n });\n },\n };\n },\n\n Form: EnterPasscodeForm,\n\n Footer: Footer,\n});\n","/*!\n * Copyright (c) 2020, 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 { _, View, loc } from 'okta';\nimport FormController from 'util/FormController';\nimport FormType from 'util/FormType';\nimport ScopeList from 'views/admin-consent/ScopeList';\nimport consentLogoHeaderTemplate from 'views/shared/templates/consentLogoHeaderTemplate';\n\nconst ConsentModel = {\n props: {\n scopes: ['array', true]\n },\n save: function() {\n return this.doTransaction(function(transaction) {\n return transaction.consent({\n consent: {\n scopes: _.pluck(this.get('scopes'), 'name')\n }\n });\n });\n },\n cancel: function() {\n var self = this;\n return this.doTransaction(function(transaction) {\n return transaction.cancel();\n }).then(function() {\n var consentCancelFn = self.settings.get('consent.cancel');\n if (_.isFunction(consentCancelFn)) {\n consentCancelFn();\n }\n });\n }\n};\n\nconst ConsentHeader = View.extend({\n className: 'consent-title detail-row',\n template: consentLogoHeaderTemplate,\n getTemplateData: function() {\n var appState = this.options.appState;\n return {\n appName: appState.escape('targetLabel'),\n customLogo: appState.get('targetLogo') && appState.get('targetLogo').href,\n defaultLogo: appState.get('defaultAppLogo'),\n clientURI: appState.get('targetClientURI') && appState.get('targetClientURI').href,\n issuer: appState.get('issuer'),\n };\n }\n});\n\nconst ConsentForm = {\n noCancelButton: false,\n buttonOrder: ['cancel', 'save'],\n autoSave: true,\n save: _.partial(loc, 'consent.required.consentButton', 'login'),\n cancel: _.partial(loc, 'consent.required.cancelButton', 'login'),\n formChildren: [\n FormType.View({\n View: ConsentHeader\n }),\n FormType.View({\n View: ScopeList,\n }),\n ],\n};\n\nconst AdminConsentRequiredController = FormController.extend({\n Model: ConsentModel,\n\n Form: ConsentForm,\n\n className: 'admin-consent-required',\n\n initialize: function() {\n this.model.set('scopes', this.options.appState.get('scopes'));\n this.listenTo(this.form, 'cancel', () => {\n this.model.cancel();\n });\n },\n});\n\nexport default AdminConsentRequiredController;\n","/*!\n * Copyright (c) 2015-2016, 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 { loc } from 'okta';\nimport FactorUtil from 'util/FactorUtil';\nimport FormController from 'util/FormController';\nimport FormType from 'util/FormType';\nimport BarcodeView from 'views/enroll-factors/BarcodeView';\nimport Footer from 'views/enroll-factors/Footer';\nconst PUSH_INTERVAL = 6000;\n\n// Note: Keep-alive is set to 5 seconds - using 5 seconds here will result\n// in network connection lost errors in Safari and IE.\n\nexport default FormController.extend({\n className: 'barcode-push',\n Model: function() {\n return {\n local: {\n __factorType__: ['string', false, this.options.factorType],\n __provider__: ['string', false, this.options.provider],\n },\n };\n },\n\n Form: {\n title: function() {\n const factorName = FactorUtil.getFactorLabel(this.model.get('__provider__'), this.model.get('__factorType__'));\n\n return loc('enroll.totp.title', 'login', [factorName]);\n },\n noButtonBar: true,\n attributes: { 'data-se': 'step-scan' },\n className: 'barcode-scan',\n initialize: function() {\n this.listenTo(this.model, 'error errors:clear', function() {\n this.clearErrors();\n });\n },\n\n formChildren: [FormType.View({ View: BarcodeView })],\n },\n\n Footer: Footer,\n\n initialize: function() {\n this.pollForEnrollment();\n },\n\n pollForEnrollment: function() {\n return this.model.doTransaction(function(transaction) {\n return transaction.poll(PUSH_INTERVAL);\n });\n },\n\n trapAuthResponse: function() {\n if (this.options.appState.get('isMfaEnrollActivate')) {\n return true;\n }\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { _, loc } from 'okta';\nimport FactorUtil from 'util/FactorUtil';\nimport FormController from 'util/FormController';\nimport FormType from 'util/FormType';\nimport RouterUtil from 'util/RouterUtil';\nimport BarcodeView from 'views/enroll-factors/BarcodeView';\nimport Footer from 'views/enroll-factors/Footer';\nexport default FormController.extend({\n className: 'barcode-totp',\n Model: function() {\n return {\n local: {\n __factorType__: ['string', false, this.options.factorType],\n __provider__: ['string', false, this.options.provider],\n },\n };\n },\n\n Form: {\n title: function() {\n const factorName = FactorUtil.getFactorLabel(this.model.get('__provider__'), this.model.get('__factorType__'));\n\n return loc('enroll.totp.title', 'login', [factorName]);\n },\n save: _.partial(loc, 'oform.next', 'login'),\n noCancelButton: true,\n attributes: { 'data-se': 'step-scan' },\n className: 'barcode-scan',\n\n formChildren: [FormType.View({ View: BarcodeView })],\n },\n\n Footer: Footer,\n\n initialize: function() {\n this.listenTo(this.form, 'save', function() {\n const url = RouterUtil.createActivateFactorUrl(\n this.model.get('__provider__'),\n this.model.get('__factorType__'),\n 'activate'\n );\n\n this.options.appState.trigger('navigate', url);\n });\n },\n});\n","/*!\n * Copyright (c) 2017, 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 max-len: [2, 160] */\nimport { _, $, loc, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Enums from 'util/Enums';\nimport FormController from 'util/FormController';\nimport FormType from 'util/FormType';\nimport ScopeList from 'views/consent/ScopeList';\nimport SkipLink from 'views/shared/SkipLink';\nimport consentLogoHeaderTemplate from 'views/shared/templates/consentLogoHeaderTemplate';\n\nexport default FormController.extend({\n className: 'consent-required',\n initialize: function() {\n this.model.set('expiresAt', this.options.appState.get('expiresAt'));\n this.model.set('scopes', this.options.appState.get('scopes'));\n this.listenTo(this.form, 'cancel', _.bind(this.model.cancel, this.model));\n\n // add Skip to main content link\n const skipLink = new SkipLink();\n $(`#${Enums.WIDGET_LOGIN_CONTAINER_ID}`).prepend(skipLink.render().$el);\n },\n postRender: function() {\n FormController.prototype.postRender.apply(this, arguments);\n\n // Update the \"don't allow\" and \"allow access\" buttons to be neutral by changing \"allow button\" to be gray.\n this.$('.o-form-button-bar .button-primary').removeClass('button-primary');\n },\n Model: {\n props: {\n expiresAt: ['string', true],\n scopes: ['array', true],\n },\n save: function() {\n return this.doTransaction(function(transaction) {\n return transaction.consent({\n consent: {\n expiresAt: this.get('expiresAt'),\n scopes: _.pluck(this.get('scopes'), 'name'),\n },\n });\n });\n },\n cancel: function() {\n const self = this;\n\n return this.doTransaction(function(transaction) {\n return transaction.cancel();\n }).then(function() {\n const consentCancelFn = self.settings.get('consent.cancel');\n\n if (_.isFunction(consentCancelFn)) {\n consentCancelFn();\n }\n });\n },\n },\n Form: {\n noCancelButton: false,\n buttonOrder: ['cancel', 'save'],\n autoSave: true,\n save: _.partial(loc, 'consent.required.consentButton', 'login'),\n cancel: _.partial(loc, 'consent.required.cancelButton', 'login'),\n formChildren: function() {\n return [\n FormType.View({\n View: View.extend({\n className: 'consent-title detail-row',\n template: consentLogoHeaderTemplate,\n getTemplateData: function() {\n const appState = this.options.appState;\n\n return {\n appName: appState.escape('targetLabel'),\n customLogo: appState.get('targetLogo') && appState.get('targetLogo').href,\n defaultLogo: appState.get('defaultAppLogo'),\n clientURI: appState.get('targetClientURI') && appState.get('targetClientURI').href,\n };\n },\n }),\n }),\n FormType.View({\n View: new ScopeList({ model: this.model }),\n }),\n FormType.View({\n View: View.extend({\n className: 'consent-description detail-row',\n template: hbs(\n '\\\n

    {{i18n code=\"consent.required.description\" bundle=\"login\"}}

    \\\n '\n ),\n }),\n }),\n ];\n },\n },\n Footer: View.extend({\n className: 'consent-footer',\n template: hbs(\n '\\\n {{#if termsOfService}}\\\n {{i18n code=\"consent.required.termsOfService\" bundle=\"login\"}}\\\n {{#if privacyPolicy}}\\\n •\\\n {{/if}}\\\n {{/if}}\\\n {{#if privacyPolicy}}\\\n {{i18n code=\"consent.required.privacyPolicy\" bundle=\"login\"}}\\\n {{/if}}\\\n '\n ),\n getTemplateData: function() {\n const appState = this.options.appState;\n\n return {\n termsOfService: appState.get('targetTermsOfService') && appState.get('targetTermsOfService').href,\n privacyPolicy: appState.get('targetPrivacyPolicy') && appState.get('targetPrivacyPolicy').href,\n };\n },\n }),\n});\n","/*!\n * Copyright (c) 2017, 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 { _, loc, internal } from 'okta';\nimport FormController from 'util/FormController';\nimport FormType from 'util/FormType';\nimport Footer from 'views/expired-password/Footer';\nconst { Util } = internal.util;\nexport default FormController.extend({\n className: 'custom-password-expired',\n Model: {},\n Form: {\n noButtonBar: true,\n title: function() {\n const expiringSoon = this.options.appState.get('isPwdExpiringSoon');\n const numDays = this.options.appState.get('passwordExpireDays');\n\n if (expiringSoon && numDays > 0) {\n return loc('password.expiring.title', 'login', [numDays]);\n } else if (expiringSoon && numDays === 0) {\n return loc('password.expiring.today', 'login');\n } else if (expiringSoon) {\n return loc('password.expiring.soon', 'login');\n } else {\n return this.settings.get('brandName')\n ? loc('password.expired.title.specific', 'login', [this.settings.get('brandName')])\n : loc('password.expired.title.generic', 'login');\n }\n },\n subtitle: function() {\n if (this.options.appState.get('isPwdExpiringSoon')) {\n const subtitle = this.settings.get('brandName')\n ? loc('password.expiring.subtitle.specific', 'login', [this.settings.get('brandName')])\n : loc('password.expiring.subtitle.generic', 'login');\n\n return subtitle + ' ' + loc('password.expired.custom.subtitle', 'login');\n }\n\n return loc('password.expired.custom.subtitle', 'login');\n },\n formChildren: function() {\n return [\n FormType.Button({\n title: _.partial(loc, 'password.expired.custom.submit', 'login', [\n this.options.appState.get('passwordExpiredWebsiteName'),\n ]),\n className: 'button button-primary button-wide',\n attributes: { 'data-se': 'custom-button' },\n click: function() {\n Util.redirect(this.options.appState.get('passwordExpiredLinkUrl'));\n },\n }),\n ];\n },\n },\n Footer: Footer,\n});\n","/*!\n * Copyright (c) 2017, 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 max-len: [2, 160] */\nimport hbs from 'handlebars-inline-precompile';\nimport {loc, View} from 'okta';\nimport FormController from 'util/FormController';\nimport FormType from 'util/FormType';\nimport TextBox from './views/shared/TextBox';\n\nconst InvalidUserCodeErrorView = View.extend({\n template: hbs`\n
    \n \n

    {{i18n code=\"api.authn.error.PASSCODE_INVALID\" bundle=\"login\"}}

    \n
    \n `\n});\n\nexport default FormController.extend({\n className: 'device-code-activate',\n Model: function() {\n return {\n props: {\n userCode: ['string', true, this.options?.appState?.get('userCode')],\n stateToken: 'string',\n },\n save: function() {\n const self = this;\n return this.doTransaction(function(transaction) {\n return transaction.deviceActivate({\n userCode: self.get('userCode')\n });\n });\n }\n };\n },\n Form: {\n noCancelButton: true,\n autoSave: true,\n save: function() {\n return loc('oform.next', 'login');\n },\n title: function() {\n return loc('device.code.activate.title', 'login');\n },\n subtitle() {\n return loc('device.code.activate.subtitle', 'login');\n },\n formChildren: function() {\n if (this.options.appState.get('deviceActivationStatus') === 'INVALID_USER_CODE') {\n this.add(InvalidUserCodeErrorView, '.o-form-error-container');\n }\n\n return [\n FormType.Input({\n label: loc('device.code.activate.label', 'login'),\n 'label-top': true,\n name: 'userCode',\n input: TextBox,\n inputId: 'user-code',\n type: 'text',\n inlineValidation: false,\n })\n ];\n },\n events: {\n 'keyup input[name=\"userCode\"]': function(e) {\n e.preventDefault();\n this.addHyphen(e);\n }\n },\n addHyphen(evt) {\n const currentVal = evt.target.value;\n // add hyphen after 4th character\n if (currentVal && currentVal.length === 4 && !['Backspace', 'Delete', '-'].includes(evt.key)) {\n evt.target.value = currentVal.concat('-');\n }\n }\n },\n});\n","/*!\n * Copyright (c) 2017, 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 max-len: [2, 160] */\nimport {_, loc, View} from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport FormController from 'util/FormController';\nimport FormType from './util/FormType';\n\nconst DEVICE_ACTIVATED = 'DEVICE_ACTIVATED';\nconst DEVICE_NOT_ACTIVATED_CONSENT_DENIED = 'DEVICE_NOT_ACTIVATED_CONSENT_DENIED';\nconst DEVICE_NOT_ACTIVATED = 'DEVICE_NOT_ACTIVATED';\nconst DEVICE_CODE_ERROR_KEYS = [\n DEVICE_NOT_ACTIVATED_CONSENT_DENIED,\n DEVICE_NOT_ACTIVATED\n];\n\nexport default FormController.extend({\n className: 'device-code-terminal',\n postRender: function() {\n FormController.prototype.postRender.apply(this, arguments);\n\n // show device code terminal icons\n const iconClass = this.options.appState.get('deviceActivationStatus') === DEVICE_ACTIVATED\n ? 'success-24-green' : 'error-24-red';\n this.$('.o-form-head').before('
    ' +\n '' +\n '
    ');\n },\n Model: {},\n Form: {\n noCancelButton: true,\n noButtonBar: true,\n title: function() {\n const deviceActivationStatus = this.options.appState.get('deviceActivationStatus');\n if (deviceActivationStatus === DEVICE_ACTIVATED) {\n return loc('device.code.activated.success.title', 'login');\n }\n if (_.contains(DEVICE_CODE_ERROR_KEYS, deviceActivationStatus)) {\n return loc('device.code.activated.error.title', 'login');\n }\n },\n subtitle: function() {\n const deviceActivationStatus = this.options.appState.get('deviceActivationStatus');\n if (deviceActivationStatus === DEVICE_ACTIVATED) {\n return loc('idx.device.activated', 'login');\n }\n if (deviceActivationStatus === DEVICE_NOT_ACTIVATED_CONSENT_DENIED) {\n return loc('idx.device.not.activated.consent.denied', 'login');\n }\n if (deviceActivationStatus === DEVICE_NOT_ACTIVATED) {\n return loc('idx.device.not.activated.internal.error', 'login');\n }\n },\n formChildren: function() {\n return [\n FormType.View({\n View: View.extend({\n template: hbs(\n '{{#if isDeviceCodeError}}\\\n \\\n {{i18n code=\"oie.try.again\" bundle=\"login\"}}\\\n \\\n {{/if}}\\\n '\n ),\n getTemplateData: function() {\n return {\n isDeviceCodeError: _.contains(DEVICE_CODE_ERROR_KEYS, this.options.appState.get('deviceActivationStatus'))\n };\n },\n }),\n }),\n ];\n }\n }\n});\n","/*!\n * Copyright (c) 2019-2020, 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 { loc, internal } from 'okta';\nimport EnrollCustomFactorController from 'EnrollCustomFactorController';\nimport Factor from 'models/Factor';\nimport FormType from 'util/FormType';\nimport HtmlErrorMessageView from 'views/mfa-verify/HtmlErrorMessageView';\nconst { Util } = internal.util;\nexport default EnrollCustomFactorController.extend({\n Model: {\n local: {\n provider: 'string',\n factorType: 'string',\n },\n save: function() {\n return this.manageTransaction(() => {\n const url = this.appState.get('enrollCustomFactorRedirectUrl');\n\n if (url !== null) {\n Util.redirect(url);\n }\n });\n },\n },\n\n Form: function() {\n const factor = new Factor.Model(this.options.appState.get('factor'), this.toJSON());\n const vendorName = factor.get('vendorName');\n const subtitle = loc('enroll.customFactor.subtitle', 'login', [vendorName]);\n const saveText = loc('enroll.customFactor.save', 'login');\n\n return {\n autoSave: true,\n title: vendorName,\n subtitle: subtitle,\n save: saveText,\n formChildren: function() {\n const result = [];\n\n if (this.options.appState.get('isFactorResultFailed')) {\n result.push(\n FormType.View(\n { View: new HtmlErrorMessageView({ message: this.options.appState.get('factorResultErrorMessage') }) },\n { selector: '.o-form-error-container' }\n )\n );\n }\n return result;\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 { _, loc, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport FormController from 'util/FormController';\nimport FormType from 'util/FormType';\nimport ResendEmailView from 'views/ResendEmailView';\nimport Footer from 'views/enroll-factors/Footer';\n\nconst Model = {\n props: {\n passCode: 'string',\n },\n\n resend: function() {\n this.trigger('form:clear-errors');\n return this.doTransaction(function(transaction) {\n // authn support multiple `resend` hence has to specify name.\n return transaction.resend('email');\n });\n },\n\n save: function() {\n this.trigger('save');\n const formData = this.toJSON();\n return this.doTransaction(function(transaction) {\n return transaction.activate(formData);\n });\n },\n};\n\nconst Form = function() {\n return {\n title: _.partial(loc, 'email.enroll.title', 'login'),\n noButtonBar: false,\n autoSave: true,\n save: _.partial(loc, 'oform.verify', 'login'), // TODO: deprecated by mfa.challenge.verify\n formChildren: [\n // message\n FormType.View({\n View: View.extend({\n className: 'enroll-activate-email-content',\n attributes: {\n 'data-se': 'enroll-activate-email-content',\n },\n\n // Why use `{{{` for the description?\n // - factorEmail is actually an HTML fragment which\n // is created via another handlebar template and used for bold the email address.\n template: hbs('{{{i18n code=\"email.mfa.email.sent.description\" bundle=\"login\" arguments=\"factorEmail\"}}}'),\n\n getTemplateData: function() {\n const factor = this.options.appState.get('factor');\n const factorEmailVal = factor && factor.profile ? factor.profile.email : '';\n const factorEmail = hbs('{{email}}')({ email: factorEmailVal });\n return {\n factorEmail,\n };\n },\n }),\n }),\n // send again callout message and link button\n FormType.View({\n View: ResendEmailView,\n }),\n // passcode input\n FormType.Input({\n label: loc('email.code.label', 'login'),\n 'label-top': true,\n name: 'passCode',\n type: 'text',\n wide: true,\n }),\n ],\n };\n};\n\nexport default FormController.extend({\n className: 'enroll-activate-email',\n\n Model: Model,\n\n Form: Form,\n\n Footer: Footer,\n});\n","/*!\n * Copyright (c) 2015-2016, 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 complexity: [2, 8] */\nimport { _, loc, internal, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport CountryUtil from 'util/CountryUtil';\nimport Enums from 'util/Enums';\nimport FormController from 'util/FormController';\nimport FormType from 'util/FormType';\nimport Util from 'util/Util';\nimport Footer from 'views/enroll-factors/Footer';\nimport PhoneTextBox from 'views/enroll-factors/PhoneTextBox';\nimport TextBox from 'views/shared/TextBox';\nlet { Keys } = internal.util;\nconst EnrollCallAndSmsControllerwarningTemplate = View.extend({\n className: 'okta-form-infobox-warning infobox infobox-warning login-timeout-warning',\n attributes: {\n 'aria-live': 'polite',\n },\n template: hbs`\n \n

    {{{warning}}}

    \n `,\n});\nconst factorIdIsDefined = {\n factorId: function(val) {\n return !_.isUndefined(val);\n },\n};\n\nfunction isCallFactor(factorType) {\n return factorType === 'call';\n}\n\nfunction getClassName(factorType) {\n return isCallFactor(factorType) ? 'enroll-call' : 'enroll-sms';\n}\n\nfunction sendCode(e) {\n if (Keys.isEnter(e)) {\n e.stopPropagation();\n e.preventDefault();\n if (e.type === 'keyup' && e.data && e.data.model) {\n e.data.model.sendCode();\n }\n }\n}\n\nexport default FormController.extend({\n className: function() {\n return getClassName(this.options.factorType);\n },\n Model: function() {\n return {\n props: {\n phoneNumber: ['string', true],\n phoneExtension: ['string', false],\n lastEnrolledPhoneNumber: 'string',\n passCode: ['string', true],\n factorId: 'string',\n },\n local: {\n countryCode: ['string', false, this.options.appState.get('userCountryCode')],\n hasExistingPhones: 'boolean',\n trapEnrollment: 'boolean',\n ableToResend: 'boolean',\n factorType: 'string',\n skipPhoneValidation: 'boolean',\n },\n derived: {\n countryCallingCode: {\n deps: ['countryCode'],\n fn: function(countryCode) {\n return '+' + CountryUtil.getCallingCodeForCountry(countryCode);\n },\n },\n fullPhoneNumber: {\n deps: ['countryCallingCode', 'phoneNumber'],\n fn: function(countryCallingCode, phoneNumber) {\n return phoneNumber ? countryCallingCode + phoneNumber : '';\n },\n },\n enrolled: {\n deps: ['lastEnrolledPhoneNumber', 'fullPhoneNumber'],\n fn: function(lastEnrolled, current) {\n return lastEnrolled === current;\n },\n },\n },\n limitResending: function() {\n this.set({ ableToResend: false });\n _.delay(_.bind(this.set, this), Enums.API_RATE_LIMIT, { ableToResend: true });\n },\n sendCode: function() {\n const self = this;\n const phoneNumber = this.get('fullPhoneNumber');\n const phoneExtension = this.get('phoneExtension');\n \n self.trigger('errors:clear');\n \n if (!phoneNumber.length) {\n self.trigger('invalid', self, { phoneNumber: 'model.validation.field.blank' });\n return;\n }\n \n return this.doTransaction(function(transaction) {\n const isMfaEnroll = transaction.status === 'MFA_ENROLL' || transaction.status === 'FACTOR_ENROLL';\n const profileData = {\n phoneNumber: phoneNumber,\n updatePhone: isMfaEnroll ? self.get('hasExistingPhones') : true,\n };\n \n if (isCallFactor(self.get('factorType'))) {\n profileData['phoneExtension'] = phoneExtension;\n }\n \n if (self.get('skipPhoneValidation')) {\n profileData['validatePhone'] = false;\n }\n \n const doEnroll = function(trans) {\n const factor = _.findWhere(trans.factors, {\n factorType: self.get('factorType'),\n provider: 'OKTA',\n });\n \n return factor\n .enroll({\n profile: profileData,\n })\n .catch(function(error) {\n if (error.errorCode === 'E0000098') {\n // E0000098: \"This phone number is invalid.\"\n self.set('skipPhoneValidation', true);\n error.xhr.responseJSON.errorSummary = loc('enroll.sms.try_again', 'login');\n }\n throw error;\n });\n };\n \n if (isMfaEnroll) {\n return doEnroll(transaction);\n } else {\n // We must transition to MfaEnroll before updating the phone number\n self.set('trapEnrollment', true);\n return transaction.prev().then(doEnroll).then(function(trans) {\n self.set('trapEnrollment', false);\n return trans;\n });\n }\n // Rethrow errors so we can change state\n // AFTER setting the new transaction\n }, true)\n .then(function() {\n self.set('lastEnrolledPhoneNumber', phoneNumber);\n self.limitResending();\n })\n .catch(function() {\n self.set('trapEnrollment', false);\n });\n },\n resendCode: function() {\n this.trigger('errors:clear');\n this.limitResending();\n return this.doTransaction(function(transaction) {\n return transaction.resend(this.get('factorType'));\n });\n },\n save: function() {\n return this.doTransaction(function(transaction) {\n return transaction.activate({\n passCode: this.get('passCode'),\n });\n });\n },\n };\n },\n Form: function() {\n const factorType = this.options.factorType;\n const isCall = isCallFactor(factorType);\n const formTitle = loc(isCall ? 'enroll.call.setup' : 'enroll.sms.setup', 'login');\n const formSubmit = loc(isCall ? 'mfa.call' : 'mfa.sendCode', 'login');\n const formRetry = loc(isCall ? 'mfa.redial' : 'mfa.resendCode', 'login');\n const formSubmitted = loc(isCall ? 'mfa.calling' : 'mfa.sent', 'login');\n const numberFieldClassName = isCall ? 'enroll-call-phone' : 'enroll-sms-phone';\n const buttonClassName = isCall ? 'call-request-button' : 'sms-request-button';\n const formChildren = [\n FormType.Input({\n name: 'countryCode',\n type: 'select',\n wide: true,\n options: CountryUtil.getCountries(),\n }),\n FormType.Input({\n label: loc('mfa.phoneNumber.placeholder', 'login'),\n 'label-top': true,\n className: numberFieldClassName,\n name: 'phoneNumber',\n input: PhoneTextBox,\n type: 'text',\n render: function() {\n this.$('input[name=\"phoneNumber\"]')\n .off('keydown keyup', sendCode)\n .keydown(sendCode)\n .keyup({ model: this.model }, sendCode);\n },\n }),\n ];\n\n if (isCall) {\n formChildren.push(\n FormType.Input({\n label: loc('mfa.phoneNumber.ext.placeholder', 'login'),\n 'label-top': true,\n className: 'enroll-call-extension',\n name: 'phoneExtension',\n input: TextBox,\n type: 'text',\n })\n );\n }\n formChildren.push(\n FormType.Button({\n title: formSubmit,\n attributes: { 'data-se': buttonClassName },\n className: 'button button-primary js-enroll-phone margin-top-30 ' + buttonClassName,\n click: function() {\n this.model.sendCode();\n },\n }),\n FormType.Button({\n title: formRetry,\n attributes: { 'data-se': buttonClassName },\n className: 'button js-enroll-phone margin-top-30 ' + buttonClassName,\n click: function() {\n this.model.resendCode();\n },\n initialize: function() {\n this.$el.css({ display: 'none' });\n this.listenTo(this.model, 'change:ableToResend', function(model, ableToResend) {\n if (ableToResend) {\n this.options.title = formRetry;\n this.enable();\n } else {\n this.options.title = formSubmitted;\n this.disable();\n }\n this.render();\n });\n },\n }),\n FormType.Divider({\n showWhen: factorIdIsDefined,\n }),\n FormType.Input({\n label: loc('mfa.challenge.enterCode.placeholder', 'login'),\n 'label-top': true,\n explain: Util.createInputExplain(\n 'mfa.challenge.enterCode.tooltip',\n 'mfa.challenge.enterCode.placeholder',\n 'login'\n ),\n 'explain-top': true,\n name: 'passCode',\n input: TextBox,\n type: 'tel',\n showWhen: factorIdIsDefined,\n }),\n FormType.Toolbar({\n noCancelButton: true,\n save: loc('mfa.challenge.verify', 'login'),\n showWhen: factorIdIsDefined,\n })\n );\n\n return {\n title: formTitle,\n noButtonBar: true,\n autoSave: true,\n className: getClassName(factorType),\n\n showWarning: function(msg) {\n this.clearWarnings();\n this.add(EnrollCallAndSmsControllerwarningTemplate, '.o-form-error-container', { options: { warning: msg } });\n },\n\n clearWarnings: function() {\n this.$('.okta-form-infobox-warning').remove();\n },\n\n initialize: function() {\n this.listenTo(this.model, 'change:ableToResend', function(model, ableToResend) {\n if (ableToResend) {\n this.showWarning(loc(isCall ? 'factor.call.time.warning' : 'factor.sms.time.warning', 'login'));\n } else {\n this.clearWarnings();\n }\n });\n this.listenTo(this.model, 'error errors:clear', function() {\n this.clearWarnings();\n this.clearErrors();\n });\n this.listenTo(this.model, 'change:enrolled', function() {\n this.$('.js-enroll-phone').toggle();\n });\n },\n formChildren: formChildren,\n };\n },\n\n Footer: Footer,\n\n trapAuthResponse: function() {\n if (this.options.appState.get('isMfaEnrollActivate')) {\n this.model.set('factorId', this.options.appState.get('activatedFactorId'));\n return true;\n }\n if (this.options.appState.get('isMfaEnroll') && this.model.get('trapEnrollment')) {\n return true;\n }\n },\n\n initialize: function() {\n if (isCallFactor(this.options.factorType)) {\n this.model.set('hasExistingPhones', this.options.appState.get('hasExistingPhonesForCall'));\n } else {\n this.model.set('hasExistingPhones', this.options.appState.get('hasExistingPhones'));\n }\n this.model.set('factorType', this.options.factorType);\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 complexity: [2, 13] */\n\nimport { _, loc, Collection } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport FactorList from 'views/enroll-choices/FactorList';\nimport Footer from 'views/enroll-choices/Footer';\nimport RequiredFactorList from 'views/enroll-choices/RequiredFactorList';\nimport Enums from './util/Enums';\nimport FormController from './util/FormController';\nimport RouterUtil from './util/RouterUtil';\nconst subtitleTpl = hbs('{{{subtitle}}}');\nexport default FormController.extend({\n className: 'enroll-choices',\n state: {\n pageType: null,\n },\n\n Model: {},\n\n Form: {\n noCancelButton: true,\n\n title: _.partial(loc, 'enroll.choices.title', 'login'),\n\n noButtonBar: function() {\n return this.state.get('pageType') === Enums.ALL_OPTIONAL_NONE_ENROLLED;\n },\n\n subtitle: ' ',\n\n getSubtitle: function() {\n switch (this.state.get('pageType')) {\n case Enums.ALL_OPTIONAL_SOME_ENROLLED:\n case Enums.HAS_REQUIRED_ALL_REQUIRED_ENROLLED:\n return loc('enroll.choices.optional', 'login');\n case Enums.HAS_REQUIRED_SOME_REQUIRED_ENROLLED: {\n const remainingDays = this.options.appState.get('gracePeriodRemainingDays');\n return Number.isInteger(remainingDays) && remainingDays >= 0\n ? this.getGracePeriodSubtitle(remainingDays)\n : this.getDefaultSubtitle();\n }\n default:\n return this.getDefaultSubtitle();\n }\n },\n\n getDefaultSubtitle: function() {\n return this.settings.get('brandName')\n ? loc('enroll.choices.description.specific', 'login', [this.settings.get('brandName')])\n : loc('enroll.choices.description.generic', 'login');\n },\n\n getGracePeriodSubtitle: function(remainingDays) {\n return remainingDays >= 1\n ? loc('enroll.choices.description.gracePeriod.bold', 'login', [remainingDays])\n : loc('enroll.choices.description.gracePeriod.oneDay.bold', 'login');\n },\n\n save: function() {\n switch (this.state.get('pageType')) {\n case Enums.ALL_OPTIONAL_SOME_ENROLLED:\n case Enums.HAS_REQUIRED_ALL_REQUIRED_ENROLLED:\n return loc('enroll.choices.submit.finish', 'login');\n case Enums.HAS_REQUIRED_NONE_ENROLLED:\n return loc('enroll.choices.submit.configure', 'login');\n case Enums.HAS_REQUIRED_SOME_REQUIRED_ENROLLED:\n return loc('enroll.choices.submit.next', 'login');\n default:\n return '';\n }\n },\n\n initialize: function(options) {\n this.listenTo(this, 'save', function() {\n let current;\n\n switch (this.state.get('pageType')) {\n case Enums.HAS_REQUIRED_NONE_ENROLLED:\n case Enums.HAS_REQUIRED_SOME_REQUIRED_ENROLLED:\n current = options.appState.get('factors').getFirstUnenrolledRequiredFactor();\n options.appState.trigger(\n 'navigate',\n RouterUtil.createEnrollFactorUrl(current.get('provider'), current.get('factorType'))\n );\n break;\n default:\n return this.model.doTransaction(function(transaction) {\n return transaction.skip();\n });\n }\n });\n },\n\n preRender: function() {\n // form subtitle does not support unescaped strings, and we need some html elements\n // in the subtitle for this form. So instead of a regular subtitle, we add a \n // with the text we need\n this.add(subtitleTpl({ subtitle: this.getSubtitle() }), 'p.okta-form-subtitle');\n\n const factors = this.options.appState.get('factors');\n\n switch (this.state.get('pageType')) {\n case Enums.HAS_REQUIRED_NONE_ENROLLED:\n case Enums.HAS_REQUIRED_SOME_REQUIRED_ENROLLED:\n this.add(\n new RequiredFactorList({\n minimize: true,\n collection: new Collection(factors.where({ required: true })),\n appState: this.options.appState,\n })\n );\n break;\n case Enums.HAS_REQUIRED_ALL_REQUIRED_ENROLLED:\n case Enums.ALL_OPTIONAL_SOME_ENROLLED:\n case Enums.ALL_OPTIONAL_NONE_ENROLLED: {\n const enrolled = factors.where({ enrolled: true });\n const notEnrolled = factors.filter(function(factor) {\n // pick factors that are not enrolled or have additional enrollments\n return !factor.get('enrolled') || factor.get('additionalEnrollment');\n });\n let notEnrolledListTitle;\n\n if (enrolled.length > 0) {\n notEnrolledListTitle = loc('enroll.choices.list.optional', 'login');\n this.add(\n new FactorList({\n listTitle: loc('enroll.choices.list.enrolled', 'login'),\n minimize: true,\n collection: new Collection(enrolled),\n appState: this.options.appState,\n })\n );\n }\n this.add(\n new FactorList({\n listTitle: notEnrolledListTitle,\n collection: new Collection(notEnrolled),\n appState: this.options.appState,\n showInlineSetupButton: true,\n })\n );\n break;\n }\n }\n },\n },\n\n initialize: function(options) {\n let numRequiredEnrolled = 0;\n let numRequiredNotEnrolled = 0;\n let numOptionalEnrolled = 0;\n let numOptionalNotEnrolled = 0;\n let hasRequired;\n let pageType;\n\n options.appState.get('factors').each(function(factor) {\n const required = factor.get('required');\n const enrolled = factor.get('enrolled');\n const additionalEnrollment = factor.get('additionalEnrollment');\n\n if (required && enrolled) {\n numRequiredEnrolled++;\n } else if (required && !enrolled) {\n numRequiredNotEnrolled++;\n } else if (!required && enrolled) {\n numOptionalEnrolled++;\n } else if (!required && !enrolled) {\n numOptionalNotEnrolled++;\n }\n // If a factor has multiple instances and\n // additional optional enrollments\n if (enrolled && additionalEnrollment) {\n numOptionalNotEnrolled++;\n }\n });\n\n hasRequired = numRequiredEnrolled > 0 || numRequiredNotEnrolled > 0;\n\n // There are 5 possible states this screen can be in:\n\n // 1. Has required, but none have been enrolled. Wizard start page.\n if (hasRequired && numRequiredEnrolled === 0) {\n pageType = Enums.HAS_REQUIRED_NONE_ENROLLED;\n } else if (hasRequired && numRequiredNotEnrolled > 0) {\n // 2. Has required, and have enrolled at least one. The page layout\n // to configure the remaining required factors.\n pageType = Enums.HAS_REQUIRED_SOME_REQUIRED_ENROLLED;\n } else if (hasRequired && numOptionalNotEnrolled > 0) {\n // 3. Has required, and finished enrolling all required factors. The\n // page layout you see to configure any optional factors or skip.\n pageType = Enums.HAS_REQUIRED_ALL_REQUIRED_ENROLLED;\n } else if (numOptionalEnrolled === 0 && numOptionalNotEnrolled > 0) {\n // 4. Factors are all optional, no factors enrolled.\n pageType = Enums.ALL_OPTIONAL_NONE_ENROLLED;\n } else if (numOptionalNotEnrolled > 0) {\n // 5. Factors are all optional, some factors have already been\n // enrolled (can either enroll more or skip).\n pageType = Enums.ALL_OPTIONAL_SOME_ENROLLED;\n } else {\n // 6. Factors are all optional, all factors have already been\n // enrolled, among them there is OktaVerify with Push enrolled as totp\n // (API return OktaVerify push factor as unenrolled in this case and as we always merge\n // push and totp in UI so we redirect to skip link here).\n this.model.doTransaction(function(transaction) {\n return transaction.skip();\n });\n }\n\n this.state.set('pageType', pageType);\n\n if (this.options.appState.get('skipLink') && pageType === Enums.HAS_REQUIRED_SOME_REQUIRED_ENROLLED) {\n this.add(new Footer(this.toJSON()));\n }\n },\n});\n","/*!\n * Copyright (c) 2018-2019, 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 { _, loc, internal } from 'okta';\nimport FormController from 'util/FormController';\nimport Footer from 'views/enroll-factors/Footer';\nconst { Util } = internal.util;\nexport default FormController.extend({\n className: 'enroll-custom-factor',\n Model: {\n local: {\n provider: 'string',\n factorType: 'string',\n },\n save: function() {\n return this.manageTransaction((transaction, setTransaction) => {\n const factor = _.findWhere(transaction.factors, {\n provider: this.get('provider'),\n factorType: this.get('factorType'),\n });\n\n return factor\n .enroll()\n .then(trans => {\n setTransaction(trans);\n const url = this.appState.get('enrollCustomFactorRedirectUrl');\n\n if (url !== null) {\n Util.redirect(url);\n }\n })\n .catch(function(err) {\n throw err;\n });\n });\n },\n },\n\n Form: function() {\n const factors = this.options.appState.get('factors');\n const factor = factors.findWhere({\n provider: this.options.provider,\n factorType: this.options.factorType,\n });\n const vendorName = factor.get('vendorName');\n const subtitle = loc('enroll.customFactor.subtitle', 'login', [vendorName]);\n const saveText = loc('enroll.customFactor.save', 'login');\n\n return {\n autoSave: true,\n title: vendorName,\n subtitle: subtitle,\n save: saveText,\n };\n },\n\n trapAuthResponse: function() {\n if (this.options.appState.get('isMfaEnrollActivate')) {\n return true;\n }\n },\n\n initialize: function() {\n this.model.set('provider', this.options.provider);\n this.model.set('factorType', this.options.factorType);\n },\n\n Footer: Footer,\n});\n","/*!\n * Copyright (c) 2015-2016, 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 camelcase: 0*/\nimport { $, _, loc } from 'okta';\nimport Duo from 'duo';\nimport Q from 'q';\nimport FormController from 'util/FormController';\nimport Footer from 'views/enroll-factors/Footer';\nexport default FormController.extend({\n className: 'enroll-duo duo-form',\n\n Model: {\n props: {\n host: 'string',\n signature: 'string',\n postAction: 'string',\n factorId: 'string',\n stateToken: 'string',\n },\n\n getInitOptions: function() {\n return this.doTransaction(function(transaction) {\n const factor = _.findWhere(transaction.factors, {\n factorType: 'web',\n provider: 'DUO',\n });\n\n return factor.enroll();\n });\n },\n\n activate: function(signedResponse) {\n const url = this.get('postAction');\n const factorId = this.get('factorId');\n const self = this;\n const data = {\n id: factorId,\n stateToken: this.get('stateToken'),\n sig_response: signedResponse,\n };\n // Note: We should be doing this in OktaAuth! Fix when it's updated.\n\n // We don't actually use authClient.post() here (unlike all the other cases in the\n // sign-in widget) since the endpoint is wired to accept serialized form post instead\n // of a JSON post ($.post() is different from authClient.post() in that in $.post(),\n // jquery decides the Content-Type instead of it being a JSON type). Enroll/Verify DUO\n // are the only two places where we actually do this.\n // NOTE - If we ever decide to change this, we should test this very carefully.\n return Q($.post(url, data))\n .then(function() {\n return self.doTransaction(function(transaction) {\n return transaction.poll();\n });\n })\n .catch(function(err) {\n self.trigger('error', self, err.xhr);\n });\n },\n },\n\n Form: {\n autoSave: true,\n noButtonBar: true,\n title: _.partial(loc, 'enroll.duo.title', 'login'),\n\n postRender: function() {\n this.add('');\n Duo.init({\n host: this.model.get('host'),\n sig_request: this.model.get('signature'),\n iframe: this.$('iframe').get(0),\n post_action: _.bind(this.model.activate, this.model),\n });\n },\n },\n\n Footer: Footer,\n\n fetchInitialData: function() {\n const self = this;\n\n return this.model.getInitOptions(this.options.appState).then(function(trans) {\n const res = trans.data;\n\n if (\n !res ||\n !res._embedded ||\n !res._embedded.factor ||\n !res._embedded.factor._embedded ||\n !res._embedded.factor._embedded.activation\n ) {\n throw new Error('Response does not have duo activation options');\n }\n\n const factor = res._embedded.factor;\n const activation = factor._embedded.activation;\n\n self.model.set({\n host: activation.host,\n signature: activation.signature,\n postAction: activation._links.complete.href,\n factorId: factor.id,\n stateToken: res.stateToken,\n });\n });\n },\n\n trapAuthResponse: function() {\n if (this.options.appState.get('isMfaEnrollActivate')) {\n return true;\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 { _, loc, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport FormController from 'util/FormController';\nimport FormType from 'util/FormType';\nimport Footer from 'views/enroll-factors/Footer';\n\nconst Model = {\n local: {\n factorType: 'string',\n provider: 'string',\n },\n save: function() {\n this.trigger('save');\n const factorOpt = this.pick('factorType', 'provider');\n return this.doTransaction(function(transaction) {\n const factor = _.findWhere(transaction.factors, factorOpt);\n\n return factor.enroll();\n });\n },\n};\n\nconst Form = function() {\n return {\n title: _.partial(loc, 'email.enroll.title', 'login'),\n noButtonBar: false,\n autoSave: true,\n save: _.partial(loc, 'email.button.send', 'login'),\n formChildren: [\n FormType.View({\n View: View.extend({\n attributes: {\n 'data-se': 'enroll-email-content',\n },\n template: hbs('{{i18n code=\"email.enroll.description\" bundle=\"login\"}}'),\n }),\n }),\n ],\n };\n};\n\nexport default FormController.extend({\n className: 'enroll-email',\n\n Model: Model,\n\n Form: Form,\n\n Footer: Footer,\n\n initialize: function() {\n this.model.set(_.pick(this.options, 'factorType', 'provider'));\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { loc } from 'okta';\nimport FormController from 'util/FormController';\nimport FormType from 'util/FormType';\nimport Footer from 'views/enroll-factors/Footer';\nimport HtmlErrorMessageView from 'views/mfa-verify/HtmlErrorMessageView';\nexport default FormController.extend({\n className: 'enroll-hotp',\n Model: function() {\n return {\n local: {\n __factorType__: ['string', false, this.options.factorType],\n __provider__: ['string', false, this.options.provider],\n },\n };\n },\n Form: {\n title: function() {\n const factors = this.options.appState.get('factors');\n const hotpFactor = factors.findWhere({\n provider: this.model.get('__provider__'),\n factorType: this.model.get('__factorType__'),\n });\n return loc('enroll.totp.title', 'login', [hotpFactor.get('factorLabel')]);\n },\n noButtonBar: true,\n attributes: { 'data-se': 'restrict-enroll' },\n\n formChildren: function() {\n const children = [\n FormType.View({\n View: new HtmlErrorMessageView({ message: loc('enroll.hotp.restricted', 'login') }),\n }),\n ];\n\n return children;\n },\n },\n\n Footer: Footer,\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { _, loc } from 'okta';\nimport FormController from 'util/FormController';\nimport FormType from 'util/FormType';\nimport Util from 'util/Util';\nimport Footer from 'views/enroll-factors/Footer';\nimport TextBox from 'views/shared/TextBox';\n\nfunction isRSA(provider) {\n return provider === 'RSA';\n}\n\nfunction getClassName(provider) {\n return isRSA(provider) ? 'enroll-rsa' : 'enroll-onprem';\n}\n\nexport default FormController.extend({\n className: function() {\n return getClassName(this.options.provider);\n },\n Model: function() {\n const provider = this.options.provider;\n const factors = this.options.appState.get('factors');\n const factor = factors.findWhere(_.pick(this.options, 'provider', 'factorType'));\n const profile = factor.get('profile');\n const credentialId = profile && profile.credentialId ? profile.credentialId : '';\n\n return {\n props: {\n credentialId: ['string', true, credentialId],\n passCode: ['string', true],\n factorId: 'string',\n },\n save: function() {\n return this.doTransaction(function(transaction) {\n const factor = _.findWhere(transaction.factors, {\n factorType: 'token',\n provider: provider,\n });\n\n return factor.enroll({\n passCode: this.get('passCode'),\n profile: { credentialId: this.get('credentialId') },\n });\n });\n },\n };\n },\n\n Form: function() {\n const provider = this.options.provider;\n const factors = this.options.appState.get('factors');\n const factor = factors.findWhere(_.pick(this.options, 'provider', 'factorType'));\n const vendorName = factor.get('vendorName');\n const title = isRSA(provider) ? loc('factor.totpHard.rsaSecurId', 'login') : vendorName;\n\n return {\n title: title,\n noButtonBar: true,\n autoSave: true,\n className: getClassName(provider),\n initialize: function() {\n this.listenTo(this.model, 'error', (source, error) => {\n if (error && error.status === 409) {\n // 409 means we are in change pin, so we should clear out answer input\n this.$('.o-form-input-name-passCode input').val('');\n this.$('.o-form-input-name-passCode input').trigger('change');\n this.$('.o-form-input-name-passCode input').focus();\n }\n });\n },\n formChildren: [\n FormType.Input({\n label: loc('enroll.onprem.username.placeholder', 'login', [vendorName]),\n 'label-top': true,\n explain: Util.createInputExplain(\n 'enroll.onprem.username.tooltip',\n 'enroll.onprem.username.placeholder',\n 'login',\n [vendorName],\n [vendorName]\n ),\n 'explain-top': true,\n name: 'credentialId',\n input: TextBox,\n type: 'text',\n }),\n FormType.Input({\n label: loc('enroll.onprem.passcode.placeholder', 'login', [vendorName]),\n 'label-top': true,\n explain: Util.createInputExplain(\n 'enroll.onprem.passcode.tooltip',\n 'enroll.onprem.passcode.placeholder',\n 'login',\n [vendorName],\n [vendorName]\n ),\n 'explain-top': true,\n name: 'passCode',\n input: TextBox,\n type: 'password',\n }),\n FormType.Toolbar({\n noCancelButton: true,\n save: loc('mfa.challenge.verify', 'login'),\n }),\n ],\n };\n },\n\n Footer: Footer,\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { _, loc } from 'okta';\nimport FormController from 'util/FormController';\nimport ValidationUtil from 'util/ValidationUtil';\nimport Footer from 'views/enroll-factors/Footer';\nimport TextBox from 'views/shared/TextBox';\nexport default FormController.extend({\n className: 'enroll-password',\n Model: {\n props: {\n password: ['string', true],\n confirmPassword: ['string', true],\n },\n validate: function() {\n return ValidationUtil.validateFieldsMatch(\n this,\n 'password',\n 'confirmPassword',\n loc('password.enroll.error.match', 'login')\n );\n },\n save: function() {\n return this.doTransaction(function(transaction) {\n const factor = _.findWhere(transaction.factors, {\n factorType: 'password',\n provider: 'OKTA',\n });\n\n return factor.enroll({\n profile: {\n password: this.get('password'),\n },\n });\n });\n },\n },\n\n Form: {\n autoSave: true,\n title: _.partial(loc, 'enroll.password.setup', 'login'),\n inputs: function() {\n return [\n {\n label: loc('mfa.challenge.password.placeholder', 'login'),\n 'label-top': true,\n className: 'o-form-fieldset o-form-label-top auth-passcode',\n name: 'password',\n input: TextBox,\n type: 'password',\n },\n {\n label: loc('password.confirmPassword.placeholder', 'login'),\n 'label-top': true,\n className: 'o-form-fieldset o-form-label-top auth-passcode',\n name: 'confirmPassword',\n input: TextBox,\n type: 'password',\n },\n ];\n },\n },\n Footer: Footer,\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { _, loc } from 'okta';\nimport FactorUtil from 'util/FactorUtil';\nimport FormController from 'util/FormController';\nimport Util from 'util/Util';\nimport Footer from 'views/enroll-factors/Footer';\nimport TextBox from 'views/shared/TextBox';\nexport default FormController.extend({\n className: 'enroll-question',\n Model: {\n props: {\n question: 'string',\n answer: ['string', true],\n },\n local: {\n securityQuestions: 'object',\n },\n save: function() {\n return this.doTransaction(function(transaction) {\n const factor = _.findWhere(transaction.factors, {\n factorType: 'question',\n provider: 'OKTA',\n });\n\n return factor.enroll({\n profile: {\n question: this.get('question'),\n answer: this.get('answer'),\n },\n });\n });\n },\n },\n\n Form: {\n autoSave: true,\n title: _.partial(loc, 'enroll.securityQuestion.setup', 'login'),\n inputs: function() {\n return [\n {\n label: false,\n 'label-top': true,\n name: 'question',\n type: 'select',\n wide: true,\n options: function() {\n return this.model.get('securityQuestions');\n },\n params: {\n searchThreshold: 25,\n },\n },\n {\n label: loc('mfa.challenge.answer.placeholder', 'login'),\n 'label-top': true,\n explain: Util.createInputExplain('mfa.challenge.answer.tooltip', 'mfa.challenge.answer.placeholder', 'login'),\n 'explain-top': true,\n className: 'o-form-fieldset o-form-label-top auth-passcode',\n name: 'answer',\n input: TextBox,\n type: 'text',\n },\n ];\n },\n },\n\n Footer: Footer,\n\n fetchInitialData: function() {\n const self = this;\n\n return this.model\n .manageTransaction(function(transaction) {\n const factor = _.findWhere(transaction.factors, {\n factorType: 'question',\n provider: 'OKTA',\n });\n\n return factor.questions();\n })\n .then(function(questionsRes) {\n const questions = {};\n\n _.each(questionsRes, function(question) {\n questions[question.question] = FactorUtil.getSecurityQuestionLabel(question);\n });\n self.model.set('securityQuestions', questions);\n });\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { _, loc } from 'okta';\nimport FormController from 'util/FormController';\nimport FormType from 'util/FormType';\nimport Util from 'util/Util';\nimport Footer from 'views/enroll-factors/Footer';\nimport TextBox from 'views/shared/TextBox';\nexport default FormController.extend({\n className: 'enroll-symantec',\n Model: {\n props: {\n credentialId: ['string', true],\n passCode: ['string', true],\n nextPassCode: ['string', true],\n factorId: 'string',\n },\n save: function() {\n return this.doTransaction(function(transaction) {\n const factor = _.findWhere(transaction.factors, {\n factorType: 'token',\n provider: 'SYMANTEC',\n });\n\n return factor.enroll({\n passCode: this.get('passCode'),\n nextPassCode: this.get('nextPassCode'),\n profile: { credentialId: this.get('credentialId') },\n });\n });\n },\n },\n\n Form: {\n title: _.partial(loc, 'factor.totpHard.symantecVip', 'login'),\n subtitle: _.partial(loc, 'enroll.symantecVip.subtitle', 'login'),\n noButtonBar: true,\n autoSave: true,\n className: 'enroll-symantec',\n formChildren: function() {\n return [\n FormType.Input({\n label: loc('enroll.symantecVip.credentialId.placeholder', 'login'),\n 'label-top': true,\n explain: Util.createInputExplain(\n 'enroll.symantecVip.credentialId.tooltip',\n 'enroll.symantecVip.credentialId.placeholder',\n 'login'\n ),\n 'explain-top': true,\n name: 'credentialId',\n input: TextBox,\n type: 'text',\n }),\n FormType.Input({\n label: loc('enroll.symantecVip.passcode1.placeholder', 'login'),\n 'label-top': true,\n explain: Util.createInputExplain(\n 'enroll.symantecVip.passcode1.tooltip',\n 'enroll.symantecVip.passcode1.placeholder',\n 'login'\n ),\n 'explain-top': true,\n name: 'passCode',\n input: TextBox,\n type: 'text',\n }),\n FormType.Input({\n label: loc('enroll.symantecVip.passcode2.placeholder', 'login'),\n 'label-top': true,\n explain: Util.createInputExplain(\n 'enroll.symantecVip.passcode2.tooltip',\n 'enroll.symantecVip.passcode2.placeholder',\n 'login'\n ),\n 'explain-top': true,\n name: 'nextPassCode',\n input: TextBox,\n type: 'text',\n }),\n FormType.Toolbar({\n noCancelButton: true,\n save: loc('mfa.challenge.verify', 'login'),\n }),\n ];\n },\n },\n\n Footer: Footer,\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { _, View, loc } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport FactorUtil from 'util/FactorUtil';\nimport FormController from 'util/FormController';\nimport FormType from 'util/FormType';\nimport StoreLinks from 'util/StoreLinks';\nimport Footer from 'views/enroll-factors/Footer';\nconst showWhenDeviceTypeSelected = {\n __deviceType__: function(val) {\n return val !== undefined;\n },\n};\nconst EnrollTotpControllerAppDownloadInstructionsView = View.extend({\n attributes: { 'data-se': 'app-download-instructions' },\n className: 'app-download-instructions',\n template: hbs(\n '\\\n \\\n

    {{{appStoreLinkText}}}

    \\\n '\n ),\n initialize: function() {\n this.listenTo(this.model, 'change:__deviceType__', this.render);\n },\n postRender: function() {\n const link = this.$el.find('.instructions a');\n if (link.length) {\n link[0].setAttribute('target', '_blank');\n link[0].setAttribute('rel', 'noreferer noopener');\n }\n },\n getTemplateData: function() {\n let appStoreLink;\n let appIcon;\n let appStoreName;\n const factorName = FactorUtil.getFactorLabel(this.model.get('__provider__'), this.model.get('__factorType__'));\n\n appStoreName = StoreLinks.STORE[this.model.get('__deviceType__')];\n if (this.model.get('__provider__') === 'GOOGLE') {\n appStoreLink = StoreLinks.GOOGLE[this.model.get('__deviceType__')];\n appIcon = 'google-auth-38';\n } else {\n appStoreLink = StoreLinks.OKTA[this.model.get('__deviceType__')];\n appIcon = 'okta-verify-download-icon';\n }\n return {\n appStoreLinkText: loc('enroll.totp.downloadApp', 'login', [appStoreLink, factorName, appStoreName]),\n appIcon: appIcon,\n };\n },\n});\nconst EnrollTotpControllerEnrollTotpController = FormController.extend({\n className: 'enroll-totp',\n Model: function() {\n return {\n local: {\n __deviceType__: 'string',\n __factorType__: ['string', false, this.options.factorType],\n __provider__: ['string', false, this.options.provider],\n },\n save: function() {\n return this.doTransaction(function(transaction) {\n const factor = _.findWhere(transaction.factors, {\n factorType: this.get('__factorType__'),\n provider: this.get('__provider__'),\n });\n\n return factor.enroll();\n });\n },\n };\n },\n\n Form: {\n title: function() {\n const factorName = FactorUtil.getFactorLabel(this.model.get('__provider__'), this.model.get('__factorType__'));\n\n return loc('enroll.totp.title', 'login', [factorName]);\n },\n noButtonBar: true,\n attributes: { 'data-se': 'step-device-type' },\n\n formChildren: function() {\n const inputOptions = {\n APPLE: loc('iphone', 'login'),\n ANDROID: loc('android', 'login'),\n };\n const children = [\n FormType.Input({\n name: '__deviceType__',\n type: 'radio',\n options: inputOptions,\n group: true,\n label: _.partial(loc, 'enroll.totp.selectDevice', 'login'),\n }),\n FormType.Divider({ showWhen: showWhenDeviceTypeSelected }),\n FormType.View({\n View: EnrollTotpControllerAppDownloadInstructionsView,\n showWhen: showWhenDeviceTypeSelected,\n }),\n FormType.Button({\n title: loc('oform.next', 'login'),\n attributes: {\n 'data-type': 'save'\n },\n className: 'button button-primary default-custom-button',\n click: function() {\n this.model.save();\n },\n showWhen: showWhenDeviceTypeSelected,\n }),\n ];\n\n return children;\n },\n },\n\n Footer: Footer,\n});\nexport default EnrollTotpControllerEnrollTotpController;\n","/*!\n * Copyright (c) 2015-2016, 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 u2f */\nimport { _, loc, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Q from 'q';\nimport 'u2f-api-polyfill';\nimport Errors from 'util/Errors';\nimport FidoUtil from 'util/FidoUtil';\nimport FormController from 'util/FormController';\nimport FormType from 'util/FormType';\nimport Footer from 'views/enroll-factors/Footer';\nimport HtmlErrorMessageView from 'views/mfa-verify/HtmlErrorMessageView';\nexport default FormController.extend({\n className: 'enroll-u2f',\n Model: {\n local: {\n __enrolled__: 'boolean',\n },\n\n save: function() {\n this.trigger('request');\n\n if (this.get('__enrolled__')) {\n return this.activate();\n }\n\n return this.doTransaction(function(transaction) {\n const factor = _.findWhere(transaction.factors, {\n factorType: 'u2f',\n provider: 'FIDO',\n });\n\n return factor.enroll();\n });\n },\n\n activate: function() {\n this.set('__enrolled__', true);\n this.trigger('errors:clear');\n\n return this.doTransaction(function(transaction) {\n const activation = transaction.factor.activation;\n const appId = activation.appId;\n const registerRequests = [\n {\n version: FidoUtil.getU2fVersion(),\n challenge: activation.nonce,\n },\n ];\n const self = this;\n const deferred = Q.defer();\n\n u2f.register(appId, registerRequests, [], function(data) {\n self.trigger('errors:clear');\n if (data.errorCode && data.errorCode !== 0) {\n deferred.reject(\n new Errors.U2FError({\n xhr: {\n responseJSON: {\n errorSummary: FidoUtil.getU2fEnrollErrorMessageByCode(data.errorCode),\n },\n },\n })\n );\n } else {\n deferred.resolve(\n transaction.activate({\n registrationData: data.registrationData,\n version: data.version,\n challenge: data.challenge,\n clientData: data.clientData,\n })\n );\n }\n });\n return deferred.promise;\n });\n },\n },\n\n Form: {\n title: _.partial(loc, 'enroll.u2f.title', 'login'),\n save: _.partial(loc, 'enroll.u2f.save', 'login'),\n noCancelButton: true,\n hasSavingState: false,\n autoSave: true,\n className: 'enroll-u2f-form',\n noButtonBar: function() {\n return !FidoUtil.isU2fAvailable();\n },\n modelEvents: {\n request: '_startEnrollment',\n error: '_stopEnrollment',\n },\n formChildren: function() {\n const result = [];\n\n if (!FidoUtil.isU2fAvailable()) {\n let errorMessageKey = 'u2f.error.factorNotSupported';\n\n if (this.options.appState.get('factors').length === 1) {\n errorMessageKey = 'u2f.error.factorNotSupported.oneFactor';\n }\n result.push(\n FormType.View(\n { View: new HtmlErrorMessageView({ message: loc(errorMessageKey, 'login') }) },\n { selector: '.o-form-error-container' }\n )\n );\n } else {\n //There is html in enroll.u2f.general2 in our properties file, reason why is unescaped\n result.push(\n FormType.View({\n View: View.extend({\n template: hbs(\n '
      \\\n
    1. {{{i18n code=\"enroll.u2f.general2\" bundle=\"login\"}}}
    2. \\\n
    3. {{i18n code=\"enroll.u2f.general3\" bundle=\"login\"}}
    4. \\\n
    '\n ),\n }),\n })\n );\n\n result.push(\n FormType.View({\n View: View.extend({\n template: hbs(\n '\\\n
    \\\n

    {{i18n code=\"enroll.u2f.instructions\" bundle=\"login\"}}

    \\\n

    {{i18n code=\"enroll.u2f.instructionsBluetooth\" bundle=\"login\"}}

    \\\n
    \\\n
    \\\n
    \\\n
    \\\n
    \\\n
    '\n ),\n }),\n })\n );\n }\n\n return result;\n },\n\n _startEnrollment: function() {\n this.$('.u2f-instructions').addClass('hide');\n this.$('.u2f-enroll-text').removeClass('hide');\n this.$('.o-form-button-bar').hide();\n },\n\n _stopEnrollment: function() {\n this.$('.u2f-instructions').removeClass('hide');\n this.$('.u2f-enroll-text').addClass('hide');\n this.$('.o-form-button-bar').show();\n },\n },\n\n Footer: Footer,\n\n trapAuthResponse: function() {\n if (this.options.appState.get('isMfaEnrollActivate')) {\n this.model.activate();\n return true;\n }\n },\n});\n","/*!\n * Copyright (c) 2019, 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 */\nimport EnrollUser from 'models/EnrollUser';\nimport BaseLoginController from 'util/BaseLoginController';\nimport EnrollUserForm from 'views/enrollUser/EnrollUserForm';\nimport FooterWithBackLink from 'views/shared/FooterWithBackLink';\nexport default BaseLoginController.extend({\n className: 'enroll-user',\n initialize: function(options) {\n this.options = options || {};\n // create model\n this.model = new EnrollUser(this.options);\n },\n fetchInitialData: function() {\n // If user is unauthenticated and starts enroll flow make a post call to transition state to PROFILE_REQUIRED\n if (this.options.appState.get('isUnauthenticated')) {\n return this.model.getEnrollFormData();\n } else {\n return BaseLoginController.prototype.fetchInitialData.call();\n }\n },\n trapAuthResponse: function() {\n if (this.options.appState.get('isProfileRequired')) {\n return true;\n }\n },\n postRender: function() {\n const form = new EnrollUserForm(this.toJSON());\n\n this.add(form);\n this.add(new FooterWithBackLink(this.toJSON()));\n this.addListeners();\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { _, loc, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Q from 'q';\nimport BrowserFeatures from 'util/BrowserFeatures';\nimport CryptoUtil from 'util/CryptoUtil';\nimport Errors from 'util/Errors';\nimport FormController from 'util/FormController';\nimport FormType from 'util/FormType';\nimport webauthn from 'util/webauthn';\nimport Footer from 'views/enroll-factors/Footer';\nimport HtmlErrorMessageView from 'views/mfa-verify/HtmlErrorMessageView';\n\nfunction getExcludeCredentials(credentials) {\n const excludeCredentials = [];\n\n _.each(credentials, function(credential) {\n excludeCredentials.push({\n type: 'public-key',\n id: CryptoUtil.strToBin(credential.id),\n });\n });\n return excludeCredentials;\n}\n\nexport default FormController.extend({\n className: 'enroll-webauthn',\n Model: {\n local: {\n __enrolled__: 'boolean',\n },\n\n save: function() {\n this.trigger('request');\n\n if (this.get('__enrolled__')) {\n return this.activate();\n }\n\n return this.doTransaction(function(transaction) {\n const factor = _.findWhere(transaction.factors, {\n factorType: 'webauthn',\n provider: 'FIDO',\n });\n\n return factor.enroll();\n });\n },\n\n activate: function() {\n this.set('__enrolled__', true);\n this.trigger('errors:clear');\n this.appState.on('backToFactors', () => {\n if (this.webauthnAbortController) {\n this.webauthnAbortController.abort();\n this.webauthnAbortController = null;\n }\n });\n\n return this.doTransaction(function(transaction) {\n const activation = transaction.factor.activation;\n // enroll via browser webauthn js\n\n const self = this;\n\n if (webauthn.isNewApiAvailable()) {\n const options = _.extend({}, activation, {\n challenge: CryptoUtil.strToBin(activation.challenge),\n user: {\n id: CryptoUtil.strToBin(activation.user.id),\n name: activation.user.name,\n displayName: activation.user.displayName,\n },\n excludeCredentials: getExcludeCredentials(activation.excludeCredentials),\n });\n\n self.webauthnAbortController = new AbortController();\n return new Q(\n navigator.credentials.create({\n publicKey: options,\n signal: self.webauthnAbortController.signal,\n })\n )\n .then(function(newCredential) {\n return transaction.activate({\n attestation: CryptoUtil.binToStr(newCredential.response.attestationObject),\n clientData: CryptoUtil.binToStr(newCredential.response.clientDataJSON),\n });\n })\n .catch(function(error) {\n self.trigger('errors:clear');\n // Do not display if it is abort error triggered by code when switching.\n // self.webauthnAbortController would be null if abort was triggered by code.\n if (!self.webauthnAbortController) {\n throw new Errors.WebauthnAbortError();\n } else {\n throw new Errors.WebAuthnError({\n xhr: { responseJSON: { errorSummary: error.message } },\n });\n }\n })\n .finally(function() {\n // unset webauthnAbortController on successful authentication or error\n self.webauthnAbortController = null;\n });\n }\n });\n },\n },\n\n Form: {\n title: _.partial(loc, 'enroll.webauthn.biometric.title', 'login'),\n save: _.partial(loc, 'enroll.webauthn.save', 'login'),\n noCancelButton: true,\n hasSavingState: false,\n autoSave: true,\n className: 'enroll-webauthn-form',\n noButtonBar: function() {\n return !webauthn.isNewApiAvailable();\n },\n modelEvents: {\n request: '_startEnrollment',\n error: '_stopEnrollment',\n },\n formChildren: function() {\n const children = [];\n\n if (webauthn.isNewApiAvailable()) {\n //enroll.webauthn.biometric.instructions.edge is unescaped because it contains html\n children.push(\n FormType.View({\n View: View.extend({\n className: 'webauthn-enroll-text',\n template: hbs(\n '\\\n
    \\\n

    {{i18n code=\"enroll.webauthn.biometric.instructions\" bundle=\"login\"}}

    \\\n
    \\\n {{#if isEdge}}\\\n
    \\\n

    {{{i18n code=\"enroll.webauthn.biometric.instructions.edge\" bundle=\"login\"}}}

    \\\n
    \\\n {{/if}}\\\n {{#if onlySupportsSecurityKey}}\\\n
    \\\n

    {{{i18n code=\"enroll.webauthn.instructions.noSupportForBiometric\" bundle=\"login\"}}}

    \\\n
    \\\n {{/if}}\\\n
    \\\n '\n ),\n getTemplateData: function() {\n return {\n isEdge: BrowserFeatures.isEdge(),\n onlySupportsSecurityKey: (BrowserFeatures.isFirefox() || BrowserFeatures.isSafari()) &&\n BrowserFeatures.isMac(),\n };\n },\n }),\n })\n );\n } else {\n let errorMessageKey = 'webauthn.biometric.error.factorNotSupported';\n\n if (this.options.appState.get('factors').length === 1) {\n errorMessageKey = 'webauthn.biometric.error.factorNotSupported.oneFactor';\n }\n children.push(\n FormType.View(\n { View: new HtmlErrorMessageView({ message: loc(errorMessageKey, 'login') }) },\n { selector: '.o-form-error-container' }\n )\n );\n }\n\n return children;\n },\n\n _startEnrollment: function() {\n this.$('.okta-waiting-spinner').show();\n this.$('.o-form-button-bar').hide();\n },\n\n _stopEnrollment: function() {\n this.$('.okta-waiting-spinner').hide();\n this.$('.o-form-button-bar').show();\n },\n },\n\n Footer: Footer,\n\n trapAuthResponse: function() {\n if (this.options.appState.get('isMfaEnrollActivate')) {\n this.model.activate();\n return true;\n }\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { _, loc } from 'okta';\nimport FormController from 'util/FormController';\nimport FormType from 'util/FormType';\nimport webauthn from 'util/webauthn';\nimport Footer from 'views/enroll-factors/Footer';\nimport HtmlErrorMessageView from 'views/mfa-verify/HtmlErrorMessageView';\nimport Spinner from 'views/shared/Spinner';\nexport default FormController.extend({\n className: 'enroll-windows-hello',\n Model: {\n local: {\n __isEnrolled__: 'boolean',\n },\n\n save: function() {\n if (!webauthn.isAvailable()) {\n return;\n }\n\n this.trigger('request');\n\n if (this.get('__isEnrolled__')) {\n return this.activate();\n }\n\n return this.doTransaction(function(transaction) {\n return this._enroll(transaction);\n });\n },\n\n _enroll: function(transaction) {\n const factor = _.findWhere(transaction.factors, {\n factorType: 'webauthn',\n provider: 'FIDO',\n });\n\n return factor.enroll();\n },\n\n activate: function() {\n this.set('__isEnrolled__', true);\n\n return this.doTransaction(function(transaction) {\n const activation = transaction.factor.activation;\n const user = transaction.user;\n const model = this;\n const accountInfo = {\n rpDisplayName: activation.rpDisplayName,\n userDisplayName: user.profile.displayName,\n accountName: user.profile.login,\n userId: user.id,\n };\n const cryptoParams = [\n {\n algorithm: activation.algorithm,\n },\n ];\n const challenge = activation.nonce;\n\n return webauthn\n .makeCredential(accountInfo, cryptoParams, challenge)\n .then(function(creds) {\n return transaction.activate({\n credentialId: creds.credential.id,\n publicKey: creds.publicKey,\n attestation: null,\n });\n })\n .catch(function(error) {\n switch (error.message) {\n case 'AbortError':\n case 'NotFoundError':\n case 'NotSupportedError':\n model.trigger('abort', error.message);\n return transaction;\n }\n\n throw error;\n });\n });\n },\n },\n\n Form: {\n autoSave: true,\n hasSavingState: false,\n title: _.partial(loc, 'enroll.windowsHello.title', 'login'),\n subtitle: function() {\n return webauthn.isAvailable() ? loc('enroll.windowsHello.subtitle', 'login') : '';\n },\n save: _.partial(loc, 'enroll.windowsHello.save', 'login'),\n\n customSavingState: {\n stop: 'abort',\n },\n\n modelEvents: function() {\n if (!webauthn.isAvailable()) {\n return {};\n }\n\n return {\n request: '_startEnrollment',\n error: '_stopEnrollment',\n abort: '_stopEnrollment',\n };\n },\n\n noButtonBar: function() {\n return !webauthn.isAvailable();\n },\n\n formChildren: function() {\n const result = [];\n\n if (!webauthn.isAvailable()) {\n result.push(\n FormType.View(\n { View: new HtmlErrorMessageView({ message: loc('enroll.windowsHello.error.notWindows', 'login') }) },\n { selector: '.o-form-error-container' }\n )\n );\n }\n\n result.push(FormType.View({ View: new Spinner({ model: this.model, visible: false }) }));\n\n return result;\n },\n\n _startEnrollment: function() {\n this.subtitle = loc('enroll.windowsHello.subtitle.loading', 'login');\n\n this.model.trigger('spinner:show');\n this._resetErrorMessage();\n\n this.render();\n this.$('.o-form-button-bar').addClass('hide');\n },\n\n _stopEnrollment: function(errorMessage) {\n this.subtitle = loc('enroll.windowsHello.subtitle', 'login');\n\n this.model.trigger('spinner:hide');\n\n let message;\n\n switch (errorMessage) {\n case 'NotSupportedError':\n message = loc('enroll.windowsHello.error.notConfiguredHtml', 'login');\n break;\n }\n\n this._resetErrorMessage();\n\n if (message) {\n const messageView = new HtmlErrorMessageView({\n message: message,\n });\n\n this.$('.o-form-error-container').addClass('o-form-has-errors');\n this.add(messageView, { selector: '.o-form-error-container' });\n this._errorMessageView = this.last();\n }\n\n this.render();\n this.$('.o-form-button-bar').removeClass('hide');\n },\n\n _resetErrorMessage: function() {\n this._errorMessageView && this._errorMessageView.remove();\n this._errorMessageView = undefined;\n this.clearErrors();\n },\n },\n\n Footer: Footer,\n\n trapAuthResponse: function() {\n if (this.options.appState.get('isMfaEnrollActivate')) {\n this.model.activate();\n return true;\n }\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { _, loc } from 'okta';\nimport FormController from 'util/FormController';\nimport FormType from 'util/FormType';\nimport Footer from 'views/enroll-factors/Footer';\nimport TextBox from 'views/shared/TextBox';\nexport default FormController.extend({\n className: 'enroll-yubikey',\n Model: {\n props: {\n passCode: ['string', true],\n factorId: 'string',\n },\n save: function() {\n return this.doTransaction(function(transaction) {\n const factor = _.findWhere(transaction.factors, {\n factorType: 'token:hardware',\n provider: 'YUBICO',\n });\n\n return factor.enroll({\n passCode: this.get('passCode'),\n });\n });\n },\n },\n\n Form: {\n title: _.partial(loc, 'enroll.yubikey.title', 'login'),\n subtitle: _.partial(loc, 'enroll.yubikey.subtitle', 'login'),\n noCancelButton: true,\n save: _.partial(loc, 'mfa.challenge.verify', 'login'),\n autoSave: true,\n className: 'enroll-yubikey',\n formChildren: [\n FormType.View({\n View: '
    ',\n }),\n FormType.Input({\n name: 'passCode',\n input: TextBox,\n type: 'password',\n }),\n ],\n },\n\n Footer: Footer,\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { _, View, loc } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport CountryUtil from 'util/CountryUtil';\nimport FormController from 'util/FormController';\nimport FormType from 'util/FormType';\nimport RouterUtil from 'util/RouterUtil';\nconst PUSH_INTERVAL = 6000;\n\n// Note: Keep-alive is set to 5 seconds - using 5 seconds here will result\n// in network connection lost errors in Safari and IE.\n\nconst EnrollmentLinkSentControllerFooter = View.extend({\n template: hbs(\n '\\\n \\\n {{i18n code=\"oform.back\" bundle=\"login\"}}\\\n \\\n '\n ),\n className: 'auth-footer',\n events: {\n 'click .js-back': function(e) {\n e.preventDefault();\n this.back();\n },\n },\n back: function() {\n const url = RouterUtil.createActivateFactorUrl(\n this.options.appState.get('activatedFactorProvider'),\n this.options.appState.get('activatedFactorType'),\n 'manual'\n );\n\n this.options.appState.trigger('navigate', url);\n },\n});\nconst emailSentForm = {\n title: _.partial(loc, 'enroll.totp.enrollViaEmail.title', 'login'),\n noButtonBar: true,\n attributes: { 'data-se': 'sent-email-activation-link' },\n formChildren: [\n FormType.View({\n View: View.extend({\n template: hbs(\n '\\\n

    {{i18n code=\"enroll.totp.enrollViaEmail.msg\" bundle=\"login\"}}

    \\\n

    {{email}}

    \\\n '\n ),\n getTemplateData: function() {\n return { email: this.options.appState.get('userEmail') };\n },\n }),\n }),\n ],\n};\nconst smsSentForm = {\n title: _.partial(loc, 'enroll.totp.enrollViaSms.title', 'login'),\n noButtonBar: true,\n attributes: { 'data-se': 'sent-sms-activation-link' },\n formChildren: [\n FormType.View({\n View: View.extend({\n template: hbs(\n '\\\n

    {{i18n code=\"enroll.totp.enrollViaSms.msg\" bundle=\"login\"}}

    \\\n

    {{phoneNumber}}

    \\\n '\n ),\n getTemplateData: function() {\n return { phoneNumber: this.model.get('fullPhoneNumber') };\n },\n }),\n }),\n ],\n};\nexport default FormController.extend({\n className: 'enroll-activation-link-sent',\n Model: function() {\n return {\n local: {\n countryCode: ['string', false, this.options.appState.get('userCountryCode')],\n phoneNumber: ['string', false, this.options.appState.get('userPhoneNumber')],\n __factorType__: ['string', false, this.options.factorType],\n __provider__: ['string', false, this.options.provider],\n },\n derived: {\n countryCallingCode: {\n deps: ['countryCode'],\n fn: function(countryCode) {\n return '+' + CountryUtil.getCallingCodeForCountry(countryCode);\n },\n },\n fullPhoneNumber: {\n deps: ['countryCallingCode', 'phoneNumber'],\n fn: function(countryCallingCode, phoneNumber) {\n return countryCallingCode + phoneNumber;\n },\n },\n },\n };\n },\n\n Form: function() {\n const activationType = this.options.appState.get('factorActivationType');\n\n switch (activationType) {\n case 'SMS':\n return smsSentForm;\n case 'EMAIL':\n return emailSentForm;\n default:\n throw new Error('Unknown activation option: ' + activationType);\n }\n },\n\n Footer: EnrollmentLinkSentControllerFooter,\n\n initialize: function() {\n this.pollForEnrollment();\n },\n\n remove: function() {\n return FormController.prototype.remove.apply(this, arguments);\n },\n\n pollForEnrollment: function() {\n return this.model.doTransaction(function(transaction) {\n return transaction.poll(PUSH_INTERVAL);\n });\n },\n\n trapAuthResponse: function() {\n if (this.options.appState.get('isWaitingForActivation')) {\n this.pollForEnrollment();\n return true;\n }\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport FormController from 'util/FormController';\nimport RouterUtil from 'util/RouterUtil';\nimport EnterPasscodeForm from 'views/enroll-factors/EnterPasscodeForm';\nconst EnterPasscodePushFlowControllerFooter = View.extend({\n template: hbs(\n '\\\n \\\n {{i18n code=\"oform.back\" bundle=\"login\"}}\\\n \\\n '\n ),\n className: 'auth-footer',\n events: {\n 'click .js-back': function(e) {\n e.preventDefault();\n this.back();\n },\n },\n back: function() {\n const url = RouterUtil.createActivateFactorUrl(\n this.options.appState.get('activatedFactorProvider'),\n 'push',\n 'manual'\n );\n\n this.options.appState.trigger('navigate', url);\n },\n});\nexport default FormController.extend({\n className: 'activate-push',\n Model: function() {\n return {\n props: {\n factorId: ['string', true, this.options.appState.get('activatedFactorId')],\n passCode: ['string', true],\n },\n local: {\n __factorType__: ['string', false, this.options.factorType],\n __provider__: ['string', false, this.options.provider],\n },\n save: function() {\n return this.doTransaction(function(transaction) {\n return transaction.activate({\n passCode: this.get('passCode'),\n });\n });\n },\n };\n },\n\n Form: EnterPasscodeForm,\n\n Footer: EnterPasscodePushFlowControllerFooter,\n});\n","/*!\n * Copyright (c) 2020, 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 FormController from 'util/FormController';\nexport default FormController.extend({\n className: 'error-state',\n Model: {},\n Form: {\n noButtonBar: true,\n },\n});\n","/*!\n * Copyright (c) 2015-2017, 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 Spinner from 'views/shared/Spinner';\nimport BaseLoginController from 'util/BaseLoginController';\nimport Util from 'util/Util';\n\nexport default BaseLoginController.extend({\n className: 'force-idp-discovery',\n\n View: Spinner,\n\n Model: {},\n\n initialize: function() {\n const OKTA_IDP_TYPE = 'OKTA';\n const RESOURCE = 'okta:acct:';\n\n const options = this.options;\n const lastAuthResponse = options.appState.get('lastAuthResponse');\n const stateToken = lastAuthResponse && lastAuthResponse?.stateToken;\n\n const webfingerArgs = {\n resource: RESOURCE,\n requestContext: stateToken,\n };\n\n options.appState.settings.authClient\n .webfinger(webfingerArgs)\n .then(res => {\n if (res?.links && res.links[0]) {\n if (res.links[0].properties['okta:idp:type'] !== OKTA_IDP_TYPE && res.links[0].href) {\n const redirectFn = res.links[0].href.includes('OKTA_INVALID_SESSION_REPOST%3Dtrue')\n ? Util.redirectWithFormGet.bind(Util)\n : this.settings.get('redirectUtilFn');\n //override redirectFn to only use Util.redirectWithFormGet if OKTA_INVALID_SESSION_REPOST is included\n //it will be encoded since it will be included in the encoded fromURI\n\n redirectFn(res.links[0].href);\n return;\n }\n }\n options.appState.trigger('navigate', '');\n })\n .catch(() => {\n // TODO: OKTA-436775 Show error instead of navigating to default route\n options.appState.trigger('navigate', '');\n });\n },\n\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { _, loc, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Enums from 'util/Enums';\nimport FormController from 'util/FormController';\nimport FormType from 'util/FormType';\nimport Util from 'util/Util';\nimport ValidationUtil from 'util/ValidationUtil';\nimport ContactSupport from 'views/shared/ContactSupport';\nimport TextBox from 'views/shared/TextBox';\nconst ForgotPasswordControllernoFactorsError = View.extend({\n template: hbs`\n
    \n \n

    {{i18n code=\"password.forgot.noFactorsEnabled\" bundle=\"login\"}}

    \n
    \n `,\n});\nconst ForgotPasswordControllerFooter = View.extend({\n template: hbs(\n '\\\n {{#unless hideBackToSignInForReset}}\\\n \\\n {{i18n code=\"goback\" bundle=\"login\"}}\\\n \\\n {{/unless}}\\\n {{#if helpSupportNumber}}\\\n \\\n {{i18n code=\"mfa.noAccessToEmail\" bundle=\"login\"}}\\\n \\\n {{/if}}\\\n '\n ),\n className: 'auth-footer',\n events: {\n 'click .js-back': function(e) {\n e.preventDefault();\n this.back();\n },\n 'click .js-contact-support': function(e) {\n e.preventDefault();\n this.state.trigger('contactSupport');\n this.$('.js-contact-support').hide();\n },\n },\n getTemplateData: function() {\n return {\n hideBackToSignInForReset: this.settings.get('features.hideBackToSignInForReset'),\n helpSupportNumber: this.settings.get('helpSupportNumber'),\n };\n },\n back: function() {\n this.state.set('navigateDir', Enums.DIRECTION_BACK);\n this.options.appState.trigger('navigate', '');\n },\n});\nexport default FormController.extend({\n className: 'forgot-password',\n Model: {\n props: {\n username: ['string', true],\n factorType: ['string', true],\n },\n validate: function() {\n return ValidationUtil.validateUsername(this);\n },\n save: function() {\n const self = this;\n const relayState = this.settings.get('relayState');\n\n this.startTransaction(function(authClient) {\n return authClient.forgotPassword({\n username: self.settings.transformUsername(self.get('username'), Enums.FORGOT_PASSWORD),\n factorType: self.get('factorType'),\n relayState: relayState,\n });\n }).catch(function() {\n //need empty fail handler on model to display errors on form\n });\n },\n },\n Form: {\n noButtonBar: true,\n title: _.partial(loc, 'password.reset', 'login'),\n formChildren: function() {\n const smsEnabled = this.settings.get('features.smsRecovery');\n /*eslint complexity: [2, 9] max-statements: [2, 23] */\n\n const callEnabled = this.settings.get('features.callRecovery');\n const emailEnabled = this.settings.get('features.emailRecovery');\n const noFactorsEnabled = !(smsEnabled || callEnabled || emailEnabled);\n const formChildren = [];\n\n if (noFactorsEnabled) {\n this.add(ForgotPasswordControllernoFactorsError, '.o-form-error-container');\n } else {\n formChildren.push(\n FormType.Input({\n label: loc('password.forgot.email.or.username.placeholder', 'login'),\n 'label-top': true,\n explain: Util.createInputExplain(\n 'password.forgot.email.or.username.tooltip',\n 'password.forgot.email.or.username.placeholder',\n 'login'\n ),\n 'explain-top': true,\n name: 'username',\n input: TextBox,\n inputId: 'account-recovery-username',\n autoComplete: 'username',\n type: 'text',\n inlineValidation: false,\n })\n );\n if (smsEnabled || callEnabled) {\n formChildren.push(\n FormType.View({\n View: View.extend({\n template: hbs(\n '\\\n

    \\\n {{i18n code=\"recovery.mobile.hint\" bundle=\"login\" arguments=\"mobileFactors\"}}\\\n

    '\n ),\n getTemplateData: function() {\n let mobileFactors;\n\n if (smsEnabled && callEnabled) {\n mobileFactors = loc('recovery.smsOrCall');\n } else if (callEnabled) {\n mobileFactors = loc('recovery.call');\n } else {\n mobileFactors = loc('recovery.sms');\n }\n return { mobileFactors: mobileFactors };\n },\n }),\n })\n );\n }\n if (smsEnabled) {\n this.$el.addClass('forgot-password-sms-enabled');\n formChildren.push(\n this.createRecoveryFactorButton(\n 'sms-button',\n 'password.forgot.sendText',\n Enums.RECOVERY_FACTOR_TYPE_SMS,\n this\n )\n );\n this.setDefaultFactorType(Enums.RECOVERY_FACTOR_TYPE_SMS);\n }\n if (callEnabled) {\n this.$el.addClass('forgot-password-call-enabled');\n formChildren.push(\n this.createRecoveryFactorButton(\n 'call-button',\n 'password.forgot.call',\n Enums.RECOVERY_FACTOR_TYPE_CALL,\n this\n )\n );\n this.setDefaultFactorType(Enums.RECOVERY_FACTOR_TYPE_CALL);\n }\n if (emailEnabled) {\n this.$el.addClass('forgot-password-email-enabled');\n formChildren.push(\n this.createRecoveryFactorButton(\n 'email-button',\n 'password.forgot.sendEmail',\n Enums.RECOVERY_FACTOR_TYPE_EMAIL,\n this\n )\n );\n this.setDefaultFactorType(Enums.RECOVERY_FACTOR_TYPE_EMAIL);\n }\n }\n\n return formChildren;\n },\n initialize: function() {\n this.listenTo(this.state, 'contactSupport', function() {\n this.add(ContactSupport, '.o-form-error-container');\n });\n\n this.listenTo(this, 'save', function() {\n this.options.appState.set('username', this.model.get('username'));\n this.model.save();\n });\n },\n setDefaultFactorType: function(factorType) {\n if (_.isEmpty(this.model.get('factorType'))) {\n this.model.set('factorType', factorType);\n }\n },\n createRecoveryFactorButton: function(className, labelCode, factorType, form) {\n return FormType.Button({\n attributes: { 'data-se': className },\n className: 'button button-primary button-wide ' + className,\n title: loc(labelCode, 'login'),\n click: function() {\n form.clearErrors();\n if (this.model.isValid()) {\n this.model.set('factorType', factorType);\n form.trigger('save', this.model);\n }\n },\n });\n },\n },\n Footer: ForgotPasswordControllerFooter,\n\n initialize: function() {\n this.options.appState.unset('username');\n },\n});\n","/*!\n * Copyright (c) 2015-2017, 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 PrimaryAuthController from 'PrimaryAuthController';\nimport IDPDiscoveryModel from 'models/IDPDiscovery';\nimport PrimaryAuthModel from 'models/PrimaryAuth';\nimport BaseLoginController from 'util/BaseLoginController';\nimport IDPDiscoveryForm from 'views/idp-discovery/IDPDiscoveryForm';\nimport CustomButtons from 'views/primary-auth/CustomButtons';\nimport DeviceFingerprint from 'util/DeviceFingerprint';\nimport Util from './util/Util';\n\nexport default PrimaryAuthController.extend({\n className: 'idp-discovery',\n\n View: IDPDiscoveryForm,\n\n constructor: function(options) {\n options.appState.unset('username');\n let requestContext = options.settings.get('idpDiscovery.requestContext');\n const lastAuthResponse = options.appState.get('lastAuthResponse');\n const stateToken = lastAuthResponse && lastAuthResponse?.stateToken;\n\n //Update requestContext with last stateToken, if the context was stateToken and not a fromUri\n if(Util.isV1StateToken(requestContext)) {\n requestContext = stateToken;\n }\n\n this.model = new IDPDiscoveryModel(\n {\n requestContext: requestContext,\n settings: options.settings,\n appState: options.appState,\n },\n { parse: true }\n );\n\n BaseLoginController.apply(this, arguments);\n\n this.addListeners();\n\n // If social auth is configured, 'socialAuthPositionTop' will determine\n // the order in which the social auth and primary auth are shown on the screen.\n if (options.settings.get('hasConfiguredButtons')) {\n this.add(CustomButtons, {\n prepend: options.settings.get('socialAuthPositionTop'),\n options: {\n // To trigger an afterError event, we require the current controller\n currentController: this,\n },\n });\n }\n\n this.addFooter(options);\n\n this.setUsername();\n },\n\n initialize: function() {\n PrimaryAuthController.prototype.initialize.apply(this);\n\n this.listenTo(this.model, 'goToPrimaryAuth', function() {\n this.settings.set('username', this.model.get('username'));\n const self = this;\n if (this.settings.get('features.deviceFingerprinting')) {\n DeviceFingerprint.generateDeviceFingerprint(this.settings.get('baseUrl'), this.$el)\n .then(function(fingerprint) {\n self.options.appState.set('deviceFingerprint', fingerprint);\n self.options.appState.set('username', self.model.get('username'));\n })\n .catch(function() {\n // Keep going even if device fingerprint fails\n self.options.appState.set('username', self.model.get('username'));\n })\n .finally(function() {\n self.doPrimaryAuth();\n });\n } else {\n self.doPrimaryAuth();\n }\n });\n },\n\n doPrimaryAuth : function() {\n if (this.settings.get('features.passwordlessAuth')) {\n const primaryAuthModel = new PrimaryAuthModel(\n {\n username: this.model.get('username'),\n multiOptionalFactorEnroll: this.options.settings.get('features.multiOptionalFactorEnroll'),\n settings: this.options.settings,\n appState: this.options.appState,\n },\n { parse: true }\n );\n\n // Events to set the transaction attributes on the app state.\n this.listenTo(primaryAuthModel, 'error', function(src, errObj) {\n this.toggleButtonState(false);\n this.model.trigger('error', this.model, errObj);\n });\n this.addModelListeners(primaryAuthModel);\n // Make the primary auth request\n primaryAuthModel.save();\n } else {\n this.options.appState.set('disableUsername', true);\n this.options.appState.trigger('navigate', 'signin');\n }\n },\n\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { _, loc, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport CountryUtil from 'util/CountryUtil';\nimport FactorUtil from 'util/FactorUtil';\nimport FormController from 'util/FormController';\nimport FormType from 'util/FormType';\nimport RouterUtil from 'util/RouterUtil';\nimport Footer from 'views/enroll-factors/ManualSetupPushFooter';\nimport PhoneTextBox from 'views/enroll-factors/PhoneTextBox';\n\nfunction goToFactorActivation(view, step) {\n const url = RouterUtil.createActivateFactorUrl(\n view.options.appState.get('activatedFactorProvider'),\n view.options.appState.get('activatedFactorType'),\n step\n );\n\n view.options.appState.trigger('navigate', url);\n}\n\nfunction setStateValues(view) {\n let userPhoneNumber;\n let userCountryCode;\n\n if (view.model.get('activationType') === 'SMS') {\n userCountryCode = view.model.get('countryCode');\n userPhoneNumber = view.model.get('phoneNumber');\n }\n view.options.appState.set({\n factorActivationType: view.model.get('activationType'),\n userCountryCode: userCountryCode,\n userPhoneNumber: userPhoneNumber,\n });\n}\n\nfunction enrollFactor(view, factorType) {\n return view.model.doTransaction(function(transaction) {\n return transaction\n .prev()\n .then(function(trans) {\n const factor = _.findWhere(trans.factors, {\n factorType: factorType,\n provider: 'OKTA',\n });\n\n return factor.enroll();\n })\n .then(function(trans) {\n let textActivationLinkUrl;\n let emailActivationLinkUrl;\n let sharedSecret;\n const res = trans.data;\n\n if (\n res &&\n res._embedded &&\n res._embedded.factor &&\n res._embedded.factor._embedded &&\n res._embedded.factor._embedded.activation\n ) {\n const factor = res._embedded.factor;\n\n // Shared secret\n sharedSecret = factor._embedded.activation.sharedSecret;\n\n if (factor._embedded.activation._links && factor._embedded.activation._links.send) {\n const activationSendLinks = factor._embedded.activation._links.send;\n\n const smsItem = _.findWhere(activationSendLinks, { name: 'sms' });\n\n // SMS activation url\n\n textActivationLinkUrl = smsItem ? smsItem.href : null;\n\n // Email activation url\n\n const emailItem = _.findWhere(activationSendLinks, { name: 'email' });\n\n emailActivationLinkUrl = emailItem ? emailItem.href : null;\n }\n }\n\n view.model.set({\n SMS: textActivationLinkUrl,\n EMAIL: emailActivationLinkUrl,\n sharedSecret: sharedSecret,\n });\n\n return trans;\n });\n });\n}\n\nexport default FormController.extend({\n className: 'enroll-manual-push',\n Model: function() {\n return {\n local: {\n activationType: ['string', true, this.options.appState.get('factorActivationType') || 'SMS'],\n countryCode: ['string', false, this.options.appState.get('userCountryCode')],\n phoneNumber: 'string',\n SMS: ['string', false, this.options.appState.get('textActivationLinkUrl')],\n EMAIL: ['string', false, this.options.appState.get('emailActivationLinkUrl')],\n sharedSecret: ['string', false, this.options.appState.get('sharedSecret')],\n __factorType__: ['string', false, this.options.factorType],\n __provider__: ['string', false, this.options.provider],\n },\n derived: {\n countryCallingCode: {\n deps: ['countryCode'],\n fn: function(countryCode) {\n return '+' + CountryUtil.getCallingCodeForCountry(countryCode);\n },\n },\n fullPhoneNumber: {\n deps: ['countryCallingCode', 'phoneNumber'],\n fn: function(countryCallingCode, phoneNumber) {\n return countryCallingCode + phoneNumber;\n },\n },\n },\n };\n },\n\n Form: {\n title: function() {\n const factorName = FactorUtil.getFactorLabel(this.model.get('__provider__'), this.model.get('__factorType__'));\n\n return loc('enroll.totp.title', 'login', [factorName]);\n },\n subtitle: _.partial(loc, 'enroll.totp.cannotScanBarcode', 'login'),\n noButtonBar: true,\n attributes: { 'data-se': 'step-manual-setup' },\n\n formChildren: function() {\n const instructions = this.settings.get('brandName')\n ? loc('enroll.totp.sharedSecretInstructions.specific', 'login', [this.settings.get('brandName')])\n : loc('enroll.totp.sharedSecretInstructions.generic', 'login');\n const children = [\n FormType.Input({\n name: 'activationType',\n label:loc('mfa.setupOptions', 'login'),\n type: 'select',\n wide: true,\n options: {\n SMS: loc('enroll.totp.sendSms', 'login'),\n EMAIL: loc('enroll.totp.sendEmail', 'login'),\n MANUAL: loc('enroll.totp.setupManually', 'login'),\n },\n }),\n FormType.Input({\n label:loc('mfa.country', 'login'),\n name: 'countryCode',\n type: 'select',\n wide: true,\n options: CountryUtil.getCountries(),\n showWhen: { activationType: 'SMS' },\n }),\n FormType.Input({\n label: loc('mfa.phoneNumber.placeholder', 'login'),\n 'label-top': true,\n className: 'enroll-sms-phone',\n name: 'phoneNumber',\n input: PhoneTextBox,\n type: 'text',\n showWhen: { activationType: 'SMS' },\n }),\n FormType.View({\n View: View.extend({\n className: 'secret-key-instructions',\n attributes: { 'data-se': 'secret-key-instructions'},\n template: hbs`\n
    \n

    \n {{instructions}}\n

    \n

    {{sharedSecretKey}}

    \n
    \n `,\n initialize: function(){\n this.listenTo(this.model, 'change:sharedSecret', this.render);\n },\n getTemplateData: function() {\n return {\n instructions: instructions,\n sharedSecretKey: this.model.get('sharedSecret')\n };\n },\n }),\n showWhen: { activationType: 'MANUAL' },\n }),\n FormType.View({\n View: View.extend({\n template: hbs('
    '),\n }),\n showWhen: { activationType: 'MANUAL' },\n }),\n FormType.Button(\n {\n title: loc('oform.next', 'login'),\n className: 'button button-primary button-wide button-next',\n attributes: { 'data-se': 'next-button' },\n click: () => {\n setStateValues(this);\n goToFactorActivation(this, 'passcode');\n },\n },\n '[data-type=\"next-button-wrap\"]'\n ),\n FormType.Toolbar({\n noCancelButton: true,\n save: loc('oform.send', 'login'),\n showWhen: {\n activationType: function(val) {\n return val === 'SMS' || val === 'EMAIL';\n },\n },\n }),\n ];\n\n return children;\n },\n },\n\n Footer: Footer,\n\n initialize: function() {\n this.setInitialModel();\n // Move this logic to a model when AuthClient supports sending email and sms\n this.listenTo(this.form, 'save', function() {\n const self = this;\n\n this.model.doTransaction(function(transaction) {\n const activationType = this.get('activationType').toLowerCase();\n const opts = {};\n\n if (activationType === 'sms') {\n opts.profile = { phoneNumber: this.get('fullPhoneNumber') };\n }\n\n return transaction.factor.activation.send(activationType, opts).then(function(trans) {\n setStateValues(self);\n // Note: Need to defer because OktaAuth calls our router success\n // handler on the next tick - if we immediately called, appState would\n // still be populated with the last response\n _.defer(function() {\n goToFactorActivation(self, 'sent');\n });\n return trans;\n });\n });\n });\n\n this.listenTo(this.model, 'change:activationType', function(model, value) {\n this.form.clearErrors();\n if (value === 'MANUAL' && this.options.appState.get('activatedFactorType') !== 'token:software:totp') {\n enrollFactor(this, 'token:software:totp');\n } else if (this.options.appState.get('activatedFactorType') !== 'push') {\n enrollFactor(this, 'push');\n }\n });\n },\n\n setInitialModel: function() {\n if (this.options.appState.get('factorActivationType') === 'SMS') {\n this.model.set({\n countryCode: this.options.appState.get('userCountryCode') || 'US',\n phoneNumber: this.options.appState.get('userPhoneNumber'),\n });\n }\n },\n\n trapAuthResponse: function() {\n if (this.options.appState.get('isMfaEnrollActivate') || this.options.appState.get('isMfaEnroll')) {\n return true;\n }\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { _, loc, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport FactorUtil from 'util/FactorUtil';\nimport FormController from 'util/FormController';\nimport FormType from 'util/FormType';\nimport RouterUtil from 'util/RouterUtil';\nimport ManualSetupFooter from 'views/enroll-factors/ManualSetupFooter';\nexport default FormController.extend({\n className: 'enroll-manual-totp',\n Model: function() {\n return {\n local: {\n sharedSecret: ['string', false, this.options.appState.get('sharedSecret')],\n __factorType__: ['string', false, this.options.factorType],\n __provider__: ['string', false, this.options.provider],\n },\n };\n },\n\n Form: {\n title: function() {\n const factorName = FactorUtil.getFactorLabel(this.model.get('__provider__'), this.model.get('__factorType__'));\n\n return loc('enroll.totp.title', 'login', [factorName]);\n },\n subtitle: _.partial(loc, 'enroll.totp.cannotScanBarcode', 'login'),\n noButtonBar: true,\n attributes: { 'data-se': 'step-manual-setup' },\n\n formChildren: function() {\n const instructions = this.settings.get('brandName')\n ? loc('enroll.totp.manualSetupInstructions.specific', 'login', [this.settings.get('brandName')])\n : loc('enroll.totp.manualSetupInstructions.generic', 'login');\n\n return [\n FormType.View({\n View: View.extend({\n className: 'secret-key-instructions',\n attributes: { 'data-se': 'secret-key-instructions'},\n template: hbs`\n
    \n

    \n {{instructions}}\n

    \n

    {{sharedSecretKey}}

    \n
    \n `,\n initialize: function(){\n this.listenTo(this.model, 'change:sharedSecret', this.render);\n },\n getTemplateData: function() {\n return {\n instructions: instructions,\n sharedSecretKey: this.model.get('sharedSecret')\n };\n },\n })\n }),\n FormType.Toolbar({\n noCancelButton: true,\n save: loc('oform.next', 'login'),\n }),\n ];\n },\n },\n\n Footer: ManualSetupFooter,\n\n initialize: function() {\n this.listenTo(this.form, 'save', function() {\n const url = RouterUtil.createActivateFactorUrl(\n this.model.get('__provider__'),\n this.model.get('__factorType__'),\n 'activate'\n );\n\n this.options.appState.trigger('navigate', url);\n });\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 complexity: [2, 21] max-statements: [2, 25] max-params: 0 */\nimport { loc, internal } from 'okta';\nimport BaseLoginController from 'util/BaseLoginController';\nimport EmailMagicLinkForm from 'views/factor-verify/EmailMagicLinkForm';\nimport InlineTOTPForm from 'views/mfa-verify/InlineTOTPForm';\nimport PassCodeForm from 'views/mfa-verify/PassCodeForm';\nimport PasswordForm from 'views/mfa-verify/PasswordForm';\nimport PushForm from 'views/mfa-verify/PushForm';\nimport SecurityQuestionForm from 'views/mfa-verify/SecurityQuestionForm';\nimport SendEmailAndVerifyCodeForm from 'views/mfa-verify/SendEmailAndVerifyCodeForm';\nimport TOTPForm from 'views/mfa-verify/TOTPForm';\nimport YubikeyForm from 'views/mfa-verify/YubikeyForm';\nimport FooterMFA from 'views/shared/FooterMFA';\nlet { CheckBox } = internal.views.forms.inputs;\nexport default BaseLoginController.extend({\n className: 'mfa-verify',\n\n initialize: function(options) {\n const factorType = options.factorType;\n let View;\n\n switch (factorType) {\n case 'question':\n View = SecurityQuestionForm;\n break;\n case 'email':\n if (this.options.appState.get('isIdxStateToken')) {\n View = EmailMagicLinkForm;\n } else {\n View = SendEmailAndVerifyCodeForm;\n }\n break;\n case 'sms':\n case 'call':\n View = PassCodeForm;\n break;\n case 'token':\n case 'token:software:totp':\n case 'token:hotp':\n View = TOTPForm;\n break;\n case 'token:hardware':\n View = YubikeyForm;\n break;\n case 'push':\n View = PushForm;\n break;\n case 'password':\n View = PasswordForm;\n break;\n default:\n throw new Error('Unrecognized factor type');\n }\n\n this.model = this.findModel(factorType, options);\n if (!this.model) {\n // TODO: recover from this more gracefully - probably to redirect\n // to default factor\n throw new Error('Unrecognized factor/provider');\n }\n\n this.addListeners();\n this.add(new View(this.toJSON()));\n\n // If Okta Verify Push and Okta Verify totp are both enabled,\n // then we show Push first, and totp is the \"backup\" factor,\n // which is rendered in an additional InlineTOTPForm\n if (factorType === 'push' && this.model.get('isOktaFactor')) {\n if (this.model.get('backupFactor')) {\n this.inlineTotpForm = this.add(InlineTOTPForm, {\n options: { model: this.model.get('backupFactor') },\n }).last();\n }\n\n if (this.settings.get('features.autoPush')) {\n this.autoPushCheckBox = this.add(CheckBox, {\n options: {\n model: this.model,\n name: 'autoPush',\n placeholder: loc('autoPush', 'login'),\n label: false,\n 'label-top': false,\n className: 'margin-btm-0',\n },\n }).last();\n }\n\n // Remember Device checkbox resides outside of the Push and TOTP forms.\n if (this.options.appState.get('allowRememberDevice')) {\n this.rememberDeviceCheckbox = this.add(CheckBox, {\n options: {\n model: this.model,\n name: 'rememberDevice',\n placeholder: this.options.appState.get('rememberDeviceLabel'),\n label: false,\n 'label-top': true,\n className: 'margin-btm-0',\n },\n }).last();\n }\n // Set rememberDevice on the backup factor (totp) if available\n if (this.model.get('backupFactor')) {\n this.listenTo(this.model, 'change:rememberDevice', function(model, rememberDevice) {\n model.get('backupFactor').set('rememberDevice', rememberDevice);\n });\n }\n }\n\n this.listenTo(this.options.appState, 'change:isWaitingForNumberChallenge', function(\n state,\n isWaitingForNumberChallenge\n ) {\n if (isWaitingForNumberChallenge || this.options.appState.get('lastAuthResponse').status === 'SUCCESS') {\n this.autoPushCheckBox && this.autoPushCheckBox.$el.hide();\n this.rememberDeviceCheckbox && this.rememberDeviceCheckbox.$el.hide();\n this.inlineTotpForm && this.inlineTotpForm.$el.hide();\n } else {\n this.autoPushCheckBox && this.autoPushCheckBox.$el.show();\n this.rememberDeviceCheckbox && this.rememberDeviceCheckbox.$el.show();\n this.inlineTotpForm && this.inlineTotpForm.$el.show();\n }\n });\n\n this.add(new FooterMFA(this.toJSON()));\n },\n\n findModel: function(factorType, options) {\n const factors = options.appState.get('factors');\n const provider = options.provider;\n const factorIndex = options.factorIndex;\n\n if (!provider) {\n return factors.findWhere({ factorType: factorType, isFactorTypeVerification: true });\n } else if (factors.hasMultipleFactorsOfSameType(factorType) && factorIndex) {\n return factors.getFactorByTypeAndIndex(factorType, factorIndex);\n } else {\n return factors.findWhere({ provider: provider, factorType: factorType });\n }\n },\n\n trapAuthResponse: function() {\n if (\n (this.options.appState.get('isMfaRequired') && this.options.appState.get('trapMfaRequiredResponse')) ||\n this.options.appState.get('isMfaChallenge')\n ) {\n this.options.appState.set('trapMfaRequiredResponse', false);\n return true;\n }\n return false;\n },\n\n back: function() {\n // Empty function on verify controllers to prevent users\n // from navigating back during 'verify' using the browser's\n // back button. The URL will still change, but the view will not\n // More details in OKTA-135060.\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { _, loc } from 'okta';\nimport FactorUtil from 'util/FactorUtil';\nimport FormController from 'util/FormController';\nimport FormType from 'util/FormType';\nimport Util from 'util/Util';\nimport ValidationUtil from 'util/ValidationUtil';\nimport Footer from 'views/expired-password/Footer';\nimport PasswordRequirements from 'views/shared/PasswordRequirements';\nimport TextBox from 'views/shared/TextBox';\n\nexport default FormController.extend({\n className: 'password-expired',\n Model: {\n props: {\n oldPassword: ['string', true],\n newPassword: ['string', true],\n confirmPassword: ['string', true],\n },\n validate: function() {\n return ValidationUtil.validatePasswordMatch(this);\n },\n save: function() {\n this.trigger('save');\n return this.doTransaction(function(transaction) {\n return transaction.changePassword({\n oldPassword: this.get('oldPassword'),\n newPassword: this.get('newPassword'),\n });\n });\n },\n },\n Form: {\n save: _.partial(loc, 'password.expired.submit', 'login'),\n title: function() {\n const expiringSoon = this.options.appState.get('isPwdExpiringSoon');\n const numDays = this.options.appState.get('passwordExpireDays');\n\n if (expiringSoon && numDays > 0) {\n return loc('password.expiring.title', 'login', [numDays]);\n } else if (expiringSoon && numDays === 0) {\n return loc('password.expiring.today', 'login');\n } else if (expiringSoon) {\n return loc('password.expiring.soon', 'login');\n } else {\n return this.settings.get('brandName')\n ? loc('password.expired.title.specific', 'login', [this.settings.get('brandName')])\n : loc('password.expired.title.generic', 'login');\n }\n },\n subtitle: function() {\n if (this.options.appState.get('isPwdExpiringSoon')) {\n return this.settings.get('brandName')\n ? loc('password.expiring.subtitle.specific', 'login', [this.settings.get('brandName')])\n : loc('password.expiring.subtitle.generic', 'login');\n }\n\n const policy = this.options.appState.get('policy');\n\n if (!policy || this.settings.get('features.showPasswordRequirementsAsHtmlList')) {\n return;\n }\n\n return FactorUtil.getPasswordComplexityDescription(policy);\n },\n parseErrorMessage: function(responseJSON) {\n const policy = this.options.appState.get('policy');\n\n if (!!policy && this.settings.get('features.showPasswordRequirementsAsHtmlList')) {\n /*\n - This is a specific case where don't want to repeat the requirements again in the error message, since this\n is already shown in the description. The description as bullet-points itself should give an indication\n of the requirements.\n - We cannot check for error code this in this case, as the error code is shared between\n requirements not met message, common password message, etc. So error summary is the only differentiating\n factor. Replace the password requirements string with empty string in this case.\n */\n responseJSON = FactorUtil.removeRequirementsFromError(responseJSON, policy);\n }\n return responseJSON;\n },\n formChildren: function() {\n let children = [];\n\n if (this.settings.get('features.showPasswordRequirementsAsHtmlList')) {\n children.push(\n FormType.View({\n View: new PasswordRequirements({ policy: this.options.appState.get('policy') }),\n })\n );\n }\n\n children = children.concat([\n FormType.Input({\n 'label-top': true,\n label: loc('password.oldPassword.placeholder', 'login'),\n explain: Util.createInputExplain('password.oldPassword.tooltip', 'password.oldPassword.placeholder', 'login'),\n 'explain-top': true,\n name: 'oldPassword',\n input: TextBox,\n type: 'password',\n }),\n FormType.Divider(),\n FormType.Input({\n className: 'margin-btm-5',\n 'label-top': true,\n label: loc('password.newPassword.placeholder', 'login'),\n explain: Util.createInputExplain('password.newPassword.tooltip', 'password.newPassword.placeholder', 'login'),\n 'explain-top': true,\n name: 'newPassword',\n input: TextBox,\n type: 'password',\n }),\n FormType.Input({\n 'label-top': true,\n label: loc('password.confirmPassword.placeholder', 'login'),\n explain: Util.createInputExplain(\n 'password.confirmPassword.tooltip',\n 'password.confirmPassword.placeholder',\n 'login'\n ),\n 'explain-top': true,\n name: 'confirmPassword',\n input: TextBox,\n type: 'password',\n }),\n ]);\n\n return children;\n },\n },\n Footer: Footer,\n\n initialize: function() {\n this.listenTo(this.form, 'save', function() {\n const creds = {\n username: this.options.appState.get('userEmail'),\n password: this.model.get('newPassword'),\n };\n\n this.settings.processCreds(creds).then(_.bind(this.model.save, this.model));\n });\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { _, loc } from 'okta';\nimport FactorUtil from 'util/FactorUtil';\nimport FormController from 'util/FormController';\nimport FormType from 'util/FormType';\nimport Util from 'util/Util';\nimport ValidationUtil from 'util/ValidationUtil';\nimport FooterSignout from 'views/shared/FooterSignout';\nimport PasswordRequirements from 'views/shared/PasswordRequirements';\nimport TextBox from 'views/shared/TextBox';\nexport default FormController.extend({\n className: 'password-reset',\n Model: {\n props: {\n newPassword: ['string', true],\n confirmPassword: ['string', true],\n },\n validate: function() {\n return ValidationUtil.validatePasswordMatch(this);\n },\n save: function() {\n this.trigger('save');\n const self = this;\n\n return this.doTransaction(function(transaction) {\n return transaction.resetPassword({\n newPassword: self.get('newPassword'),\n });\n });\n },\n },\n Form: {\n save: _.partial(loc, 'password.reset', 'login'),\n title: function() {\n return this.settings.get('brandName')\n ? loc('password.reset.title.specific', 'login', [this.settings.get('brandName')])\n : loc('password.reset.title.generic', 'login');\n },\n subtitle: function() {\n const policy = this.options.appState.get('policy');\n\n if (!policy || this.settings.get('features.showPasswordRequirementsAsHtmlList')) {\n return;\n }\n\n return FactorUtil.getPasswordComplexityDescription(policy);\n },\n parseErrorMessage: function(responseJSON) {\n const policy = this.options.appState.get('policy');\n\n if (!!policy && this.settings.get('features.showPasswordRequirementsAsHtmlList')) {\n /*\n - This is a specific case where don't want to repeat the requirements again in the error message, since this\n is already shown in the description. The description as bullet-points itself should give an indication\n of the requirements.\n - We cannot check for error code this in this case, as the error code is shared between\n requirements not met message, common password message, etc. So error summary is the only differentiating\n factor. Replace the password requirements string with empty string in this case.\n */\n responseJSON = FactorUtil.removeRequirementsFromError(responseJSON, policy);\n }\n return responseJSON;\n },\n formChildren: function() {\n let children = [];\n\n if (this.settings.get('features.showPasswordRequirementsAsHtmlList')) {\n children.push(\n FormType.View({\n View: new PasswordRequirements({ policy: this.options.appState.get('policy') }),\n })\n );\n }\n\n children = children.concat([\n FormType.Input({\n className: 'margin-btm-5',\n label: loc('password.newPassword.placeholder', 'login'),\n 'label-top': true,\n explain: Util.createInputExplain('password.newPassword.tooltip', 'password.newPassword.placeholder', 'login'),\n 'explain-top': true,\n name: 'newPassword',\n input: TextBox,\n type: 'password',\n autoComplete: 'new-password',\n }),\n FormType.Input({\n label: loc('password.confirmPassword.placeholder', 'login'),\n 'label-top': true,\n explain: Util.createInputExplain(\n 'password.confirmPassword.tooltip',\n 'password.confirmPassword.placeholder',\n 'login'\n ),\n 'explain-top': true,\n name: 'confirmPassword',\n input: TextBox,\n type: 'password',\n autoComplete: 'new-password',\n }),\n ]);\n return children;\n },\n },\n\n initialize: function() {\n this.listenTo(this.form, 'save', function() {\n const creds = {\n username: this.options.appState.get('userEmail'),\n password: this.model.get('newPassword'),\n };\n\n this.settings.processCreds(creds).then(_.bind(this.model.save, this.model));\n });\n\n if (!this.settings.get('features.hideBackToSignInForReset')) {\n this.addFooter(FooterSignout);\n }\n },\n});\n","/*!\n * Copyright (c) 2020, 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 { loc } from 'okta';\nimport FormController from 'util/FormController';\nimport FormType from 'util/FormType';\nexport default FormController.extend({\n className: 'poll',\n Model: {\n save: function() {\n this.trigger('cancelRequest');\n return this.appState\n .get('transaction')\n .cancel()\n .then(() => {\n this.options.appState.trigger('navigate', '');\n })\n .catch(() => {\n this._stopCountDown();\n });\n },\n },\n\n Form: {\n autoSave: true,\n hasSavingState: false,\n title: function() {\n return this.title;\n },\n className: 'poll-controller',\n noCancelButton: true,\n save: loc('oform.cancel', 'login'),\n modelEvents: {\n cancelRequest: '_stopCountDown',\n },\n formChildren: [\n FormType.View({\n View: '
    \\\n
    \\\n
    ',\n }),\n ],\n _checkStatus: function() {\n // start polling request\n this.transactionObject\n .poll()\n .then(resp => {\n if (resp.data && resp.status !== 'POLL') {\n this.options.appState.set('transaction', resp);\n return;\n }\n this.$('.okta-waiting-spinner').hide();\n let factorPollingIntervalSeconds = Math.ceil(resp.transaction.profile.refresh / 1000);\n this._startCountDown(factorPollingIntervalSeconds);\n })\n .catch(() => {\n this._stopCountDown();\n });\n },\n\n _startCountDown: function(factorPollingIntervalSeconds) {\n // start one second countdown for next poll request\n this.countDown = setInterval(() => {\n // update title after every second and check if countdown == 1 to poll again\n this._updateTitle(factorPollingIntervalSeconds);\n if (factorPollingIntervalSeconds === 0) {\n /* when countdown hits 0\n - stop current poll\n - show spinner\n - check status\n */\n this._stopCountDown();\n this.$('.okta-waiting-spinner').show();\n // start after a small delay so that the spinner does not get hidden too soon\n this.checkStatusTimeout = setTimeout(() => {\n this._checkStatus();\n }, 200);\n } else {\n // reduce countdown after every second\n factorPollingIntervalSeconds = factorPollingIntervalSeconds - 1;\n }\n }, 1000);\n },\n\n _updateTitle: function(factorPollingIntervalSeconds) {\n this.title = loc('polling.title', 'login', [factorPollingIntervalSeconds]);\n this.$el.find('.okta-form-title').text(this.title);\n },\n\n _stopCountDown: function() {\n // clear countdown setInterval\n if (this.countDown) {\n clearInterval(this.countDown);\n }\n // clear checkstatus setTimeout\n if (this.checkStatusTimeout) {\n clearInterval(this.checkStatusTimeout);\n }\n },\n\n initialize: function(options) {\n this.transactionObject = options.appState.get('transaction');\n this.factorPollingIntervalSeconds = Math.ceil(this.transactionObject.transaction.profile.refresh / 1000);\n this._updateTitle(this.factorPollingIntervalSeconds);\n this._startCountDown(this.factorPollingIntervalSeconds);\n },\n },\n\n back: function() {\n // Empty function on verify controllers to prevent users\n // from navigating back during 'verify' using the browser's\n // back button. The URL will still change, but the view will not\n // More details in OKTA-135060.\n },\n\n remove: function() {\n this.form._stopCountDown();\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { $ } from 'okta';\nimport PrimaryAuthModel from 'models/PrimaryAuth';\nimport BaseLoginController from 'util/BaseLoginController';\nimport DeviceFingerprint from 'util/DeviceFingerprint';\nimport CustomButtons from 'views/primary-auth/CustomButtons';\nimport PrimaryAuthForm from 'views/primary-auth/PrimaryAuthForm';\nimport Footer from 'views/shared/Footer';\nimport FooterRegistration from 'views/shared/FooterRegistration';\nexport default BaseLoginController.extend({\n className: 'primary-auth',\n\n state: { enabled: true },\n\n View: PrimaryAuthForm,\n\n constructor: function(options) {\n options.appState.unset('username');\n\n this.model = new PrimaryAuthModel(\n {\n multiOptionalFactorEnroll: options.settings.get('features.multiOptionalFactorEnroll'),\n settings: options.settings,\n appState: options.appState,\n },\n { parse: true }\n );\n\n BaseLoginController.apply(this, arguments);\n\n this.addListeners();\n\n // If social auth is configured, 'socialAuthPositionTop' will determine\n // the order in which the social auth and primary auth are shown on the screen.\n if (options.settings.get('hasConfiguredButtons')) {\n this.add(CustomButtons, {\n prepend: options.settings.get('socialAuthPositionTop'),\n options: {\n // To trigger an afterError event, we require the current controller\n currentController: this,\n },\n });\n }\n\n this.addFooter(options);\n\n this.setUsername();\n },\n\n addFooter: function(options) {\n this.add(new Footer(this.toJSON({ appState: options.appState })));\n\n if (options.settings.get('features.registration') || options.appState.get('isIdxStateToken')) {\n this.add(\n new FooterRegistration({\n settings: this.settings,\n appState: options.appState,\n })\n );\n }\n },\n\n setUsername: function() {\n const username = this.model.get('username');\n\n if (username) {\n this.options.appState.set('username', username);\n }\n },\n\n events: {\n 'focusout input[name=username]': function() {\n if (this.shouldComputeDeviceFingerprint() && this.model.get('username')) {\n const self = this;\n\n this.options.appState.trigger('loading', true);\n DeviceFingerprint.generateDeviceFingerprint(this.settings.get('baseUrl'), this.$el)\n .then(function(fingerprint) {\n self.options.appState.set('deviceFingerprint', fingerprint);\n self.options.appState.set('username', self.model.get('username'));\n })\n .catch(function() {\n // Keep going even if device fingerprint fails\n self.options.appState.set('username', self.model.get('username'));\n })\n .finally(function() {\n self.options.appState.trigger('loading', false);\n });\n } else {\n this.options.appState.set('username', this.model.get('username'));\n }\n },\n 'focusin input': function(e) {\n $(e.target.parentElement).addClass('focused-input');\n },\n 'focusout input': function(e) {\n $(e.target.parentElement).removeClass('focused-input');\n },\n },\n\n // This model and the AppState both have a username property.\n // The controller updates the AppState's username when the user is\n // done editing (on blur) or deletes the username (see below).\n initialize: function() {\n this.options.appState.unset('deviceFingerprint');\n this.listenTo(this.model, 'change:username', function(model, value) {\n if (!value) {\n // reset AppState to an undefined user.\n this.options.appState.set('username', '');\n }\n });\n this.listenTo(this.model, 'save', function() {\n this.state.set('enabled', false);\n });\n this.listenTo(this.model, 'error', function() {\n this.state.set('enabled', true);\n });\n this.listenTo(this.state, 'togglePrimaryAuthButton', function(buttonState) {\n this.toggleButtonState(buttonState);\n });\n },\n\n shouldComputeDeviceFingerprint: function() {\n return (\n this.settings.get('features.securityImage') &&\n this.settings.get('features.deviceFingerprinting') &&\n this.settings.get('features.useDeviceFingerprintForSecurityImage')\n );\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { _, loc, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Enums from 'util/Enums';\nimport FormController from 'util/FormController';\nimport FormType from 'util/FormType';\nexport default FormController.extend({\n className: 'password-reset-email-sent',\n Model: function() {\n return {\n local: {\n userFullName: ['string', false, this.options.appState.get('userFullName')],\n },\n };\n },\n\n Form: {\n title: _.partial(loc, 'password.forgot.emailSent.title', 'login'),\n subtitle: function() {\n const username = this.options.appState.get('username');\n\n return loc('password.forgot.emailSent.desc', 'login', [username]);\n },\n noButtonBar: true,\n attributes: { 'data-se': 'pwd-reset-email-sent' },\n formChildren: function() {\n let children = [\n FormType.View({\n View: View.extend({\n template: hbs(\n '\\\n {{alert}}\\\n '\n ),\n getTemplateData: function() {\n return { alert: loc('password.forgot.emailSent.title', 'login') };\n },\n }),\n }),\n ];\n\n if (!this.settings.get('features.hideBackToSignInForReset')) {\n children.push(\n FormType.Button({\n title: loc('goback', 'login'),\n className: 'button button-primary button-wide',\n attributes: { 'data-se': 'back-button' },\n click: function() {\n const self = this;\n\n return this.model\n .doTransaction(function(transaction) {\n return transaction.cancel();\n })\n .then(function() {\n self.state.set('navigateDir', Enums.DIRECTION_BACK);\n self.options.appState.trigger('navigate', '');\n });\n },\n })\n );\n }\n\n return children;\n },\n },\n\n initialize: function(options) {\n this.settings.callGlobalSuccess(Enums.FORGOT_PASSWORD_EMAIL_SENT, {\n username: options.appState.get('username'),\n });\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { _, loc, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Enums from 'util/Enums';\nimport FormController from 'util/FormController';\nimport FormType from 'util/FormType';\nimport FooterSignout from 'views/shared/FooterSignout';\nimport TextBox from 'views/shared/TextBox';\nexport default FormController.extend({\n className: 'recovery-challenge',\n Model: {\n props: {\n passCode: ['string', true],\n },\n local: {\n ableToResend: 'boolean',\n },\n resendCode: function() {\n // Note: This does not require a trapAuthResponse because Backbone's\n // router will not navigate if the url path is the same\n this.limitResending();\n return this.doTransaction(function(transaction) {\n return transaction.resend();\n });\n },\n limitResending: function() {\n this.set({ ableToResend: false });\n _.delay(_.bind(this.set, this), Enums.API_RATE_LIMIT, { ableToResend: true });\n },\n save: function() {\n return this.doTransaction(function(transaction) {\n return transaction.verify({\n passCode: this.get('passCode'),\n });\n });\n },\n },\n Form: {\n autoSave: true,\n save: _.partial(loc, 'mfa.challenge.verify', 'login'),\n title: function() {\n if (this.options.appState.get('factorType') === Enums.RECOVERY_FACTOR_TYPE_CALL) {\n return loc('recoveryChallenge.call.title', 'login');\n } else {\n return loc('recoveryChallenge.sms.title', 'login');\n }\n },\n className: 'recovery-challenge',\n initialize: function() {\n this.listenTo(this.model, 'error', function() {\n this.clearErrors();\n });\n },\n formChildren: function() {\n return [\n FormType.Button({\n title: loc('mfa.resendCode', 'login'),\n attributes: { 'data-se': 'resend-button' },\n className: 'button sms-request-button margin-top-30',\n click: function() {\n this.model.resendCode();\n },\n initialize: function() {\n this.listenTo(this.model, 'change:ableToResend', function(model, ableToResend) {\n if (ableToResend) {\n this.options.title = loc('mfa.resendCode', 'login');\n this.enable();\n this.render();\n } else {\n this.options.title = loc('mfa.sent', 'login');\n this.disable();\n this.render();\n }\n });\n },\n }),\n FormType.Input({\n label: loc('mfa.challenge.enterCode.placeholder', 'login'),\n 'label-top': true,\n className: 'enroll-sms-phone',\n name: 'passCode',\n input: TextBox,\n type: 'text',\n }),\n ];\n },\n },\n\n events: {\n 'click .send-email-link': function(e) {\n e.preventDefault();\n const settings = this.model.settings;\n const username = this.options.appState.get('username');\n const recoveryType = this.options.appState.get('recoveryType');\n\n this.model.startTransaction(function(authClient) {\n // The user could have landed here via the Forgot Password/Unlock Account flow\n switch (recoveryType) {\n case Enums.RECOVERY_TYPE_PASSWORD:\n return authClient.forgotPassword({\n username: settings.transformUsername(username, Enums.FORGOT_PASSWORD),\n factorType: Enums.RECOVERY_FACTOR_TYPE_EMAIL,\n });\n case Enums.RECOVERY_TYPE_UNLOCK:\n return authClient.unlockAccount({\n username: settings.transformUsername(username, Enums.UNLOCK_ACCOUNT),\n factorType: Enums.RECOVERY_FACTOR_TYPE_EMAIL,\n });\n default:\n return;\n }\n });\n },\n },\n\n initialize: function() {\n const recoveryType = this.options.appState.get('recoveryType');\n let sendEmailLink;\n\n switch (recoveryType) {\n case Enums.RECOVERY_TYPE_PASSWORD:\n sendEmailLink = hbs`{{i18n code=\"password.forgot.code.notReceived\" bundle=\"login\"}}`;\n break;\n case Enums.RECOVERY_TYPE_UNLOCK:\n sendEmailLink = hbs`{{i18n code=\"account.unlock.code.notReceived\" bundle=\"login\"}}`;\n break;\n default:\n break;\n }\n\n if (sendEmailLink && this.settings.get('features.emailRecovery')) {\n this.add(\n View.extend({\n className: 'link send-email-link',\n tagName: 'a',\n attributes: {\n href: '#',\n 'data-se': 'send-email-link',\n },\n template: sendEmailLink,\n })\n );\n }\n\n if (!this.settings.get('features.hideBackToSignInForReset')) {\n this.addFooter(FooterSignout);\n }\n },\n\n postRender: function() {\n this.model.limitResending();\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 FormController from 'util/FormController';\nexport default FormController.extend({\n className: 'recovery-loading',\n\n Model: {},\n Form: {\n noButtonBar: true,\n },\n\n initialize: function(options) {\n const self = this;\n\n return this.model\n .startTransaction(function(authClient) {\n return authClient.verifyRecoveryToken({\n recoveryToken: options.token,\n });\n })\n .catch(function() {\n self.options.appState.trigger('loading', false);\n self.options.appState.trigger('removeLoading');\n });\n },\n\n preRender: function() {\n this.options.appState.trigger('loading', true);\n },\n\n trapAuthResponse: function() {\n this.options.appState.trigger('loading', false);\n return false;\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { loc } from 'okta';\nimport FormController from 'util/FormController';\nimport FormType from 'util/FormType';\nimport FooterSignout from 'views/shared/FooterSignout';\nimport TextBox from 'views/shared/TextBox';\nexport default FormController.extend({\n className: 'recovery-question',\n Model: {\n props: {\n answer: ['string', true],\n showAnswer: 'boolean',\n },\n save: function() {\n return this.doTransaction(function(transaction) {\n return transaction.answer({ answer: this.get('answer') });\n });\n },\n },\n Form: {\n autoSave: true,\n save: function() {\n switch (this.options.appState.get('recoveryType')) {\n case 'PASSWORD':\n return loc('password.forgot.question.submit', 'login');\n case 'UNLOCK':\n return loc('account.unlock.question.submit', 'login');\n default:\n return loc('mfa.challenge.verify', 'login');\n }\n },\n title: function() {\n switch (this.options.appState.get('recoveryType')) {\n case 'PASSWORD':\n return loc('password.forgot.question.title', 'login');\n case 'UNLOCK':\n return loc('account.unlock.question.title', 'login');\n default:\n return '';\n }\n },\n formChildren: function() {\n return [\n FormType.Input({\n label: this.options.appState.get('recoveryQuestion'),\n placeholder: loc('mfa.challenge.answer.placeholder', 'login'),\n name: 'answer',\n input: TextBox,\n type: 'password',\n initialize: function() {\n this.listenTo(this.model, 'change:showAnswer', function() {\n const type = this.model.get('showAnswer') ? 'text' : 'password';\n\n this.getInputs()[0].changeType(type);\n });\n },\n }),\n FormType.Input({\n label: false,\n 'label-top': true,\n placeholder: loc('mfa.challenge.answer.showAnswer', 'login'),\n className: 'recovery-question-show margin-btm-0',\n name: 'showAnswer',\n type: 'checkbox',\n }),\n ];\n },\n },\n initialize: function() {\n if (!this.settings.get('features.hideBackToSignInForReset')) {\n this.addFooter(FooterSignout);\n }\n },\n});\n","/* eslint-disable max-depth */\n/*!\n * Copyright (c) 2015-2016, 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 FormController from 'util/FormController';\nexport default FormController.extend({\n className: 'refresh-auth-state',\n\n Model: {},\n\n Form: {\n noButtonBar: true,\n },\n\n preRender: function() {\n const appState = this.options.appState;\n const token = this.options.token;\n\n this.model.startTransaction(function(authClient) {\n appState.trigger('loading', true);\n if (token) {\n return authClient.tx.introspect({\n stateToken: token,\n });\n }\n\n // get stateToken from cookie\n // currently only applies to old pipeline\n if (authClient.tx.exists()) {\n return authClient.tx.resume();\n }\n\n appState.trigger('navigate', '');\n });\n },\n\n remove: function() {\n this.options.appState.trigger('loading', false);\n return FormController.prototype.remove.apply(this, arguments);\n },\n});\n","/*!\n * Copyright (c) 2017, 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 { View, loc } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Enums from 'util/Enums';\nimport FormController from 'util/FormController';\nimport FormType from 'util/FormType';\nexport default FormController.extend({\n events: {\n 'click .back-btn': function(e) {\n e.preventDefault();\n this.back();\n },\n },\n back: function() {\n this.state.set('navigateDir', Enums.DIRECTION_BACK);\n this.options.appState.trigger('navigate', '');\n },\n className: 'registration-complete',\n Model: function() {},\n initialize: function() {\n this.settings.callGlobalSuccess(Enums.ACTIVATION_EMAIL_SENT, {\n username: this.options.appState.get('username'),\n });\n },\n Form: {\n noButtonBar: true,\n formChildren: function() {\n return [\n FormType.View({\n View: View.extend({\n template: hbs(\n '\\\n
    \\\n \\\n

    {{title}}

    \\\n
    {{desc}}
    \\\n
    \\\n \\\n {{i18n code=\"goback\" bundle=\"login\"}}\\\n \\\n '\n ),\n getTemplateData: function() {\n return {\n desc: loc('registration.complete.confirm.text', 'login'),\n title: loc('registration.complete.title', 'login'),\n };\n },\n }),\n }),\n ];\n },\n },\n});\n","/*!\n * Copyright (c) 2017, 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 */\nimport { _, Backbone, Model, loc, Form, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport LoginModel from 'models/LoginModel';\nimport RegistrationSchema from 'models/RegistrationSchema';\nimport Q from 'q';\nimport BaseLoginController from 'util/BaseLoginController';\nimport Enums from 'util/Enums';\nimport Errors from 'util/Errors';\nimport RegistrationFormFactory from 'util/RegistrationFormFactory';\nimport Util from 'util/Util';\nimport SubSchema from 'views/registration/SubSchema';\nconst RegistrationControllerFooter = View.extend({\n template: hbs(\n '\\\n \\\n {{i18n code=\"goback\" bundle=\"login\"}}\\\n \\\n '\n ),\n className: 'auth-footer',\n events: {\n 'click .help': function(e) {\n e.preventDefault();\n this.back();\n },\n },\n back: function() {\n this.state.set('navigateDir', Enums.DIRECTION_BACK);\n this.options.appState.trigger('navigate', '');\n },\n});\nexport default BaseLoginController.extend({\n className: 'registration',\n initialize: function() {\n const RegistrationControllerSchema = RegistrationSchema.extend({\n settings: this.options.settings,\n url: this.options.settings.get('baseUrl') + '/api/v1/registration/form',\n });\n // setup schema\n\n const schema = new RegistrationControllerSchema();\n\n this.state.set('schema', schema);\n },\n getRegistrationApiUrl: function() {\n const defaultPolicyId = this.settings.get('defaultPolicyId');\n // default policyId\n\n const orgPolicyId = this.options.settings.get('policyId');\n // org policyId\n\n const apiUrl = defaultPolicyId\n ? this.getRegistrationPolicyApi(defaultPolicyId)\n : this.getRegistrationPolicyApi(orgPolicyId);\n\n return apiUrl;\n },\n getRegistrationPolicyApi: function(policyId) {\n return this.options.settings.get('baseUrl') + '/api/v1/registration/' + policyId;\n },\n doPostSubmit: function() {\n if (this.model.get('activationToken')) {\n const self = this;\n // register via activation token\n\n self.settings.callGlobalSuccess(Enums.REGISTRATION_COMPLETE, {\n activationToken: this.model.get('activationToken'),\n });\n\n const loginModel = new LoginModel({\n settings: self.model.appState.settings,\n });\n\n loginModel.loginWithActivationToken(this.model.get('activationToken')).then(function(transaction) {\n self.model.trigger('setTransaction', transaction);\n });\n } else {\n // register via activation email\n this.model.appState.set('username', this.model.get('email'));\n this.model.appState.trigger('navigate', 'signin/register-complete');\n }\n },\n registerUser: function(postData) {\n const self = this;\n\n this.model.attributes = postData;\n // Model.save returns a jqXHR\n Backbone.Model.prototype.save\n .call(this.model)\n .then(function() {\n self.model.trigger('startSaving');\n const activationToken = self.model.get('activationToken');\n const postSubmitData = activationToken ? activationToken : self.model.get('email');\n\n self.settings.postRegistrationSubmit(\n postSubmitData,\n function() {\n self.doPostSubmit();\n },\n function(errors) {\n self.showErrors(errors);\n }\n );\n })\n .fail((err) => {\n const responseJSON = err.responseJSON;\n\n if (responseJSON && responseJSON.errorCauses.length) {\n const { errorCode, errorCauses } = responseJSON;\n const { errorSummary, reason, location } = errorCauses[0];\n\n const isNotUniqueValue =\n errorCode === 'E0000001' &&\n reason === 'UNIQUE_CONSTRAINT';\n\n if (isNotUniqueValue) {\n this.renderIsNotUniqueError(responseJSON);\n }\n\n this.renderLegacyLocationErrorIfNeeded(location, errorSummary);\n\n Util.triggerAfterError(\n this,\n new Errors.RegistrationError(errorSummary)\n );\n }\n });\n },\n\n renderIsNotUniqueError: function(error) {\n const { location } = error.errorCauses[0];\n const errorSummary = loc(\n 'registration.error.userName.notUniqueWithinOrg',\n 'login',\n [location]\n );\n // replace generic error message with more specific one\n // without using backbone events because there was a race condition\n // between clearing and triggering errors\n this.$el.find('.okta-form-infobox-error p').text(errorSummary);\n },\n\n renderLegacyLocationErrorIfNeeded: function(location, errorSummary) {\n // replace generic error message with errorSummary for v1 SIW\n // this makes sure that with legacy location that starts with `data.userProfile`\n // we still see the errorSummary in the error banner instead of only a generic error\n // See example in https://developer.okta.com/docs/reference/registration-hook/#sample-json-payload-of-request\n if (location && /^data\\.userProfile.*/.test(location)) {\n this.$el.find('.okta-form-infobox-error p').text(errorSummary);\n }\n },\n\n createRegistrationModel: function(modelProperties) {\n const self = this;\n const RegistrationControllerModel = Model.extend({\n url: self.getRegistrationApiUrl() + '/register',\n settings: this.settings,\n appState: this.options.appState,\n props: modelProperties,\n local: {\n activationToken: 'string',\n },\n toJSON: function() {\n const data = Model.prototype.toJSON.apply(this, arguments);\n\n return {\n userProfile: data,\n relayState: this.settings.get('relayState'),\n };\n },\n parse: function(resp) {\n this.set('activationToken', resp.activationToken);\n delete resp.activationToken;\n return resp;\n },\n save: function() {\n this.settings.preRegistrationSubmit(\n this.attributes,\n function(postData) {\n self.registerUser(postData);\n },\n function(errors) {\n self.showErrors(errors);\n }\n );\n },\n });\n\n return new RegistrationControllerModel();\n },\n showErrors: function(error, hideRegisterButton) {\n //for parseSchema error hide form and show error at form level\n if (error.callback === 'parseRegistrationSchema' && error.errorCauses) {\n error.errorSummary = _.clone(error.errorCauses[0].errorSummary);\n delete error.errorCauses;\n }\n //show error on form\n this.model.trigger('error', this.model, {\n responseJSON: error,\n });\n\n //throw registration error\n const errMsg = error.callback ? error.callback + ':' + error.errorSummary : error.errorSummary;\n\n Util.triggerAfterError(this, new Errors.RegistrationError(errMsg));\n\n if (hideRegisterButton) {\n this.$el.find('.button-primary').hide();\n }\n },\n fetchInitialData: function() {\n const self = this;\n\n // register parse complete event listener\n self.state.get('schema').on('parseComplete', function(updatedSchema) {\n const modelProperties = updatedSchema.properties.createModelProperties();\n\n self.settings.set('defaultPolicyId', updatedSchema.properties.defaultPolicyId);\n\n // create model\n self.model = self.createRegistrationModel(modelProperties);\n // create form\n const RegistrationControllerForm = Form.extend({\n layout: 'o-form-theme',\n autoSave: true,\n noCancelButton: true,\n title: loc('registration.form.title', 'login'),\n save: loc('registration.form.submit', 'login'),\n modelEvents : { 'invalid' : 'modifyErrors' },\n hasSavingState: true,\n customSavingState: {\n start: 'startSaving',\n stop: 'stopSaving',\n },\n modifyErrors: function(model, errorResp) {\n // overwrite courage errorResp object to show custom error message\n for (let formFieldName in errorResp) {\n if (errorResp[formFieldName] === 'model.validation.field.string.minLength') {\n errorResp[formFieldName] = loc('registration.model.validation.field.string.too.short', 'login', \n [model.props[formFieldName].minLength]\n );\n } else if (errorResp[formFieldName] === 'model.validation.field.string.maxLength') {\n errorResp[formFieldName] = loc('registration.model.validation.field.string.too.long', 'login', \n [model.props[formFieldName].maxLength + 1]\n );\n }\n }\n },\n });\n const form = new RegistrationControllerForm(self.toJSON());\n\n // add form\n self.add(form);\n // add footer\n self.footer = new self.Footer(self.toJSON());\n self.add(self.footer);\n self.addListeners();\n if (updatedSchema.error) {\n self.showErrors(updatedSchema.error, true);\n } else {\n // add fields\n updatedSchema.properties.each(function(schemaProperty) {\n const inputOptions = RegistrationFormFactory.createInputOptions(schemaProperty);\n const subSchemas = schemaProperty.get('subSchemas');\n const name = schemaProperty.get('name');\n\n form.addInput(inputOptions);\n if (name === 'password' && subSchemas) {\n form.add(SubSchema.extend({ id: 'subschemas-' + name, subSchemas: subSchemas }));\n }\n });\n const requiredFieldsLabel = hbs('{{label}}')({\n label: loc('registration.required.fields.label', 'login'),\n });\n\n form.add(requiredFieldsLabel);\n }\n });\n // fetch schema from API, returns a jqXHR. Wrap it in a Q\n return Q(this.state.get('schema').fetch());\n },\n Footer: RegistrationControllerFooter,\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { _, loc, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Enums from 'util/Enums';\nimport FormController from 'util/FormController';\nimport FormType from 'util/FormType';\nimport Util from 'util/Util';\nimport ValidationUtil from 'util/ValidationUtil';\nimport ContactSupport from 'views/shared/ContactSupport';\nimport TextBox from 'views/shared/TextBox';\nconst UnlockAccountControllernoFactorsError = View.extend({\n template: hbs`\n
    \n \n

    {{i18n code=\"account.unlock.noFactorsEnabled\" bundle=\"login\"}}

    \n
    \n `,\n});\nconst UnlockAccountControllerFooter = View.extend({\n template: hbs(\n '\\\n \\\n {{i18n code=\"goback\" bundle=\"login\"}}\\\n \\\n {{#if helpSupportNumber}}\\\n \\\n {{i18n code=\"mfa.noAccessToEmail\" bundle=\"login\"}}\\\n \\\n {{/if}}\\\n '\n ),\n className: 'auth-footer',\n events: {\n 'click .js-back': function(e) {\n e.preventDefault();\n this.back();\n },\n 'click .js-contact-support': function(e) {\n e.preventDefault();\n this.state.trigger('contactSupport');\n this.$('.js-contact-support').hide();\n },\n },\n getTemplateData: function() {\n return this.settings.pick('helpSupportNumber');\n },\n back: function() {\n this.state.set('navigateDir', Enums.DIRECTION_BACK);\n this.options.appState.trigger('navigate', '');\n },\n});\nexport default FormController.extend({\n className: 'account-unlock',\n Model: {\n props: {\n username: ['string', true],\n factorType: ['string', true],\n },\n validate: function() {\n return ValidationUtil.validateUsername(this);\n },\n save: function() {\n const self = this;\n\n return this.startTransaction(function(authClient) {\n return authClient.unlockAccount({\n username: self.settings.transformUsername(self.get('username'), Enums.UNLOCK_ACCOUNT),\n factorType: self.get('factorType'),\n });\n }).catch(function() {\n //need empty fail handler on model to display errors on form\n });\n },\n },\n Form: {\n noButtonBar: true,\n title: _.partial(loc, 'account.unlock.title', 'login'),\n formChildren: function() {\n const smsEnabled = this.settings.get('features.smsRecovery');\n /*eslint complexity: [2, 9] max-statements: [2, 24] */\n\n const callEnabled = this.settings.get('features.callRecovery');\n const emailEnabled = this.settings.get('features.emailRecovery');\n const noFactorsEnabled = !(smsEnabled || callEnabled || emailEnabled);\n const formChildren = [];\n const form = this;\n\n if (noFactorsEnabled) {\n this.add(UnlockAccountControllernoFactorsError, '.o-form-error-container');\n } else {\n formChildren.push(\n FormType.Input({\n label: loc('account.unlock.email.or.username.placeholder', 'login'),\n 'label-top': true,\n explain: Util.createInputExplain(\n 'account.unlock.email.or.username.tooltip',\n 'account.unlock.email.or.username.placeholder',\n 'login'\n ),\n 'explain-top': true,\n name: 'username',\n input: TextBox,\n inputId: 'account-recovery-username',\n type: 'text',\n inlineValidation: false,\n })\n );\n\n if (smsEnabled || callEnabled) {\n formChildren.push(\n FormType.View({\n View: View.extend({\n template: hbs(\n '\\\n

    \\\n {{i18n code=\"recovery.mobile.hint\" bundle=\"login\" arguments=\"mobileFactors\"}}\\\n

    '\n ),\n getTemplateData: function() {\n let mobileFactors;\n\n if (smsEnabled && callEnabled) {\n mobileFactors = loc('recovery.smsOrCall');\n } else if (callEnabled) {\n mobileFactors = loc('recovery.call');\n } else {\n mobileFactors = loc('recovery.sms');\n }\n return { mobileFactors: mobileFactors };\n },\n }),\n })\n );\n }\n\n if (smsEnabled) {\n this.$el.addClass('forgot-password-sms-enabled');\n formChildren.push(\n this.createRecoveryFactorButton(\n 'sms-button',\n 'account.unlock.sendText',\n Enums.RECOVERY_FACTOR_TYPE_SMS,\n form\n )\n );\n this.setDefaultFactorType(Enums.RECOVERY_FACTOR_TYPE_SMS);\n }\n if (callEnabled) {\n this.$el.addClass('forgot-password-call-enabled');\n formChildren.push(\n this.createRecoveryFactorButton(\n 'call-button',\n 'account.unlock.voiceCall',\n Enums.RECOVERY_FACTOR_TYPE_CALL,\n form\n )\n );\n this.setDefaultFactorType(Enums.RECOVERY_FACTOR_TYPE_CALL);\n }\n if (emailEnabled) {\n this.$el.addClass('forgot-password-email-enabled');\n formChildren.push(\n this.createRecoveryFactorButton(\n 'email-button',\n 'account.unlock.sendEmail',\n Enums.RECOVERY_FACTOR_TYPE_EMAIL,\n form\n )\n );\n this.setDefaultFactorType(Enums.RECOVERY_FACTOR_TYPE_EMAIL);\n }\n }\n\n return formChildren;\n },\n initialize: function() {\n this.listenTo(this, 'save', function() {\n this.options.appState.set('username', this.model.get('username'));\n this.model.save();\n });\n\n this.listenTo(this.state, 'contactSupport', function() {\n this.add(ContactSupport, '.o-form-error-container');\n });\n },\n setDefaultFactorType: function(factorType) {\n if (_.isEmpty(this.model.get('factorType'))) {\n this.model.set('factorType', factorType);\n }\n },\n createRecoveryFactorButton: function(className, labelCode, factorType, form) {\n return FormType.Button({\n attributes: { 'data-se': className },\n className: 'button button-primary button-wide ' + className,\n title: loc(labelCode, 'login'),\n click: function() {\n form.clearErrors();\n if (this.model.isValid()) {\n this.model.set('factorType', factorType);\n form.trigger('save', this.model);\n }\n },\n });\n },\n },\n Footer: UnlockAccountControllerFooter,\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { _, loc } from 'okta';\nimport Enums from 'util/Enums';\nimport FormController from 'util/FormController';\nimport FormType from 'util/FormType';\nexport default FormController.extend({\n className: 'account-unlock-email-sent',\n Model: function() {\n return {\n local: {\n userFullName: ['string', false, this.options.appState.get('userFullName')],\n },\n };\n },\n\n Form: {\n title: _.partial(loc, 'account.unlock.emailSent.title', 'login'),\n subtitle: function() {\n const username = this.options.appState.get('username');\n\n return loc('account.unlock.emailSent.desc', 'login', [username]);\n },\n noButtonBar: true,\n attributes: { 'data-se': 'unlock-email-sent' },\n formChildren: function() {\n return [\n FormType.Button({\n title: loc('goback', 'login'),\n className: 'button button-primary button-wide',\n attributes: { 'data-se': 'back-button' },\n click: function() {\n this.state.set('navigateDir', Enums.DIRECTION_BACK);\n this.options.appState.trigger('navigate', '');\n },\n }),\n ];\n },\n },\n\n initialize: function(options) {\n this.settings.callGlobalSuccess(Enums.UNLOCK_ACCOUNT_EMAIL_SENT, {\n username: options.appState.get('username'),\n });\n },\n});\n","/*!\n * Copyright (c) 2018-2019, 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 { _, loc, internal } from 'okta';\nimport FactorUtil from 'util/FactorUtil';\nimport FormController from 'util/FormController';\nimport FormType from 'util/FormType';\nimport HtmlErrorMessageView from 'views/mfa-verify/HtmlErrorMessageView';\nimport FooterMFA from 'views/shared/FooterMFA';\nconst { Util } = internal.util;\nexport default FormController.extend({\n className: 'verify-custom-factor custom-factor-form',\n\n Model: {\n props: {\n rememberDevice: 'boolean',\n },\n\n initialize: function() {\n const rememberDevice = FactorUtil.getRememberDeviceValue(this.appState);\n\n // set the initial value for remember device (Cannot do this while defining the\n // local property because this.settings would not be initialized there yet).\n this.set('rememberDevice', rememberDevice);\n if (this.settings.get('features.skipIdpFactorVerificationBtn') &&\n !this.appState.get('lastFailedChallengeFactorData')) {\n this.set('provider', 'CUSTOM');\n this.set('factorType', 'claims_provider');\n this.save();\n }\n },\n\n save: function() {\n const rememberDevice = !!this.get('rememberDevice');\n\n return this.manageTransaction((transaction, setTransaction) => {\n const data = {\n rememberDevice: rememberDevice,\n };\n\n const factor = _.findWhere(transaction.factors, {\n provider: this.get('provider'),\n factorType: this.get('factorType'),\n });\n\n return factor\n .verify(data)\n .then(trans => {\n setTransaction(trans);\n const url = this.appState.get('verifyCustomFactorRedirectUrl');\n\n if (url !== null) {\n Util.redirect(url);\n }\n })\n .catch(function(err) {\n throw err;\n });\n });\n },\n },\n\n Form: function() {\n const factors = this.options.appState.get('factors');\n const factor = factors.findWhere({\n provider: this.options.provider,\n factorType: this.options.factorType,\n });\n const vendorName = factor.get('vendorName');\n const saveText = loc('mfa.challenge.verify', 'login');\n const lastFailedChallengeFactorData = this.options.appState.get('lastFailedChallengeFactorData');\n let subtitle = loc('verify.customFactor.subtitle', 'login', [vendorName]);\n\n if (this.settings.get('features.skipIdpFactorVerificationBtn') && !lastFailedChallengeFactorData) {\n subtitle = loc('verify.customFactor.subtitle.redirect', 'login', [vendorName]);\n\n this.listenTo(this.model, 'error', () => {\n subtitle = loc('verify.customFactor.subtitle', 'login', [vendorName]);\n this.$('.o-form-explain').text(subtitle);\n });\n }\n return {\n autoSave: true,\n title: vendorName,\n save: saveText,\n subtitle: subtitle,\n attributes: { 'data-se': 'factor-custom' },\n initialize: function() {\n if (this.options.appState.get('allowRememberDevice')) {\n this.addInput({\n label: false,\n 'label-top': true,\n placeholder: this.options.appState.get('rememberDeviceLabel'),\n className: 'margin-btm-0',\n name: 'rememberDevice',\n type: 'checkbox',\n });\n }\n },\n\n formChildren: function() {\n const result = [];\n const lastFailedChallengeFactorData = this.options.appState.get('lastFailedChallengeFactorData');\n\n if (this.settings.get('features.skipIdpFactorVerificationBtn') && !lastFailedChallengeFactorData) {\n result.push(\n FormType.View({\n View:\n '
    '\n })\n );\n }\n\n if (lastFailedChallengeFactorData) {\n result.push(\n FormType.View(\n { View: new HtmlErrorMessageView({ message: lastFailedChallengeFactorData.errorMessage }) },\n { selector: '.o-form-error-container' }\n )\n );\n }\n return result;\n },\n };\n },\n\n postRender() {\n if (this.settings.get('features.skipIdpFactorVerificationBtn') &&\n !this.options.appState.get('lastFailedChallengeFactorData')) {\n this.$('.o-form-button-bar').hide();\n this.$('.okta-waiting-spinner').show();\n }\n },\n\n trapAuthResponse: function() {\n if (this.options.appState.get('isMfaChallenge')) {\n return true;\n }\n },\n\n back: function() {\n // Empty function on verify controllers to prevent users\n // from navigating back during 'verify' using the browser's\n // back button. The URL will still change, but the view will not\n // More details in OKTA-135060.\n },\n\n initialize: function() {\n this.model.set('provider', this.options.provider);\n this.model.set('factorType', this.options.factorType);\n\n if (this.settings.get('features.skipIdpFactorVerificationBtn')) {\n this.listenTo(this.model, 'error', () => {\n this.$('.okta-waiting-spinner').hide();\n this.$('.o-form-button-bar').show();\n });\n }\n this.addFooter(FooterMFA);\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 camelcase: 0 */\nimport { $, _, loc } from 'okta';\nimport Duo from 'duo';\nimport Q from 'q';\nimport FactorUtil from 'util/FactorUtil';\nimport FormController from 'util/FormController';\nimport FooterMFA from 'views/shared/FooterMFA';\n\nexport default FormController.extend({\n className: 'mfa-verify-duo duo-form',\n\n Model: {\n props: {\n host: 'string',\n signature: 'string',\n postAction: 'string',\n factorId: 'string',\n stateToken: 'string',\n rememberDevice: 'boolean',\n },\n\n initialize: function() {\n const rememberDevice = FactorUtil.getRememberDeviceValue(this.appState);\n\n // set the initial value for remember device (Cannot do this while defining the\n // local property because this.settings would not be initialized there yet).\n this.set('rememberDevice', rememberDevice);\n },\n\n getInitOptions: function() {\n const rememberDevice = !!this.get('rememberDevice');\n\n return this.doTransaction(function(transaction) {\n const data = {\n rememberDevice: rememberDevice,\n };\n\n const factor = _.findWhere(transaction.factors, {\n provider: 'DUO',\n factorType: 'web',\n });\n\n return factor.verify(data).catch(function(err) {\n // Clean up the cookie on failure.\n throw err;\n });\n }, true /* rethrow errors */);\n },\n\n verify: function(signedResponse) {\n const url = this.get('postAction');\n const factorId = this.get('factorId');\n const self = this;\n let data = {\n id: factorId,\n stateToken: this.get('stateToken'),\n sig_response: signedResponse,\n };\n // Note: We should be doing this in OktaAuth! Fix when it's updated.\n\n const rememberDevice = this.get('rememberDevice');\n // We don't actually use authClient.post() here (unlike all the other cases in the\n // sign-in widget) since the endpoint is wired to accept serialized form post instead\n // of a JSON post ($.post() is different from authClient.post() in that in $.post(),\n // jquery decides the Content-Type instead of it being a JSON type). Enroll/Verify DUO\n // are the only two places where we actually do this.\n // NOTE - If we ever decide to change this, we should test this very carefully.\n\n return Q($.post(url, data))\n .then(function() {\n return self.doTransaction(function(transaction) {\n let data;\n\n if (rememberDevice) {\n data = { rememberDevice: rememberDevice };\n }\n return transaction.poll(data);\n });\n })\n .catch(function(err) {\n self.trigger('error', self, err.xhr);\n });\n },\n },\n\n Form: {\n autoSave: true,\n noButtonBar: true,\n title: _.partial(loc, 'factor.duo'),\n attributes: { 'data-se': 'factor-duo' },\n\n postRender: function() {\n this.add('');\n if (this.options.appState.get('allowRememberDevice')) {\n this.addInput({\n label: false,\n 'label-top': true,\n placeholder: this.options.appState.get('rememberDeviceLabel'),\n className: 'margin-btm-0',\n name: 'rememberDevice',\n type: 'checkbox',\n });\n }\n Duo.init({\n host: this.model.get('host'),\n sig_request: this.model.get('signature'),\n iframe: this.$('iframe').get(0),\n post_action: _.bind(this.model.verify, this.model),\n });\n },\n },\n\n fetchInitialData: function() {\n const self = this;\n\n return this.model.getInitOptions().then(function(trans) {\n const res = trans.data;\n\n if (\n !res._embedded ||\n !res._embedded.factor ||\n !res._embedded.factor._embedded ||\n !res._embedded.factor._embedded.verification\n ) {\n throw new Error('Response does not have duo verification options');\n }\n const verification = res._embedded.factor._embedded.verification;\n\n self.model.set({\n host: verification.host,\n signature: verification.signature,\n postAction: verification._links.complete.href,\n factorId: res._embedded.factor.id,\n stateToken: res.stateToken,\n });\n });\n },\n\n trapAuthResponse: function() {\n if (this.options.appState.get('isMfaChallenge')) {\n return true;\n }\n },\n\n back: function() {\n // Empty function on verify controllers to prevent users\n // from navigating back during 'verify' using the browser's\n // back button. The URL will still change, but the view will not\n // More details in OKTA-135060.\n },\n\n Footer: FooterMFA,\n});\n","/*!\n * Copyright (c) 2019, 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 complexity:[2, 10], max-params: [2, 11] */\nimport { _, $, loc, View, internal } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport FormController from 'util/FormController';\nimport FormType from 'util/FormType';\nimport FooterWithBackLink from 'views/shared/FooterWithBackLink';\nlet { Util } = internal.util;\nexport default FormController.extend({\n className: 'piv-cac-card',\n Model: {\n save: async function() {\n this.trigger('request');\n const self = this;\n const pivConfig = this.settings.get('piv');\n const data = {\n fromURI: this.settings.get('relayState'),\n isCustomDomain: pivConfig.isCustomDomain,\n };\n\n try {\n await this.getCert(pivConfig.certAuthUrl);\n const res = await this.postCert(pivConfig.certAuthUrl, data);\n Util.redirect(res.redirectUrl);\n } catch (err) {\n if (_.isEmpty(err.responseJSON) && !err.responseText) {\n err.responseJSON = {\n errorSummary: loc('piv.cac.error', 'login'),\n };\n }\n self.trigger('error', self, err);\n }\n },\n\n getCert: function(certAuthUrl) {\n return $.get({\n url: certAuthUrl,\n xhrFields: {\n withCredentials: true,\n },\n beforeSend: function() {\n // overriding this function to prevent our jquery-wrapper from\n // setting headers. Need to keep this a simple request in order for\n // PIV / CAC to work in IE.\n },\n });\n },\n\n postCert: function(certAuthUrl, data) {\n return $.post({\n url: certAuthUrl,\n xhrFields: {\n withCredentials: true,\n },\n data: JSON.stringify(data),\n contentType: 'text/plain',\n beforeSend: function() {\n // overriding this function to prevent our jquery-wrapper from\n // setting headers. Need to keep this a simple request in order for\n // PIV / CAC to work in IE.\n },\n });\n },\n },\n\n Form: {\n autoSave: true,\n hasSavingState: false,\n title: _.partial(loc, 'piv.cac.title', 'login'),\n className: 'piv-cac-card',\n noCancelButton: true,\n save: _.partial(loc, 'retry', 'login'),\n modelEvents: {\n request: '_startEnrollment',\n error: '_stopEnrollment',\n },\n\n formChildren: [\n FormType.View({\n View: View.extend({\n template: hbs(\n '
    \\\n

    {{i18n code=\"piv.cac.card.insert\" bundle=\"login\"}}

    \\\n
    \\\n
    '\n ),\n }),\n }),\n ],\n\n _startEnrollment: function() {\n this.$('.okta-waiting-spinner').show();\n this.$('.o-form-button-bar').hide();\n },\n\n _stopEnrollment: function() {\n this.$('.okta-waiting-spinner').hide();\n this.$('.o-form-button-bar').show();\n },\n\n postRender: function() {\n _.defer(() => {\n this.model.save();\n });\n },\n },\n\n back: function() {\n // Empty function on verify controllers to prevent users\n // from navigating back during 'verify' using the browser's\n // back button. The URL will still change, but the view will not\n // More details in OKTA-135060.\n },\n\n Footer: FooterWithBackLink,\n});\n","/*!\n * Copyright (c) 2015-2016, 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 u2f */\nimport { _, loc, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Q from 'q';\nimport 'u2f-api-polyfill';\nimport Errors from 'util/Errors';\nimport FactorUtil from 'util/FactorUtil';\nimport FidoUtil from 'util/FidoUtil';\nimport FormController from 'util/FormController';\nimport FormType from 'util/FormType';\nimport HtmlErrorMessageView from 'views/mfa-verify/HtmlErrorMessageView';\nimport FooterMFA from 'views/shared/FooterMFA';\n\nfunction getRegisteredKeysSequence(factors) {\n const keys = [];\n\n _.each(factors, function(factor) {\n keys.push({\n version: factor.profile.version,\n keyHandle: factor.profile.credentialId,\n });\n });\n return keys;\n}\n\nexport default FormController.extend({\n className: 'mfa-verify verify-u2f',\n Model: {\n props: {\n rememberDevice: 'boolean',\n },\n\n initialize: function() {\n const rememberDevice = FactorUtil.getRememberDeviceValue(this.appState);\n\n // set the initial value for remember device (Cannot do this while defining the\n // local property because this.settings would not be initialized there yet).\n this.set('rememberDevice', rememberDevice);\n },\n\n save: function() {\n this.trigger('request');\n\n return this.doTransaction(function(transaction) {\n let factor;\n\n if (transaction.factorTypes) {\n factor = _.findWhere(transaction.factorTypes, {\n factorType: 'u2f',\n });\n } else {\n factor = _.findWhere(transaction.factors, {\n factorType: 'u2f',\n provider: 'FIDO',\n });\n }\n const self = this;\n\n return factor.verify().then(function(transaction) {\n let registeredKeys;\n let appId;\n let nonce;\n\n if (transaction.factors) {\n const factors = transaction.factors;\n\n appId = factors[0]['profile']['appId'];\n nonce = transaction.challenge.nonce;\n registeredKeys = getRegisteredKeysSequence(factors);\n } else {\n const factorData = transaction.factor;\n\n appId = factorData.profile.appId;\n nonce = factorData.challenge.nonce;\n registeredKeys = [{ version: FidoUtil.getU2fVersion(), keyHandle: factorData.profile.credentialId }];\n }\n self.trigger('request');\n\n const deferred = Q.defer();\n\n u2f.sign(appId, nonce, registeredKeys, function(data) {\n self.trigger('errors:clear');\n if (data.errorCode && data.errorCode !== 0) {\n const isOneFactor = self.options.appState.get('factors').length === 1;\n\n deferred.reject(\n new Errors.U2FError({\n xhr: {\n responseJSON: {\n errorSummary: FidoUtil.getU2fVerifyErrorMessageByCode(data.errorCode, isOneFactor),\n },\n },\n })\n );\n } else {\n const rememberDevice = !!self.get('rememberDevice');\n\n return factor\n .verify({\n clientData: data.clientData,\n signatureData: data.signatureData,\n rememberDevice: rememberDevice,\n })\n .then(deferred.resolve);\n }\n });\n return deferred.promise;\n });\n });\n },\n },\n\n Form: {\n autoSave: true,\n hasSavingState: false,\n title: _.partial(loc, 'factor.u2f', 'login'),\n className: 'verify-u2f-form',\n noCancelButton: true,\n save: _.partial(loc, 'verify.u2f.retry', 'login'),\n noButtonBar: function() {\n return !FidoUtil.isU2fAvailable();\n },\n modelEvents: {\n request: '_startEnrollment',\n error: '_stopEnrollment',\n },\n\n formChildren: function() {\n const result = [];\n\n if (!FidoUtil.isU2fAvailable()) {\n let errorMessageKey = 'u2f.error.factorNotSupported';\n\n if (this.options.appState.get('factors').length === 1) {\n errorMessageKey = 'u2f.error.factorNotSupported.oneFactor';\n }\n result.push(\n FormType.View(\n { View: new HtmlErrorMessageView({ message: loc(errorMessageKey, 'login') }) },\n { selector: '.o-form-error-container' }\n )\n );\n } else {\n result.push(\n FormType.View({\n View: View.extend({\n template: hbs(\n '\\\n
    \\\n

    {{i18n code=\"verify.u2f.instructions\" bundle=\"login\"}}

    \\\n

    {{i18n code=\"verify.u2f.instructionsBluetooth\" bundle=\"login\"}}

    \\\n
    \\\n
    '\n ),\n }),\n })\n );\n }\n\n if (this.options.appState.get('allowRememberDevice')) {\n result.push(\n FormType.Input({\n label: false,\n 'label-top': true,\n placeholder: this.options.appState.get('rememberDeviceLabel'),\n className: 'margin-btm-0',\n name: 'rememberDevice',\n type: 'checkbox',\n })\n );\n }\n\n return result;\n },\n\n postRender: function() {\n _.defer(() => {\n if (FidoUtil.isU2fAvailable()) {\n this.model.save();\n } else {\n this.$('[data-se=\"u2f-waiting\"]').addClass('hide');\n }\n });\n },\n\n _startEnrollment: function() {\n this.$('.okta-waiting-spinner').removeClass('hide');\n this.$('.o-form-button-bar').hide();\n },\n\n _stopEnrollment: function() {\n this.$('.okta-waiting-spinner').addClass('hide');\n this.$('.o-form-button-bar').show();\n },\n },\n\n back: function() {\n // Empty function on verify controllers to prevent users\n // from navigating back during 'verify' using the browser's\n // back button. The URL will still change, but the view will not\n // More details in OKTA-135060.\n },\n\n Footer: FooterMFA,\n});\n","/*!\n * Copyright (c) 2015-2016, 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 complexity:[2, 10], max-params: [2, 11] */\nimport { _, loc, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Q from 'q';\nimport CryptoUtil from 'util/CryptoUtil';\nimport Errors from 'util/Errors';\nimport FactorUtil from 'util/FactorUtil';\nimport FormController from 'util/FormController';\nimport FormType from 'util/FormType';\nimport webauthn from 'util/webauthn';\nimport BrowserFeatures from 'util/BrowserFeatures';\nimport HtmlErrorMessageView from 'views/mfa-verify/HtmlErrorMessageView';\nimport FooterMFA from 'views/shared/FooterMFA';\n\nfunction getAllowCredentials(factors) {\n const allowCredentials = [];\n\n _.each(factors, function(factor) {\n allowCredentials.push({\n type: 'public-key',\n id: CryptoUtil.strToBin(factor.profile.credentialId),\n });\n });\n return allowCredentials;\n}\n\nexport default FormController.extend({\n className: 'mfa-verify verify-webauthn',\n Model: {\n props: {\n rememberDevice: 'boolean',\n },\n\n initialize: function() {\n const rememberDevice = FactorUtil.getRememberDeviceValue(this.appState);\n\n // set the initial value for remember device (Cannot do this while defining the\n // local property because this.settings would not be initialized there yet).\n this.set('rememberDevice', rememberDevice);\n this.appState.on('factorSwitched signOut', () => {\n if (this.webauthnAbortController) {\n this.webauthnAbortController.abort();\n this.webauthnAbortController = null;\n }\n });\n },\n\n save: function() {\n this.trigger('request');\n\n return this.doTransaction(function(transaction) {\n let factor;\n\n if (transaction.factorTypes) {\n factor = _.findWhere(transaction.factorTypes, {\n factorType: 'webauthn',\n });\n } else {\n factor = _.findWhere(transaction.factors, {\n factorType: 'webauthn',\n provider: 'FIDO',\n });\n }\n\n const self = this;\n\n return factor.verify().then(function(transaction) {\n let allowCredentials;\n let challenge;\n\n if (transaction.factors) {\n const factors = transaction.factors;\n\n challenge = transaction.challenge;\n allowCredentials = getAllowCredentials(factors);\n } else {\n const factorData = transaction.factor;\n\n challenge = factorData.challenge;\n allowCredentials = getAllowCredentials([factorData]);\n }\n self.trigger('request');\n // verify via browser webauthn js\n\n const options = _.extend({}, challenge, {\n allowCredentials: allowCredentials,\n challenge: CryptoUtil.strToBin(challenge.challenge),\n });\n\n // AbortController is not supported in IE11\n // eslint-disable-next-line compat/compat\n self.webauthnAbortController = new AbortController();\n return new Q(\n // navigator.credentials is not supported in IE11\n // eslint-disable-next-line compat/compat\n navigator.credentials.get({\n publicKey: options,\n signal: self.webauthnAbortController.signal,\n })\n )\n .then(function(assertion) {\n const rememberDevice = !!self.get('rememberDevice');\n\n return factor.verify({\n clientData: CryptoUtil.binToStr(assertion.response.clientDataJSON),\n authenticatorData: CryptoUtil.binToStr(assertion.response.authenticatorData),\n signatureData: CryptoUtil.binToStr(assertion.response.signature),\n rememberDevice: rememberDevice,\n });\n })\n .catch(function(error) {\n self.trigger('errors:clear');\n // Do not display if it is abort error triggered by code when switching.\n // self.webauthnAbortController would be null if abort was triggered by code.\n if (!self.webauthnAbortController) {\n throw new Errors.WebauthnAbortError();\n } else {\n throw new Errors.WebAuthnError({\n xhr: { responseJSON: { errorSummary: error.message } },\n });\n }\n })\n .finally(function() {\n // unset webauthnAbortController on successful authentication or error\n self.webauthnAbortController = null;\n });\n });\n });\n },\n },\n\n Form: {\n autoSave: true,\n hasSavingState: false,\n title: _.partial(loc, 'factor.webauthn.biometric', 'login'),\n className: 'verify-webauthn-form',\n noCancelButton: true,\n save: _.partial(loc, 'mfa.challenge.verify', 'login'),\n noButtonBar: function() {\n return !webauthn.isNewApiAvailable();\n },\n modelEvents: {\n request: '_startEnrollment',\n error: '_stopEnrollment',\n },\n\n formChildren: function() {\n const children = [];\n\n if (webauthn.isNewApiAvailable()) {\n children.push(\n FormType.View({\n View: View.extend({\n template: hbs(\n '
    \\\n

    {{i18n code=\"verify.webauthn.biometric.instructions\" bundle=\"login\"}}

    \\\n
    \\\n
    '\n ),\n }),\n })\n );\n } else {\n let errorMessageKey = 'webauthn.biometric.error.factorNotSupported';\n\n if (this.options.appState.get('factors').length === 1) {\n errorMessageKey = 'webauthn.biometric.error.factorNotSupported.oneFactor';\n }\n children.push(\n FormType.View(\n { View: new HtmlErrorMessageView({ message: loc(errorMessageKey, 'login') }) },\n { selector: '.o-form-error-container' }\n )\n );\n }\n\n if (this.options.appState.get('allowRememberDevice')) {\n children.push(\n FormType.Input({\n label: false,\n 'label-top': true,\n placeholder: this.options.appState.get('rememberDeviceLabel'),\n className: 'margin-btm-0',\n name: 'rememberDevice',\n type: 'checkbox',\n })\n );\n }\n\n return children;\n },\n\n _startEnrollment: function() {\n this.$('.okta-waiting-spinner').show();\n this.$('.o-form-button-bar').hide();\n },\n\n _stopEnrollment: function() {\n this.$('.okta-waiting-spinner').hide();\n this.$('.o-form-button-bar [type=\"submit\"]')[0].value = loc('verify.u2f.retry', 'login');\n this.$('.o-form-button-bar').show();\n },\n },\n\n postRender: function() {\n _.defer(() => {\n // Trigger browser prompt automatically for other browsers for better UX.\n if (webauthn.isNewApiAvailable() && !BrowserFeatures.isSafari()) {\n this.model.save();\n }\n });\n },\n\n back: function() {\n // Empty function on verify controllers to prevent users\n // from navigating back during 'verify' using the browser's\n // back button. The URL will still change, but the view will not\n // More details in OKTA-135060.\n },\n\n Footer: FooterMFA,\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { _, loc } from 'okta';\nimport FormController from 'util/FormController';\nimport FormType from 'util/FormType';\nimport webauthn from 'util/webauthn';\nimport HtmlErrorMessageView from 'views/mfa-verify/HtmlErrorMessageView';\nimport FooterMFA from 'views/shared/FooterMFA';\nimport Spinner from 'views/shared/Spinner';\nexport default FormController.extend({\n className: 'mfa-verify verify-windows-hello',\n Model: {\n local: {\n __autoTriggered__: 'boolean',\n },\n\n save: function() {\n if (!webauthn.isAvailable()) {\n return;\n }\n\n this.trigger('request');\n const model = this;\n\n return this.doTransaction(function(transaction) {\n const factor = _.findWhere(transaction.factors, {\n factorType: 'webauthn',\n provider: 'FIDO',\n });\n\n return factor.verify().then(function(verifyData) {\n const factorData = verifyData.factor;\n\n return webauthn\n .getAssertion(factorData.challenge.nonce, [{ id: factorData.profile.credentialId }])\n .then(function(assertion) {\n return factor.verify({\n authenticatorData: assertion.authenticatorData,\n clientData: assertion.clientData,\n signatureData: assertion.signature,\n });\n })\n .then(function(data) {\n model.trigger('sync');\n model.trigger('signIn');\n return data;\n })\n .catch(function(error) {\n switch (error.message) {\n case 'AbortError':\n case 'NotFoundError':\n case 'NotSupportedError':\n model.trigger('abort', error.message);\n return transaction;\n }\n\n throw error;\n });\n });\n });\n },\n },\n\n Form: {\n autoSave: true,\n hasSavingState: false,\n title: _.partial(loc, 'factor.windowsHello', 'login'),\n subtitle: function() {\n return webauthn.isAvailable() ? loc('verify.windowsHello.subtitle', 'login') : '';\n },\n save: _.partial(loc, 'verify.windowsHello.save', 'login'),\n\n customSavingState: {\n stop: 'abort',\n },\n\n modelEvents: function() {\n if (!webauthn.isAvailable()) {\n return {};\n }\n\n return {\n request: '_startEnrollment',\n error: '_stopEnrollment',\n abort: '_stopEnrollment',\n signIn: '_successEnrollment',\n };\n },\n\n noButtonBar: function() {\n return !webauthn.isAvailable();\n },\n\n formChildren: function() {\n const result = [];\n\n if (!webauthn.isAvailable()) {\n result.push(\n FormType.View(\n { View: new HtmlErrorMessageView({ message: loc('enroll.windowsHello.error.notWindows', 'login') }) },\n { selector: '.o-form-error-container' }\n )\n );\n }\n\n result.push(FormType.View({ View: new Spinner({ model: this.model, visible: false }) }));\n\n return result;\n },\n\n postRender: function() {\n if (this.options.appState.get('factors').length === 1 && !this.model.get('__autoTriggered__')) {\n this.model.set('__autoTriggered__', true);\n this.model.save();\n }\n },\n\n _startEnrollment: function() {\n this.subtitle = loc('verify.windowsHello.subtitle.loading', 'login');\n\n this.model.trigger('spinner:show');\n this._resetErrorMessage();\n\n this.render();\n this.$('.o-form-button-bar').addClass('hide');\n },\n\n _stopEnrollment: function(errorMessage) {\n this.subtitle = loc('verify.windowsHello.subtitle', 'login');\n\n this.model.trigger('spinner:hide');\n this.$('.o-form-button-bar').removeClass('hide');\n\n let message;\n\n switch (errorMessage) {\n case 'NotFoundError':\n message = this.options.appState.get('factors').length > 1\n ? loc('verify.windowsHello.error.notFound.selectAnother', 'login')\n : loc('verify.windowsHello.error.notFound', 'login');\n break;\n\n case 'NotSupportedError':\n message = loc('enroll.windowsHello.error.notConfiguredHtml', 'login');\n break;\n }\n\n this._resetErrorMessage();\n\n if (message) {\n const messageView = new HtmlErrorMessageView({\n message: message,\n });\n\n this.$('.o-form-error-container').addClass('o-form-has-errors');\n this.add(messageView, { selector: '.o-form-error-container' });\n this._errorMessageView = this.last();\n }\n\n this.render();\n },\n\n _successEnrollment: function() {\n this.subtitle = this.settings.get('brandName')\n ? loc('verify.windowsHello.subtitle.signingIn.specific', 'login', [this.settings.get('brandName')])\n : loc('verify.windowsHello.subtitle.signingIn.generic', 'login');\n this.render();\n this.$('.o-form-button-bar').addClass('hide');\n },\n\n _resetErrorMessage: function() {\n this._errorMessageView && this._errorMessageView.remove();\n this._errorMessageView = undefined;\n this.clearErrors();\n },\n },\n\n back: function() {\n // Empty function on verify controllers to prevent users\n // from navigating back during 'verify' using the browser's\n // back button. The URL will still change, but the view will not\n // More details in OKTA-135060.\n },\n\n Footer: FooterMFA,\n});\n","// This is the primary export for the CommonJS module.\n// DO NOT CONVERT TO TYPESCRIPT - for backward compatibility we need to use `module.exports` not `export default`\n\nconst OktaSignIn = require('./widget/OktaSignIn').default;\n\nmodule.exports = OktaSignIn;\n","/*!\n * Copyright (c) 2015-2016, 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 { _, $, loc, Model } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Factor from 'models/Factor';\nimport Q from 'q';\nimport BrowserFeatures from 'util/BrowserFeatures';\nimport Errors from 'util/Errors';\nconst DEFAULT_APP_LOGO = '/img/logos/default.png';\n\n// Keep track of stateMachine with this special model. Some reasons to not\n// keep it generic:\n// 1. We know exactly what we're using appState for by requiring props\n// 2. Can have some derived functions to help us translate the lastAuthRes\n\nconst USER_NOT_SEEN_ON_DEVICE = '/img/security/unknown.png';\nconst UNDEFINED_USER = '/img/security/default.png';\nconst NEW_USER = '/img/security/unknown-device.png';\nconst NEW_USER_IMAGE_DESCRIPTION = '';\nconst UNDEFINED_USER_IMAGE_DESCRIPTION = '';\nconst UNKNOWN_IMAGE_DESCRIPTION = '';\nconst securityImageUrlTpl = hbs('{{baseUrl}}/login/getimage?username={{username}}');\n\nfunction getSecurityImage(baseUrl, username, deviceFingerprint) {\n // When the username is empty, we want to show the default image.\n if (_.isEmpty(username) || _.isUndefined(username)) {\n return Q({\n securityImage: UNDEFINED_USER,\n securityImageDescription: UNDEFINED_USER_IMAGE_DESCRIPTION,\n });\n }\n\n // Reserved characters in the username must be escaped before the query can be safely executed\n username = encodeURIComponent(username);\n const url = securityImageUrlTpl({ baseUrl: baseUrl, username: username });\n const data = {\n url: url,\n dataType: 'json',\n };\n\n if (deviceFingerprint) {\n data['headers'] = { 'X-Device-Fingerprint': deviceFingerprint };\n }\n return Q($.ajax(data)).then(function(res) {\n if (res.pwdImg === USER_NOT_SEEN_ON_DEVICE) {\n // When we get an unknown.png security image from OKTA,\n // we want to show the unknown-device security image.\n // We are mapping the server's img url to a new one because\n // we still need to support the original login page.\n return {\n securityImage: NEW_USER,\n securityImageDescription: NEW_USER_IMAGE_DESCRIPTION,\n };\n }\n return {\n securityImage: res.pwdImg,\n securityImageDescription: res.imageDescription || UNKNOWN_IMAGE_DESCRIPTION,\n };\n });\n}\n\nfunction getMinutesString(factorLifetimeInMinutes) {\n if (factorLifetimeInMinutes > 60 && factorLifetimeInMinutes <= 1440) {\n const lifetimeInHours = factorLifetimeInMinutes / 60;\n\n return loc('hours', 'login', [lifetimeInHours]);\n } else if (factorLifetimeInMinutes > 1440) {\n const lifetimeInDays = factorLifetimeInMinutes / 1440;\n\n return loc('days', 'login', [lifetimeInDays]);\n }\n //Use minutes as the time unit by default\n if (factorLifetimeInMinutes === 1) {\n return loc('minutes.oneMinute', 'login');\n }\n return loc('minutes', 'login', [factorLifetimeInMinutes]);\n}\n\nfunction getGracePeriodRemainingDays(gracePeriodEndDate) {\n const endDate = new Date(gracePeriodEndDate).getTime();\n const remainingDays = Math.floor((endDate - new Date().getTime()) / (1000 * 3600 * 24));\n\n return remainingDays;\n}\n\nfunction combineFactorsObjects(factorTypes, factors) {\n const addedFactorTypes = [];\n const combinedFactors = [];\n\n _.each(factors, function(factor) {\n const factorType = factor.factorType;\n\n if (!_.contains(addedFactorTypes, factorType)) {\n const factorTypeObj = _.findWhere(factorTypes, { factorType: factorType });\n\n if (factorTypeObj) {\n addedFactorTypes.push(factorType);\n combinedFactors.push(factorTypeObj);\n } else {\n combinedFactors.push(factor);\n }\n }\n });\n return combinedFactors;\n}\n\nexport default Model.extend({\n initialize: function() {\n // Handle this in initialize (as opposed to a derived property) because\n // the operation is asynchronous\n if (this.settings.get('features.securityImage')) {\n const self = this;\n\n this.listenTo(this, 'change:username', function(model, username) {\n getSecurityImage(this.get('baseUrl'), username, this.get('deviceFingerprint'))\n .then(function(image) {\n model.set('securityImage', image.securityImage);\n model.set('securityImageDescription', image.securityImageDescription);\n model.unset('deviceFingerprint'); //Fingerprint can only be used once\n })\n .fail(function(jqXhr) {\n // Only notify the consumer on a CORS error\n if (BrowserFeatures.corsIsNotEnabled(jqXhr)) {\n self.settings.callGlobalError(new Errors.UnsupportedBrowserError(loc('error.enabled.cors')));\n } else {\n throw jqXhr;\n }\n })\n .done();\n });\n }\n },\n\n local: {\n baseUrl: 'string',\n lastAuthResponse: ['object', true, {}],\n transaction: 'object',\n transactionError: 'object',\n username: 'string',\n factors: 'object',\n policy: 'object',\n securityImage: ['string', true, UNDEFINED_USER],\n securityImageDescription: ['string', true, UNDEFINED_USER_IMAGE_DESCRIPTION],\n userCountryCode: 'string',\n userPhoneNumber: 'string',\n factorActivationType: 'string',\n flashError: 'object',\n beaconType: 'string',\n deviceFingerprint: 'string', // valid only once\n typingPattern: 'string',\n // Note: languageCode is special in that it is shared between Settings\n // and AppState. Settings is the *configured* language, and is static.\n // AppState is the dynamic language state - it can be changed via a\n // language picker, etc.\n // Note: this is conceptial feasible but not yet being implemented.\n languageCode: ['string', true],\n disableUsername: ['boolean', false, false],\n trapMfaRequiredResponse: ['boolean', false, false],\n lastFailedChallengeFactorData: ['object', false],\n },\n\n setAuthResponse: function(res) {\n // Because of MFA_CHALLENGE (i.e. DUO), we need to remember factors\n // across auth responses. Not doing this, for example, results in being\n // unable to switch away from the duo factor dropdown.\n if (res._embedded && res._embedded.policy) {\n this.set('policy', res._embedded.policy);\n }\n\n if (res._embedded && res._embedded.factors) {\n let factors = res._embedded.factors;\n\n if (res._embedded.factorTypes) {\n factors = combineFactorsObjects(res._embedded.factorTypes, factors);\n }\n\n const factorsObject = _.map(factors, factor => {\n factor.settings = this.settings;\n factor.appState = this;\n return factor;\n });\n\n this.set('factors', new Factor.Collection(factorsObject, { parse: true }));\n }\n\n this.set('lastAuthResponse', res);\n },\n\n clearLastAuthResponse: function() {\n this.set('lastAuthResponse', {});\n },\n\n setLastFailedChallengeFactorData: function() {\n this.set('lastFailedChallengeFactorData', {\n factor: this.get('factor'),\n errorMessage: this.get('factorResultErrorMessage'),\n });\n },\n\n clearLastFailedChallengeFactorData: function() {\n this.unset('lastFailedChallengeFactorData');\n },\n\n getUser: function() {\n return this.get('user');\n },\n\n derived: {\n isSuccessResponse: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.status === 'SUCCESS';\n },\n },\n isMfaRequired: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.status === 'MFA_REQUIRED' || res.status === 'FACTOR_REQUIRED';\n },\n },\n isProfileRequired: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.status === 'PROFILE_REQUIRED';\n },\n },\n isMfaEnroll: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.status === 'MFA_ENROLL' || res.status === 'FACTOR_ENROLL';\n },\n },\n isMfaChallenge: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.status === 'MFA_CHALLENGE' || res.status === 'FACTOR_CHALLENGE';\n },\n },\n isSMSPasswordRecovery: {\n deps: ['lastAuthResponse'],\n fn: function({ status, factorType, recoveryType }) {\n return status === 'RECOVERY_CHALLENGE' &&\n factorType?.toLowerCase() === 'sms' &&\n recoveryType?.toLowerCase() === 'password';\n }\n },\n isUnauthenticated: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.status === 'UNAUTHENTICATED';\n },\n },\n isMfaRejected: {\n // MFA failures are usually error responses\n // except in the case of Okta Push, when a\n // user clicks 'deny' on his phone or OV app\n // version is below a required version no.\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.factorResult === 'REJECTED';\n },\n },\n isMfaTimeout: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.factorResult === 'TIMEOUT';\n },\n },\n isMfaEnrollActivate: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.status === 'MFA_ENROLL_ACTIVATE' || res.status === 'FACTOR_ENROLL_ACTIVATE';\n },\n },\n isWaitingForActivation: {\n deps: ['isMfaEnrollActivate', 'lastAuthResponse'],\n fn: function(isMfaEnrollActivate, res) {\n return isMfaEnrollActivate && res.factorResult === 'WAITING';\n },\n },\n isWaitingForNumberChallenge: {\n deps: ['lastAuthResponse', 'isMfaChallenge'],\n fn: function(res, isMfaChallenge) {\n if (\n isMfaChallenge &&\n res &&\n res.factorResult === 'WAITING' &&\n res._embedded &&\n res._embedded.factor &&\n res._embedded.factor._embedded &&\n res._embedded.factor._embedded.challenge\n ) {\n return true;\n }\n return false;\n },\n },\n hasMultipleFactorsAvailable: {\n deps: ['factors', 'isMfaRequired', 'isMfaChallenge', 'isUnauthenticated'],\n fn: function(factors, isMfaRequired, isMfaChallenge, isUnauthenticated) {\n if (!isMfaRequired && !isMfaChallenge && !isUnauthenticated) {\n return false;\n }\n return factors && factors.length > 1;\n },\n },\n promptForFactorInUnauthenticated: {\n deps: ['lastAuthResponse', 'factors'],\n fn: function(res, factors) {\n if (res.status !== 'UNAUTHENTICATED') {\n return false;\n }\n return factors && factors.length > 0;\n },\n },\n userId: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._embedded || !res._embedded.user) {\n return null;\n }\n return res._embedded.user.id;\n },\n },\n isIdxStateToken: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res && _.isString(res.stateToken) && res.stateToken.startsWith('01');\n },\n },\n isPwdExpiringSoon: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.status === 'PASSWORD_WARN';\n },\n },\n passwordExpireDays: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._embedded || !res._embedded.policy || !res._embedded.policy.expiration) {\n return null;\n }\n return res._embedded.policy.expiration.passwordExpireDays;\n },\n },\n isPwdManagedByOkta: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._links || !res._links.next || !res._links.next.title) {\n return true;\n }\n return false;\n },\n },\n passwordExpiredWebsiteName: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._links || !res._links.next || !res._links.next.title) {\n return null;\n }\n return res._links.next.title;\n },\n },\n passwordExpiredLinkUrl: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._links || !res._links.next || !res._links.next.title || !res._links.next.href) {\n return null;\n }\n return res._links.next.href;\n },\n },\n recoveryType: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.recoveryType;\n },\n },\n factorType: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.factorType;\n },\n },\n factor: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._embedded || !res._embedded.factor) {\n return null;\n }\n return res._embedded.factor;\n },\n },\n activatedFactorId: {\n deps: ['factor'],\n fn: function(factor) {\n return factor ? factor.id : null;\n },\n },\n activatedFactorType: {\n deps: ['factor'],\n fn: function(factor) {\n return factor ? factor.factorType : null;\n },\n },\n activatedFactorProvider: {\n deps: ['factor'],\n fn: function(factor) {\n return factor ? factor.provider : null;\n },\n },\n qrcode: {\n deps: ['factor'],\n fn: function(factor) {\n try {\n return factor._embedded.activation._links.qrcode.href;\n } catch (err) {\n return null;\n }\n },\n },\n activationSendLinks: {\n deps: ['factor'],\n fn: function(factor) {\n let sendLinks;\n\n try {\n sendLinks = factor._embedded.activation._links.send;\n } catch (err) {\n sendLinks = [];\n }\n return sendLinks;\n },\n },\n textActivationLinkUrl: {\n deps: ['activationSendLinks'],\n fn: function(activationSendLinks) {\n const item = _.findWhere(activationSendLinks, { name: 'sms' });\n\n return item ? item.href : null;\n },\n },\n emailActivationLinkUrl: {\n deps: ['activationSendLinks'],\n fn: function(activationSendLinks) {\n const item = _.findWhere(activationSendLinks, { name: 'email' });\n\n return item ? item.href : null;\n },\n },\n sharedSecret: {\n deps: ['factor'],\n fn: function(factor) {\n try {\n return factor._embedded.activation.sharedSecret;\n } catch (err) {\n return null;\n }\n },\n },\n duoEnrollActivation: {\n deps: ['factor'],\n fn: function(factor) {\n if (!factor || !factor._embedded || !factor._embedded.activation) {\n return null;\n }\n return factor._embedded.activation;\n },\n },\n prevLink: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (res._links && res._links.prev) {\n return res._links.prev.href;\n }\n return null;\n },\n },\n skipLink: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (res._links && res._links.skip) {\n return res._links.skip.href;\n }\n return null;\n },\n },\n gracePeriodRemainingDays: {\n deps: ['policy'],\n fn: function(policy) {\n if (policy && policy.gracePeriod && policy.gracePeriod.endDate) {\n return getGracePeriodRemainingDays(policy.gracePeriod.endDate);\n }\n return null;\n },\n },\n user: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._embedded || !res._embedded.user) {\n return null;\n }\n return res._embedded.user;\n },\n },\n recoveryQuestion: {\n deps: ['user'],\n fn: function(user) {\n if (!user || !user.recovery_question) {\n return null;\n }\n return user.recovery_question.question;\n },\n },\n userProfile: {\n deps: ['user'],\n fn: function(user) {\n if (!user || !user.profile) {\n return null;\n }\n return user.profile;\n },\n },\n userConsentName: {\n deps: ['userProfile', 'username'],\n fn: function(userProfile, username) {\n if (!userProfile || _.isEmpty(userProfile.firstName)) {\n return username;\n }\n if (_.isEmpty(userProfile.lastName)) {\n return userProfile.firstName;\n }\n return userProfile.firstName + ' ' + userProfile.lastName.charAt(0) + '.';\n },\n },\n userEmail: {\n deps: ['userProfile'],\n fn: function(userProfile) {\n if (!userProfile || !userProfile.login) {\n return null;\n }\n return userProfile.login;\n },\n },\n userFullName: {\n deps: ['userProfile'],\n fn: function(userProfile) {\n if (!userProfile || (!userProfile.firstName && !userProfile.lastName)) {\n return '';\n }\n return userProfile.firstName + ' ' + userProfile.lastName;\n },\n },\n defaultAppLogo: {\n deps: ['baseUrl'],\n fn: function(baseUrl) {\n return baseUrl + DEFAULT_APP_LOGO;\n },\n },\n expiresAt: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.expiresAt;\n },\n },\n target: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._embedded) {\n return null;\n }\n return res._embedded.target;\n },\n },\n targetLabel: {\n deps: ['target'],\n fn: function(target) {\n if (!target) {\n return null;\n }\n return target.label;\n },\n },\n targetLogo: {\n deps: ['target'],\n fn: function(target) {\n if (!target || !target._links) {\n return null;\n }\n return target._links.logo;\n },\n },\n targetTermsOfService: {\n deps: ['target'],\n fn: function(target) {\n if (!target || !target._links) {\n return null;\n }\n return target._links['terms-of-service'];\n },\n },\n targetPrivacyPolicy: {\n deps: ['target'],\n fn: function(target) {\n if (!target || !target._links) {\n return null;\n }\n return target._links['privacy-policy'];\n },\n },\n targetClientURI: {\n deps: ['target'],\n fn: function(target) {\n if (!target || !target._links) {\n return null;\n }\n return target._links['client-uri'];\n },\n },\n scopes: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._embedded) {\n return null;\n }\n return res._embedded.scopes;\n },\n },\n issuer: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res?._embedded?.authentication?.issuer?.uri;\n }\n },\n hasExistingPhones: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._embedded || !res._embedded.factors) {\n return false;\n }\n const factors = res._embedded.factors;\n\n const factor = _.findWhere(factors, { factorType: 'sms', provider: 'OKTA' });\n\n if (!factor || !factor._embedded) {\n return false;\n }\n\n return !!factor._embedded.phones.length;\n },\n },\n hasExistingPhonesForCall: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._embedded || !res._embedded.factors) {\n return false;\n }\n const factors = res._embedded.factors;\n\n const factor = _.findWhere(factors, { factorType: 'call', provider: 'OKTA' });\n\n if (!factor || !factor._embedded) {\n return false;\n }\n\n return !!factor._embedded.phones.length;\n },\n },\n isUndefinedUser: {\n deps: ['securityImage'],\n fn: function(securityImage) {\n return securityImage === UNDEFINED_USER;\n },\n },\n isNewUser: {\n deps: ['securityImage'],\n fn: function(securityImage) {\n return securityImage === NEW_USER;\n },\n },\n allowRememberDevice: {\n deps: ['policy'],\n fn: function(policy) {\n return policy && policy.allowRememberDevice;\n },\n },\n rememberDeviceLabel: {\n deps: ['policy'],\n fn: function(policy) {\n if (policy && policy.rememberDeviceLifetimeInMinutes > 0) {\n const timeString = getMinutesString(policy.rememberDeviceLifetimeInMinutes);\n\n return loc('rememberDevice.timebased', 'login', [timeString]);\n } else if (policy && policy.rememberDeviceLifetimeInMinutes === 0) {\n return loc('rememberDevice.devicebased', 'login');\n }\n return loc('rememberDevice', 'login');\n },\n },\n rememberDeviceByDefault: {\n deps: ['policy'],\n fn: function(policy) {\n return policy && policy.rememberDeviceByDefault;\n },\n },\n factorsPolicyInfo: {\n deps: ['policy'],\n fn: function(policy) {\n return policy && policy.factorsPolicyInfo ? policy.factorsPolicyInfo : null;\n },\n },\n verifyCustomFactorRedirectUrl: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._links || !res._links.next || res._links.next.name !== 'redirect' || !res._links.next.href) {\n return null;\n }\n return res._links.next.href;\n },\n },\n enrollCustomFactorRedirectUrl: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._links || !res._links.next || res._links.next.name !== 'activate' || !res._links.next.href) {\n return null;\n }\n return res._links.next.href;\n },\n },\n isFactorResultFailed: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.factorResult === 'FAILED';\n },\n },\n factorResultErrorMessage: {\n deps: ['lastAuthResponse', 'isFactorResultFailed'],\n fn: function(res, isFactorResultFailed) {\n if (isFactorResultFailed) {\n return res.factorResultMessage || loc('oform.error.unexpected', 'login');\n }\n return null;\n },\n },\n deviceActivationStatus: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._embedded) {\n return null;\n }\n return res._embedded.deviceActivationStatus;\n },\n },\n usingDeviceFlow: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return !!(res._embedded && res._embedded.usingDeviceFlow);\n },\n },\n userCode: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res?._embedded?.userCode;\n },\n },\n },\n\n parse: function(options) {\n this.settings = options.settings;\n return _.extend(_.omit(options, 'settings'), {\n languageCode: this.settings.get('languageCode'),\n userCountryCode: this.settings.get('countryCode'),\n });\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { _, Model } from 'okta';\nimport Q from 'q';\nimport Enums from 'util/Enums';\nconst KNOWN_ERRORS = ['OAuthError', 'AuthSdkError', 'AuthPollStopError', 'AuthApiError'];\nexport default Model.extend({\n // May return either a \"standard\" promise or a Q promise\n doTransaction: function(fn, rethrow) {\n const self = this;\n\n return fn\n .call(this, this.appState.get('transaction'))\n .then(function(trans) {\n self.trigger('setTransaction', trans);\n return trans;\n })\n .catch(function(err) {\n // Q may still consider AuthPollStopError to be unhandled\n if (\n err.name === 'AuthPollStopError' ||\n err.name === Enums.AUTH_STOP_POLL_INITIATION_ERROR ||\n err.name === Enums.WEBAUTHN_ABORT_ERROR\n ) {\n return;\n }\n self.trigger('error', self, err.xhr);\n self.trigger('setTransactionError', err);\n if (rethrow || _.indexOf(KNOWN_ERRORS, err.name) === -1) {\n throw err;\n }\n });\n },\n\n manageTransaction: function(fn) {\n const self = this;\n const res = fn.call(this, this.appState.get('transaction'), _.bind(this.setTransaction, this));\n\n // If it's a promise, listen for failures\n if (Q.isPromiseAlike(res)) {\n return res.catch(function(err) {\n if (\n err.name === 'AuthPollStopError' ||\n err.name === Enums.AUTH_STOP_POLL_INITIATION_ERROR ||\n err.name === Enums.WEBAUTHN_ABORT_ERROR\n ) {\n return;\n }\n self.trigger('error', self, err.xhr);\n self.trigger('setTransactionError', err);\n });\n }\n\n return Q.resolve(res);\n },\n\n startTransaction: function(fn) {\n const self = this;\n const res = fn.call(this, this.settings.getAuthClient());\n\n // If it's a promise, then chain to it\n if (Q.isPromiseAlike(res)) {\n return res\n .then(function(trans) {\n self.trigger('setTransaction', trans);\n return trans;\n })\n .catch(function(err) {\n self.trigger('error', self, err.xhr);\n self.trigger('setTransactionError', err);\n throw err;\n });\n }\n\n return Q.resolve(res);\n },\n\n setTransaction: function(trans) {\n this.appState.set('transaction', trans);\n },\n});\n","/*!\n * Copyright (c) 2019, 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 { _, loc } from 'okta';\nimport BaseLoginModel from './BaseLoginModel';\nexport default BaseLoginModel.extend({\n initialize: function(options) {\n this.options = options || {};\n this.appState = this.options.appState;\n },\n constructPostData: function(profileAttributes) {\n const postData = {\n registration: {\n profile: profileAttributes,\n },\n };\n\n // send createNewAccount flag for new user creation\n if (this.appState.get('policy').registration.createNewAccount) {\n postData.registration['createNewAccount'] = true;\n }\n return postData;\n },\n getEnrollFormData: function() {\n return this.manageTransaction(function(transaction, setTransaction) {\n return transaction.enroll().then(function(trans) {\n setTransaction(trans);\n });\n });\n },\n save: function() {\n let data = BaseLoginModel.prototype.toJSON.apply(this, arguments);\n\n data = _.omit(data, ['appState', 'settings', 'createNewAccount']);\n if (_.isEmpty(data)) {\n const error = {\n errorSummary: loc('oform.errorbanner.title', 'login'),\n };\n\n this.trigger('error', this, {\n responseJSON: error,\n });\n } else {\n return this.manageTransaction(function(transaction, setTransaction) {\n transaction.enroll(this.constructPostData(data)).then(function(trans) {\n setTransaction(trans);\n });\n });\n }\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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: [2, 13] */\nimport { _, loc, Collection } from 'okta';\nimport Q from 'q';\nimport Errors from 'util/Errors';\nimport factorUtil from 'util/FactorUtil';\nimport Util from 'util/Util';\nimport BaseLoginModel from './BaseLoginModel';\nconst PUSH_INTERVAL = 4000;\n\n// Avoid setting interval to same value as keep-alive time (5 seconds) because it\n// caused an occasional issue with network connection lost errors in Safari and IE\n\nconst FactorFactor = BaseLoginModel.extend({\n extraProperties: true,\n flat: false,\n\n props: {\n id: 'string',\n factorType: {\n type: 'string',\n values: [\n 'sms',\n 'call',\n 'email',\n 'token',\n 'token:software:totp',\n 'token:hotp',\n 'token:hardware',\n 'question',\n 'push',\n 'u2f',\n 'password',\n 'assertion:saml2',\n 'assertion:oidc',\n 'claims_provider',\n 'webauthn',\n ],\n },\n provider: {\n type: 'string',\n values: [\n 'OKTA',\n 'RSA',\n 'DEL_OATH',\n 'SYMANTEC',\n 'GOOGLE',\n 'YUBICO',\n 'FIDO',\n 'CUSTOM',\n 'GENERIC_SAML',\n 'GENERIC_OIDC',\n ],\n },\n enrollment: {\n type: 'string',\n values: ['OPTIONAL', 'REQUIRED'],\n },\n status: {\n type: 'string',\n values: ['NOT_SETUP', 'ACTIVE'],\n },\n profile: ['object'],\n vendorName: 'string',\n policy: ['object'],\n profiles: ['object'],\n },\n\n local: {\n answer: 'string',\n password: 'string',\n backupFactor: 'object',\n showAnswer: 'boolean',\n rememberDevice: 'boolean',\n autoPush: ['boolean', true, false],\n },\n\n derived: {\n isOktaFactor: {\n deps: ['provider'],\n fn: function(provider) {\n return provider === 'OKTA';\n },\n },\n factorName: {\n deps: ['provider', 'factorType'],\n fn: factorUtil.getFactorName,\n },\n factorLabel: {\n deps: ['provider', 'factorType', 'vendorName'],\n fn: function(provider, factorType, vendorName) {\n if (_.contains(['DEL_OATH', 'GENERIC_SAML', 'GENERIC_OIDC', 'CUSTOM'], provider)) {\n return vendorName;\n }\n return factorUtil.getFactorLabel.apply(this, [provider, factorType]);\n },\n },\n factorDescription: {\n deps: ['provider', 'factorType'],\n fn: factorUtil.getFactorDescription,\n },\n sortOrder: {\n deps: ['provider', 'factorType'],\n fn: factorUtil.getFactorSortOrder,\n },\n iconClassName: {\n deps: ['provider', 'factorType'],\n fn: factorUtil.getFactorIconClassName,\n },\n securityQuestion: {\n deps: ['profile', 'factorType'],\n fn: function(profile, factorType) {\n if (factorType !== 'question') {\n return null;\n }\n return profile && factorUtil.getSecurityQuestionLabel(profile);\n },\n },\n phoneNumber: {\n deps: ['profile', 'factorType'],\n fn: function(profile, factorType) {\n if (_.contains(['sms', 'call'], factorType)) {\n return profile && profile.phoneNumber;\n }\n return null;\n },\n },\n email: {\n deps: ['profile', 'factorType'],\n fn: function(profile, factorType) {\n if (factorType === 'email') {\n return profile && profile.email;\n }\n return null;\n },\n },\n deviceName: {\n deps: ['profile', 'factorType'],\n fn: function(profile, factorType) {\n if (factorType !== 'push') {\n return null;\n }\n return profile && profile.name;\n },\n },\n enrolled: {\n deps: ['status'],\n fn: function(status) {\n return status === 'ACTIVE';\n },\n },\n cardinality: {\n deps: ['policy', 'profiles'],\n fn: function(policy, profiles) {\n if (profiles && profiles.length > 0) {\n const profile = profiles[0];\n //assume for now we only get one profile (multiple profiles are not supported yet)\n\n const enrolled = profile._embedded.enrolledFactors.length;\n\n const adoption = _.findWhere(profile._embedded.features, { type: 'adoption' });\n\n if (adoption && adoption.cardinality) {\n return {\n enrolled: enrolled,\n minimum: adoption.cardinality.min,\n maximum: adoption.cardinality.max,\n };\n }\n return false;\n } else if (policy && policy.enrollment) {\n return policy.enrollment;\n } else {\n return false;\n }\n },\n },\n additionalEnrollment: {\n deps: ['cardinality'],\n fn: function(cardinality) {\n if (cardinality) {\n return cardinality.enrolled !== 0 && cardinality.enrolled < cardinality.maximum;\n } else {\n return false;\n }\n },\n },\n required: {\n deps: ['enrollment'],\n fn: function(enrollment) {\n return enrollment === 'REQUIRED';\n },\n },\n canUseResend: {\n deps: ['provider', 'factorType'],\n fn: function(provider, factorType) {\n // Only push, sms and call have resend links.\n return provider === 'OKTA' && _.contains(['push', 'sms', 'call', 'email'], factorType);\n },\n },\n isAnswerRequired: {\n deps: ['factorType'],\n fn: function(factorType) {\n return _.contains(['sms', 'call', 'email', 'token', 'token:software:totp', 'question'], factorType);\n },\n },\n isFactorTypeVerification: {\n deps: ['provider', 'id'],\n fn: function(provider, id) {\n return provider === undefined && id === undefined;\n },\n },\n },\n\n parse: function(attributes) {\n this.settings = attributes.settings;\n this.appState = attributes.appState;\n // set the initial value for remember device.\n attributes.rememberDevice = factorUtil.getRememberDeviceValue(this.appState);\n\n // Add vendorname for custom totp enroll\n this.setCustomHotpVendorName(attributes);\n return _.omit(attributes, ['settings', 'appState']);\n },\n\n validate: function() {\n if (this.get('isAnswerRequired') && !this.get('answer')) {\n return { answer: loc('model.validation.field.blank') };\n } else if (this.get('factorType') === 'password' && !this.get('password')) {\n return { password: loc('error.password.required') };\n }\n },\n needsPasscode: function() {\n // we don't need passcode for email with magic link flow\n return !(this.options.appState.get('isIdxStateToken') && this.get('factorType') === 'email');\n },\n resend: function() {\n this.trigger('form:clear-errors');\n return this.manageTransaction(function(transaction) {\n const firstLink = transaction.data._links.resend[0];\n\n return transaction.resend(firstLink.name);\n });\n },\n\n save: function() {\n const rememberDevice = !!this.get('rememberDevice');\n const self = this;\n // Set/Remove the remember device cookie based on the remember device input.\n\n return this.manageTransaction(function(transaction, setTransaction) {\n const data = {\n rememberDevice: rememberDevice,\n };\n\n if (this.get('factorType') === 'question') {\n data.answer = this.get('answer');\n } else if (this.get('factorType') === 'password') {\n data.password = this.get('password');\n } else if (this.needsPasscode()) {\n data.passCode = this.get('answer');\n }\n\n if (this.pushFactorHasAutoPush()) {\n data.autoPush = this.get('autoPush');\n }\n\n let promise;\n\n // MFA_REQUIRED, FACTOR_REQUIRED or UNAUTHENTICATED with factors (passwordlessAuth)\n if (\n transaction.status === 'MFA_REQUIRED' ||\n transaction.status === 'FACTOR_REQUIRED' ||\n this.appState.get('promptForFactorInUnauthenticated')\n ) {\n const factor = this._findFactor(transaction);\n\n promise = factor.verify(data);\n } else if (this.get('canUseResend') && !this.get('answer') && transaction.resend) {\n // MFA_CHALLENGE/ FACTOR_CHALLENGE\n const firstLink = transaction.data._links.resend[0];\n\n promise = transaction.resend(firstLink.name);\n } else {\n promise = transaction.verify(data);\n }\n //the 'save' event here is triggered and used in the BaseLoginController\n //to disable the primary button on the factor form\n this.trigger('save');\n\n return promise.then(function(trans) {\n const options = {\n delay: PUSH_INTERVAL,\n transactionCallBack: transaction => {\n self.options.appState.set('lastAuthResponse', transaction);\n },\n };\n\n setTransaction(trans);\n // In Okta verify case we initiate poll.\n if ((trans.status === 'MFA_CHALLENGE' && trans.poll) || (trans.status === 'FACTOR_CHALLENGE' && trans.poll)) {\n const deferred = Q.defer();\n const initiatePollTimout = Util.callAfterTimeout(deferred.resolve, PUSH_INTERVAL);\n self.listenToOnce(self.options.appState, 'factorSwitched', () => {\n clearTimeout(initiatePollTimout);\n deferred.reject(new Errors.AuthStopPollInitiationError());\n });\n return deferred.promise.then(function() {\n // Stop listening if factor was not switched before poll.\n self.stopListening(self.options.appState, 'factorSwitched');\n if (self.pushFactorHasAutoPush()) {\n options.autoPush = function() {\n return self.get('autoPush');\n };\n options.rememberDevice = function() {\n return self.get('rememberDevice');\n };\n }\n return trans.poll(options).then(function(trans) {\n self.options.appState.set('lastAuthResponse', trans.data);\n setTransaction(trans);\n });\n });\n }\n });\n });\n },\n\n _findFactor: function(transaction) {\n let factor;\n\n if (transaction.factorTypes) {\n factor = _.findWhere(transaction.factorTypes, {\n factorType: this.get('factorType'),\n });\n }\n if (!factor) {\n factor = _.findWhere(transaction.factors, {\n id: this.get('id'),\n });\n }\n return factor;\n },\n\n pushFactorHasAutoPush: function() {\n return this.settings.get('features.autoPush') && this.get('factorType') === 'push';\n },\n\n setCustomHotpVendorName: function(attributes) {\n // If factor is token:hotp and not enrolled, we assume the first profile is the default.\n // If factor is enrolled, we only support one profile to be enrolled, so find that one\n // and display as enrolled profile. We do this by populating profile name in vendorName.\n if (attributes.factorType === 'token:hotp' && attributes.profiles) {\n if (attributes.status === 'NOT_SETUP') {\n attributes.vendorName = attributes.profiles[0].name;\n } else if (attributes.status === 'ACTIVE') {\n const enrolledProfiles = attributes.profiles.filter(profile => {\n return profile._embedded.enrolledFactors.length > 0;\n });\n attributes.vendorName = enrolledProfiles[0].name;\n }\n }\n return attributes;\n },\n});\nconst FactorFactors = Collection.extend({\n model: FactorFactor,\n comparator: 'sortOrder',\n\n // One override necessary here - When Okta Verify OTP and Push are in the list,\n // they are presented in the view as one factor - in the beacon menu,\n // there's only one option (Okta Verify), and we show a form with Push\n // with an inline totp option. What we need to do is to add totp\n // as a \"backupFactor\" for push\n parse: function(factors) {\n // Keep a track of the last used factor, since\n // we need it to determine the default factor.\n this.lastUsedFactor = factors[0];\n\n const oktaPushFactor = _.findWhere(factors, { provider: 'OKTA', factorType: 'push' });\n\n let totpFactor;\n\n if (_.where(factors, { factorType: 'push' }).length > 1) {\n totpFactor = _.findWhere(factors, { factorType: 'token:software:totp' });\n } else {\n totpFactor = _.findWhere(factors, { provider: 'OKTA', factorType: 'token:software:totp' });\n }\n if (!oktaPushFactor || !totpFactor) {\n return factors;\n }\n\n const isTotpFirst = totpFactor === factors[0];\n\n const parsedFactors = _.reduce(\n factors,\n function(memo, factor) {\n const isOkta = factor.provider === 'OKTA';\n const isOktaTotp = isOkta && factor.factorType === 'token:software:totp';\n const isOktaPush = isOkta && factor.factorType === 'push';\n const notEnrolled = factor.status !== 'ACTIVE';\n const hideOktaTotp = isOktaTotp && (notEnrolled || oktaPushFactor.status === 'ACTIVE');\n const hideOktaPush = isOktaPush && notEnrolled && totpFactor.status === 'ACTIVE';\n\n if (hideOktaTotp || hideOktaPush) {\n return memo;\n }\n\n if (isOktaPush) {\n factor.backupFactor = new FactorFactor(totpFactor, { parse: true });\n }\n memo.push(factor);\n return memo;\n },\n []\n );\n\n // Use push factor instead of TOTP, if TOTP is first in the list\n // (since it is stored as backupFactor for push).\n if (isTotpFirst) {\n this.lastUsedFactor = oktaPushFactor;\n }\n\n return parsedFactors;\n },\n\n // Will need to update this to use HAL link to get last used factor:\n // https://oktainc.atlassian.net/browse/OKTA-58380\n // However, current code returns last used factor as first factor in list.\n // Also, will need to add priority - i.e. if they do not have a last used\n // factor, should try Okta Verify, then Okta SMS, etc.\n getDefaultFactor: function() {\n const factor = _.pick(this.lastUsedFactor, 'factorType', 'provider');\n\n return this.findWhere(factor);\n },\n\n getFirstUnenrolledRequiredFactor: function() {\n return this.findWhere({ required: true, enrolled: false });\n },\n\n _getFactorsOfType: function(factorType) {\n return this.where({ factorType: factorType });\n },\n\n getFactorIndex: function(factorType, factorId) {\n return this._getFactorsOfType(factorType).findIndex(function(factor) {\n return factor.get('id') === factorId;\n });\n },\n\n hasMultipleFactorsOfSameType: function(factorType) {\n return this._getFactorsOfType(factorType).length > 1;\n },\n\n getFactorByTypeAndIndex: function(factorType, factorIndex) {\n return this._getFactorsOfType(factorType)[factorIndex];\n },\n});\nexport default {\n Model: FactorFactor,\n Collection: FactorFactors,\n};\n","/*!\n * Copyright (c) 2015-2017, 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 PrimaryAuthModel from 'models/PrimaryAuth';\nimport CookieUtil from 'util/CookieUtil';\nimport Enums from 'util/Enums';\nimport Util from 'util/Util';\nexport default PrimaryAuthModel.extend({\n props: function() {\n const cookieUsername = CookieUtil.getCookieUsername();\n const properties = this.getUsernameAndRemember(cookieUsername);\n\n return {\n username: ['string', true, properties.username],\n lastUsername: ['string', false, cookieUsername],\n context: ['object', false],\n remember: ['boolean', true, properties.remember],\n };\n },\n\n local: {},\n\n save: function() {\n const username = this.settings.transformUsername(this.get('username'), Enums.IDP_DISCOVERY);\n const remember = this.get('remember');\n const lastUsername = this.get('lastUsername');\n const resource = 'okta:acct:' + username;\n const requestContext = this.get('requestContext');\n\n this.setUsernameCookie(username, remember, lastUsername);\n\n //the 'save' event here is triggered and used in the BaseLoginController\n //to disable the primary button\n this.trigger('save');\n\n this.appState.trigger('loading', true);\n\n const webfingerArgs = {\n resource: resource,\n requestContext: requestContext,\n };\n const authClient = this.appState.settings.authClient;\n\n authClient\n .webfinger(webfingerArgs)\n .then(res => {\n if (res && res.links && res.links[0]) {\n if (res.links[0].properties['okta:idp:type'] === 'OKTA') {\n this.trigger('goToPrimaryAuth');\n } else if (res.links[0].href) {\n const redirectFn = res.links[0].href.includes('OKTA_INVALID_SESSION_REPOST%3Dtrue')\n ? Util.redirectWithFormGet.bind(Util)\n : this.settings.get('redirectUtilFn');\n //override redirectFn to only use Util.redirectWithFormGet if OKTA_INVALID_SESSION_REPOST is included\n //it will be encoded since it will be included in the encoded fromURI\n\n redirectFn(res.links[0].href);\n }\n }\n })\n .catch(() => {\n this.trigger('error');\n // Specific event handled by the Header for the case where the security image is not\n // enabled and we want to show a spinner. (Triggered only here and handled only by Header).\n this.appState.trigger('removeLoading');\n CookieUtil.removeUsernameCookie();\n })\n .finally(() => {\n this.appState.trigger('loading', false);\n });\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { Model } from 'okta';\nimport BaseLoginModel from './BaseLoginModel';\nexport default BaseLoginModel.extend({\n constructor: function(options) {\n this.settings = options && options.settings;\n Model.apply(this, arguments);\n },\n loginWithActivationToken: function(activationToken) {\n return this.startTransaction(function(authClient) {\n return authClient.signInWithCredentials({ token: activationToken });\n });\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { _, loc, Model } from 'okta';\nimport CookieUtil from 'util/CookieUtil';\nimport Enums from 'util/Enums';\nimport BaseLoginModel from './BaseLoginModel';\n\nexport default BaseLoginModel.extend({\n props: function() {\n const cookieUsername = CookieUtil.getCookieUsername();\n const properties = this.getUsernameAndRemember(cookieUsername);\n const props = {\n username: {\n type: 'string',\n validate: function(value) {\n if (_.isEmpty(value)) {\n return loc('error.username.required', 'login');\n }\n },\n value: properties.username,\n },\n lastUsername: ['string', false, cookieUsername],\n context: ['object', false],\n remember: ['boolean', true, properties.remember],\n multiOptionalFactorEnroll: ['boolean', true],\n };\n\n if (!(this.settings && this.settings.get('features.passwordlessAuth'))) {\n props.password = {\n type: 'string',\n validate: function(value) {\n if (_.isEmpty(value)) {\n return loc('error.password.required', 'login');\n }\n },\n };\n }\n return props;\n },\n\n getUsernameAndRemember: function(cookieUsername) {\n const settingsUsername = this.settings && this.settings.get('username');\n const rememberMeEnabled = this.settings && this.settings.get('features.rememberMe');\n let remember = false;\n let username;\n\n if (settingsUsername) {\n username = settingsUsername;\n remember = rememberMeEnabled && username === cookieUsername;\n } else if (rememberMeEnabled && cookieUsername) {\n // Only respect the cookie if the feature is enabled.\n // Allows us to force prompting when necessary, e.g. SAML ForceAuthn\n username = cookieUsername;\n remember = true;\n }\n\n return {\n username: username,\n remember: remember,\n };\n },\n\n constructor: function(options) {\n this.settings = options && options.settings;\n this.appState = options && options.appState;\n Model.apply(this, arguments);\n this.listenTo(this, 'change:username', function(model, username) {\n this.set({ remember: username === this.get('lastUsername') });\n });\n },\n parse: function(options) {\n return _.omit(options, ['settings', 'appState']);\n },\n\n save: function() {\n const username = this.settings.transformUsername(this.get('username'), Enums.PRIMARY_AUTH);\n const remember = this.get('remember');\n const lastUsername = this.get('lastUsername');\n\n this.setUsernameCookie(username, remember, lastUsername);\n\n //the 'save' event here is triggered and used in the BaseLoginController\n //to disable the primary button on the primary auth form\n this.trigger('save');\n\n this.appState.trigger('loading', true);\n\n const signInArgs = this.getSignInArgs(username);\n let primaryAuthPromise;\n\n if (this.appState.get('isUnauthenticated')) {\n const authClient = this.appState.settings.authClient;\n\n // bootstrapped with stateToken\n if (this.appState.get('isIdxStateToken')) {\n // if its an idx stateToken, we send the parameter as identifier to login API\n primaryAuthPromise = this.doTransaction(function(transaction) {\n return this.doPrimaryAuth(authClient, signInArgs, transaction.login);\n });\n } else {\n primaryAuthPromise = this.doTransaction(function(transaction) {\n return this.doPrimaryAuth(authClient, signInArgs, transaction.authenticate);\n }, true);\n }\n } else {\n //normal username/password flow without stateToken\n primaryAuthPromise = this.startTransaction(function(authClient) {\n return this.doPrimaryAuth(authClient, signInArgs, _.bind(authClient.signInWithCredentials, authClient));\n });\n }\n\n return primaryAuthPromise\n .catch(() => {\n // Specific event handled by the Header for the case where the security image is not\n // enabled and we want to show a spinner. (Triggered only here and handled only by Header).\n this.appState.trigger('removeLoading');\n CookieUtil.removeUsernameCookie();\n })\n .finally(() => {\n this.appState.trigger('loading', false);\n });\n },\n\n getSignInArgs: function(username) {\n const multiOptionalFactorEnroll = this.get('multiOptionalFactorEnroll');\n const signInArgs = {};\n\n if (!this.settings.get('features.passwordlessAuth')) {\n signInArgs.password = this.get('password');\n }\n\n // if its an idx stateToken, we send the parameter as identifier to login API\n if (this.appState.get('isIdxStateToken')) {\n signInArgs.identifier = username;\n } else {\n //only post options param for non-idx flows\n signInArgs.username = username;\n signInArgs.options = {\n warnBeforePasswordExpired: true,\n multiOptionalFactorEnroll: multiOptionalFactorEnroll,\n };\n }\n return signInArgs;\n },\n\n setUsernameCookie: function(username, remember, lastUsername) {\n // Do not modify the cookie when feature is disabled, relevant for SAML ForceAuthn prompts\n if (this.settings.get('features.rememberMe')) {\n // Only delete the cookie if its owner says so. This allows other\n // users to log in on a one-off basis.\n if (!remember && lastUsername === username) {\n CookieUtil.removeUsernameCookie();\n } else if (remember) {\n CookieUtil.setUsernameCookie(username);\n }\n }\n },\n\n doPrimaryAuth: function(authClient, signInArgs, func) {\n const deviceFingerprintEnabled = this.settings.get('features.deviceFingerprinting');\n const typingPatternEnabled = this.settings.get('features.trackTypingPattern');\n\n // Add the custom header for fingerprint, typing pattern if needed, and then remove it afterwards\n // Since we only need to send it for primary auth\n if (deviceFingerprintEnabled && this.appState.get('deviceFingerprint')) {\n authClient.http.setRequestHeader('X-Device-Fingerprint', this.appState.get('deviceFingerprint'));\n }\n if (typingPatternEnabled && this.appState.get('typingPattern')) {\n authClient.http.setRequestHeader('X-Typing-Pattern', this.appState.get('typingPattern'));\n }\n\n const self = this;\n\n return func(signInArgs).finally(function() {\n if (deviceFingerprintEnabled) {\n authClient.http.setRequestHeader('X-Device-Fingerprint', undefined);\n self.appState.unset('deviceFingerprint'); //Fingerprint can only be used once\n }\n if (typingPatternEnabled) {\n authClient.http.setRequestHeader('X-Typing-Pattern', undefined);\n self.appState.unset('typingPattern');\n }\n });\n },\n});\n","/*!\n * Copyright (c) 2019, 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 { _, internal } from 'okta';\nlet { BaseSchema } = internal.models;\nexport default BaseSchema.Model.extend({\n expand: ['schema'],\n setFieldPlaceholder: function(formFields) {\n _.each(formFields, function(formField) {\n formField.title = formField.label;\n });\n return formFields;\n },\n initialize: function(options) {\n let profileAttributes = options.profileSchemaAttributes;\n\n profileAttributes = this.setFieldPlaceholder(profileAttributes);\n if (profileAttributes) {\n const userProfileSchema = {\n properties: {},\n };\n\n for (var i = 0; i < profileAttributes.length; i++) {\n const profileAttributeObject = profileAttributes[i];\n\n userProfileSchema.properties[profileAttributeObject.name] = profileAttributeObject;\n }\n this.parse.apply(this, [{ schema: userProfileSchema }]);\n }\n },\n});\n","/*!\n * Copyright (c) 2017, 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 { _, BaseModel, internal } from 'okta';\nlet { BaseSchema, SchemaProperty } = internal.models;\nconst RegistrationSchemaRegistrationSchemaPropertyCollection = SchemaProperty.Collection.extend({\n createModelProperties: function() {\n const modelProperties = SchemaProperty.Collection.prototype.createModelProperties.apply(this);\n\n _.each(\n modelProperties,\n function(modelProperty, name) {\n modelProperty.required = !!this.get(name).get('required');\n },\n this\n );\n return modelProperties;\n },\n});\nexport default BaseSchema.Model.extend({\n expand: ['schema'],\n\n constructor: function() {\n this.properties = new RegistrationSchemaRegistrationSchemaPropertyCollection();\n BaseModel.apply(this, arguments);\n },\n\n parse: function(resp) {\n const parseResponseData = resp => {\n const requireFields = resp.schema.required;\n\n if (_.isArray(requireFields)) {\n _.each(\n requireFields,\n function(requireField) {\n const field = this.properties.get(requireField);\n\n if (field) {\n field.set('required', true);\n }\n },\n this\n );\n }\n\n const fieldOrderIds = resp.schema.fieldOrder;\n\n if (_.isArray(fieldOrderIds)) {\n _.each(\n fieldOrderIds,\n function(fieldOrderId, sortOrder) {\n const field = this.properties.get(fieldOrderId);\n\n if (field) {\n field.set('sortOrder', sortOrder);\n }\n },\n this\n );\n this.properties.comparator = 'sortOrder';\n this.properties.sort();\n }\n this.properties.defaultPolicyId = resp.policyId;\n return resp;\n };\n\n const self = this;\n this.settings.parseRegistrationSchema(\n resp,\n function(resp) {\n if (resp.profileSchema) {\n resp.schema = resp.profileSchema;\n BaseSchema.Model.prototype.parse.apply(self, [resp]);\n resp = parseResponseData(resp);\n }\n self.trigger('parseComplete', { properties: self.properties });\n },\n function(error) {\n self.trigger('parseComplete', { properties: self.properties, error: error });\n }\n );\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 max-statements: [2, 15] */\n\nimport Q from 'q';\nimport Enums from './Enums';\nconst SWAP_PAGE_TIME = 200;\nconst fn = {};\n\nfunction zoom($el, start, finish) {\n const deferred = Q.defer();\n\n $el.animate(\n {\n 'text-indent': 1,\n },\n {\n duration: 200,\n easing: 'swing',\n step: function(now, fx) {\n fx.start = start;\n fx.end = finish;\n $el.css('transform', 'scale(' + now + ', ' + now + ')');\n },\n always: function() {\n deferred.resolve($el);\n },\n }\n );\n return deferred.promise;\n}\n\nfunction rotate($el, start, finish) {\n const deferred = Q.defer();\n\n $el.animate(\n {\n 'text-indent': 1,\n },\n {\n duration: 150,\n easing: 'swing',\n step: function(now, fx) {\n fx.start = start;\n fx.end = finish;\n $el.css('transform', 'rotate(' + now + 'deg)');\n },\n always: function() {\n deferred.resolve($el);\n },\n }\n );\n return deferred.promise;\n}\n\n// Note: It is necessary to pass in a success callback because we must\n// remove the old dom node (and controller) in the same tick of the event\n// loop. Waiting for \"then\" results in a glitchy animation.\nfn.swapPages = function(options) {\n const deferred = Q.defer();\n const $parent = options.$parent;\n const $oldRoot = options.$oldRoot;\n const $newRoot = options.$newRoot;\n const success = options.success;\n const ctx = options.ctx;\n let directionClassName = 'transition-from-right';\n\n if (options.dir && options.dir === Enums.DIRECTION_BACK) {\n directionClassName = 'transition-from-left';\n }\n\n $newRoot.addClass(directionClassName);\n $parent.append($newRoot);\n\n $parent.addClass('animation-container-overflow');\n $newRoot.animate({ left: '0px', top: '0px', opacity: 1 }, SWAP_PAGE_TIME, function() {\n $parent.removeClass('animation-container-overflow');\n $newRoot.removeClass(directionClassName);\n $newRoot.removeAttr('style');\n success.call(ctx);\n deferred.resolve();\n });\n\n $oldRoot.animate({ height: $newRoot.height(), opacity: 0 }, SWAP_PAGE_TIME * 0.8);\n\n return deferred.promise;\n};\n\nfn.swapBeacons = function(options) {\n const $el = options.$el;\n const swap = options.swap;\n const ctx = options.ctx;\n\n return this.implode($el)\n .then(function() {\n swap.call(ctx);\n return $el;\n })\n .then(this.explode);\n};\n\nfn.explode = function($el) {\n return zoom($el, 0, 1); //zoom in\n};\n\nfn.implode = function($el) {\n return zoom($el, 1, 0); //zoom out\n};\n\nfn.radialProgressBar = function(options) {\n const radialProgressBar = options.$el;\n const swap = options.swap;\n const circles = radialProgressBar.children();\n\n return rotate(circles, 0, 180)\n .then(function() {\n radialProgressBar.css({ clip: 'auto' });\n })\n .then(function() {\n const leftHalf = circles.eq(0);\n\n swap();\n return rotate(leftHalf, 180, 360);\n })\n .then(function() {\n //reset values to initial state\n radialProgressBar.css({ clip: 'rect(0px, 96px, 96px, 48px)' });\n circles.css({\n transform: 'rotate(0deg)',\n 'text-indent': '1px',\n });\n });\n};\n\nexport default fn;\n","/*!\n * Copyright (c) 2015-2016, 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 { _, Form, Controller } from 'okta';\nimport Q from 'q';\n\nfunction getForm(controller) {\n return _.find(controller.getChildren(), function(item) {\n return item instanceof Form;\n });\n}\n\nexport default Controller.extend({\n // Ideally we should be attaching the listeners in the constructor, but because of the way\n // we construct the FormController (this.model is generated after the BaseLoginController's\n // constructor is called), this.model is undefined in when try to attach the events and\n // therefore we don't listen to events for such forms. And changing the order in which we call\n // the constructor doesn't help either (JS errors etc.). This at least guarantees that we\n // are listening to the model events.\n // Note - Figure out a way to call the constructor in the right order.\n addListeners: function() {\n // Events to enable/disable the primary button on the forms\n this.listenTo(this.model, 'save', function() {\n const form = getForm(this);\n //disable the submit button on forms while making the request\n //to prevent users from hitting rate limiting exceptions of\n //1 per second on the auth api\n\n const disableSubmitButton = form.disableSubmitButton;\n\n if (disableSubmitButton && !form.disableSubmitButton()) {\n return;\n }\n this.toggleButtonState(true);\n });\n\n this.listenTo(this.model, 'error', function() {\n this.toggleButtonState(false);\n });\n\n this.addModelListeners(this.model);\n },\n\n addModelListeners: function(model) {\n const setTransactionHandler = transaction => {\n this.options.appState.set('transaction', transaction);\n };\n\n const transactionErrorHandler = err => {\n this.options.appState.set('transactionError', err);\n };\n\n // Events to set the transaction attributes on the app state.\n this.listenTo(model, 'setTransaction', setTransactionHandler);\n this.listenTo(model, 'setTransactionError', transactionErrorHandler);\n\n // For TOTP factor model\n // TOTP model is special, its model will not be attached to a controller, but will\n // tag along with the push factor model. We need to listen to the transaction\n // changes on this as well (in case of the push+totp form).\n const totpModel = model.get('backupFactor');\n\n if (totpModel) {\n this.listenTo(totpModel, 'setTransaction', setTransactionHandler);\n this.listenTo(totpModel, 'setTransactionError', transactionErrorHandler);\n }\n },\n\n // Override this method to delay switching to this screen until return\n // promise is resolved. This is useful for cases like enrolling a security\n // question, which requires an additional request to fetch the question\n // list.\n fetchInitialData: function() {\n return Q();\n },\n\n // Override this method to prevent route navigation. This is useful for\n // intermediate status changes that do not trigger a full refresh of the\n // page, like MFA_ENROLL_ACTIVATE and MFA_CHALLENGE.\n trapAuthResponse: function() {\n return false;\n },\n\n toJSON: function() {\n const data = Controller.prototype.toJSON.apply(this, arguments);\n\n return _.extend(_.pick(this.options, 'appState'), data);\n },\n\n toggleButtonState: function(state) {\n const button = this.$el.find('.button');\n\n button.toggleClass('link-button-disabled', state).prop('disabled', state);\n },\n\n postRenderAnimation: function() {\n // Event triggered after a page is rendered along with the classname to identify the page\n // TODO: Deprecate this event in the next major version in favor of 'afterRender'\n this.trigger('pageRendered', { page: this.className });\n\n this.trigger('afterRender', { controller: this.className });\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 max-params: [2, 16], max-statements: [2, 20] */\n// BaseLoginRouter contains the more complicated router logic - rendering/\n// transition, etc. Most router changes should happen in LoginRouter (which is\n// responsible for adding new routes)\nimport { _, $, Backbone, Router, loc } from 'okta';\nimport AppState from 'models/AppState';\nimport Settings from 'models/Settings';\nimport Bundles from 'util/Bundles';\nimport Logger from 'util/Logger';\nimport AuthContainer from 'views/shared/AuthContainer';\nimport Header from 'views/shared/Header';\nimport SecurityBeacon from 'views/shared/SecurityBeacon';\nimport Animations from './Animations';\nimport BrowserFeatures from './BrowserFeatures';\nimport ColorsUtil from './ColorsUtil';\nimport Enums from './Enums';\nimport Errors from './Errors';\nimport RouterUtil from './RouterUtil';\nimport Util from './Util';\nimport LanguageUtil from './LanguageUtil';\n\nfunction isStateLessRouteHandler(router, fn) {\n return _.find(router.stateLessRouteHandlers, function(routeName) {\n return fn === router[routeName];\n });\n}\n\nfunction beaconIsAvailable(Beacon, settings) {\n if (!Beacon) {\n return false;\n }\n if (Beacon === SecurityBeacon) {\n return settings.get('features.securityImage');\n }\n return true;\n}\n\nexport default Router.extend({\n Events: Backbone.Events,\n\n initialize: function(options) {\n // Create a default success and/or error handler if\n // one is not provided.\n if (!options.globalSuccessFn) {\n options.globalSuccessFn = function() {};\n }\n if (!options.globalErrorFn) {\n options.globalErrorFn = function(err) {\n Logger.error(err);\n };\n }\n\n this.settings = new Settings(_.omit(options, 'el', 'authClient'), { parse: true });\n this.settings.setAuthClient(options.authClient);\n\n if (!options.el) {\n this.settings.callGlobalError(new Errors.ConfigError(loc('error.required.el')));\n }\n\n $('body > div').on('click', function() {\n // OKTA-69769 Tooltip wont close on iPhone/iPad\n // Registering a click handler on the first div\n // allows a tap that falls outside the tooltip\n // to be registered as a tap by iOS\n // and then the open tooltip will lose focus and close.\n });\n\n this.appState = new AppState(\n {\n baseUrl: this.settings.get('baseUrl'),\n settings: this.settings,\n },\n { parse: true }\n );\n\n const wrapper = new AuthContainer({ appState: this.appState });\n\n $(options.el).append(wrapper.render().$el);\n this.el = `#${Enums.WIDGET_CONTAINER_ID}`;\n\n this.header = new Header({\n el: this.el,\n appState: this.appState,\n settings: this.settings,\n });\n\n // Hide until unitial render\n this.hide();\n\n this.listenTo(this.appState, 'change:transactionError', function(appState, err) {\n RouterUtil.routeAfterAuthStatusChangeError(this, err);\n });\n\n this.listenTo(this.appState, 'change:transaction', function(appState, trans) {\n RouterUtil.routeAfterAuthStatusChange(this, trans.data);\n });\n\n this.listenTo(this.appState, 'navigate', function(url) {\n this.navigate(url, { trigger: true });\n });\n },\n\n execute: function(cb, args) {\n const recoveryToken = this.settings.get('recoveryToken');\n // Recovery flow with a token passed through widget settings\n\n if (recoveryToken) {\n this.settings.unset('recoveryToken');\n this.navigate(RouterUtil.createRecoveryUrl(recoveryToken), { trigger: true });\n return;\n }\n\n // Refresh flow with a stateToken passed through widget settings\n const stateToken = this.settings.get('stateToken');\n\n if (stateToken) {\n this.settings.unset('stateToken');\n this.navigate(RouterUtil.createRefreshUrl(stateToken), { trigger: true });\n return;\n }\n\n // Normal flow - we've either navigated to a stateless page, or are\n // in the middle of an auth flow\n const trans = this.appState.get('transaction');\n\n if ((trans && trans.data) || isStateLessRouteHandler(this, cb)) {\n cb.apply(this, args);\n return;\n }\n\n // StateToken cookie exists on page load, and we are on a stateful url\n if (this.settings.getAuthClient().tx.exists()) {\n this.navigate(RouterUtil.createRefreshUrl(), { trigger: true });\n return;\n }\n\n // We've hit a page that requires state, but have no stateToken - redirect\n // back to primary auth\n this.navigate('', { trigger: true });\n },\n\n // Overriding the default navigate method to allow the widget consumer\n // to \"turn off\" routing - if features.router is false, the browser\n // location bar will not update when the router navigates\n navigate: function(fragment, options) {\n if (this.settings.get('features.router')) {\n return Router.prototype.navigate.apply(this, arguments);\n }\n if (options && options.trigger) {\n return Backbone.history.loadUrl(fragment);\n }\n },\n\n render: function(Controller, options) {\n options || (options = {});\n\n let Beacon = options.Beacon;\n\n const controllerOptions = _.extend({ settings: this.settings, appState: this.appState }, _.omit(options, 'Beacon'));\n\n // Since we have a wrapper view, render our wrapper and use its content\n // element as our new el.\n // Note: Render it here because we know dom is ready at this point\n if (!this.header.rendered()) {\n this.el = this.header.render().getContentEl();\n }\n\n // If we need to load a language (or apply custom i18n overrides), do\n // this now and re-run render after it's finished.\n if (!Bundles.isLoaded(this.appState.get('languageCode'))) {\n return LanguageUtil.loadLanguage(this.appState, this.settings)\n .then(_.bind(this.render, this, Controller, options));\n }\n\n // Load the custom colors only on the first render\n if (this.settings.get('colors.brand') && !ColorsUtil.isLoaded()) {\n const colors = {\n brand: this.settings.get('colors.brand'),\n };\n\n ColorsUtil.addStyle(colors);\n }\n\n const oldController = this.controller;\n\n this.controller = new Controller(controllerOptions);\n\n // Bubble up all controller events\n this.listenTo(this.controller, 'all', this.trigger);\n\n // First run fetchInitialData, in case the next controller needs data\n // before it's initial render. This will leave the current page in a\n // loading state.\n return this.controller\n .fetchInitialData()\n .then(() => {\n // Beacon transition occurs in parallel to page swap\n if (!beaconIsAvailable(Beacon, this.settings)) {\n Beacon = null;\n }\n this.header.setBeacon(Beacon, controllerOptions);\n\n // Show before initial render\n this.show();\n\n this.controller.render();\n\n if (!oldController) {\n this.el.append(this.controller.el);\n this.controller.postRenderAnimation();\n return;\n }\n\n return Animations.swapPages({\n $parent: this.el,\n $oldRoot: oldController.$el,\n $newRoot: this.controller.$el,\n dir: oldController.state.get('navigateDir'),\n ctx: this,\n success: function() {\n const flashError = this.appState.get('flashError');\n const model = this.controller.model;\n\n oldController.remove();\n oldController.$el.remove();\n this.controller.postRenderAnimation();\n if (flashError) {\n const errorKey = (this.settings.get('features.mfaOnlyFlow')) ?\n 'error.mfa.only.expired.session' : 'error.expired.session';\n model.trigger('error', model, {\n responseJSON: {\n errorSummary: loc(errorKey),\n },\n });\n this.appState.unset('flashError');\n Util.triggerAfterError(this.controller, flashError);\n }\n },\n });\n })\n .catch(function() {\n // OKTA-69665 - if an error occurs in fetchInitialData, we're left in\n // a state with two active controllers. Therefore, we clean up the\n // old one. Note: This explicitly handles the invalid token case -\n // if we get some other type of error which doesn't force a redirect,\n // we will probably be left in a bad state. I.e. old controller is\n // dropped and new controller is not rendered.\n if (oldController) {\n oldController.remove();\n oldController.$el.remove();\n }\n });\n },\n\n start: function() {\n let pushState = false;\n\n // Support for browser's back button.\n if (window.addEventListener && this.settings.get('features.router')) {\n window.addEventListener('popstate', e => {\n if (this.controller.back) {\n e.preventDefault();\n e.stopImmediatePropagation();\n this.controller.back();\n }\n });\n pushState = BrowserFeatures.supportsPushState();\n }\n Router.prototype.start.call(this, { pushState: pushState });\n },\n\n hide: function() {\n this.header.$el.hide();\n },\n\n show: function() {\n this.header.$el.show();\n },\n\n remove: function() {\n if (this.controller) {\n this.controller.remove();\n }\n this.header.$el.remove();\n Bundles.remove();\n Backbone.history.stop();\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 Enums from 'util/Enums';\nconst fn = {};\n\nconst template = function(colors) {\n return `\n#okta-sign-in.auth-container .button-primary,\n#okta-sign-in.auth-container .button-primary:active,\n#okta-sign-in.auth-container .button-primary:focus { background: ${colors.brand}; }\n#okta-sign-in.auth-container .button-primary:hover { background: ${fn.lighten(colors.brand, 0.05)}; }\n#okta-sign-in.auth-container .button.button-primary.link-button-disabled {\n background: ${colors.brand};\n opacity: 0.5;\n}\n `;\n};\n\n// visible for testing\nfn.lighten = function(hex, lum) {\n lum = lum || 0;\n hex = hex.substr(1);\n let newHex = '#';\n\n for (var i = 0; i < 3; i++) {\n let c = parseInt(hex.substr(i * 2, 2), 16);\n\n c = Math.round(Math.min(Math.max(0, c + c * lum), 255)).toString(16);\n newHex += ('00' + c).substr(c.length);\n }\n return newHex;\n};\n\nfn.addStyle = function(colors) {\n const css = template(colors);\n const main = document.getElementById(Enums.WIDGET_CONTAINER_ID);\n const style = document.createElement('style');\n\n style.id = Enums.WIDGET_CONFIG_COLORS_ID;\n style.type = 'text/css';\n style.appendChild(document.createTextNode(css));\n\n main.appendChild(style);\n};\n\nfn.isLoaded = function() {\n return !!document.getElementById(Enums.WIDGET_CONFIG_COLORS_ID);\n};\n\nexport default fn;\n","/*!\n * Copyright (c) 2015-2016, 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 { internal } from 'okta';\nconst Cookie = internal.util.Cookie;\nconst LAST_USERNAME_COOKIE_NAME = 'ln';\nconst DAYS_SAVE_REMEMBER = 365;\nconst fn = {};\n\nfn.getCookieUsername = function() {\n return Cookie.getCookie(LAST_USERNAME_COOKIE_NAME);\n};\n\nfn.setUsernameCookie = function(username) {\n Cookie.setCookie(LAST_USERNAME_COOKIE_NAME, username, {\n expires: DAYS_SAVE_REMEMBER,\n path: '/',\n });\n};\n\nfn.removeUsernameCookie = function() {\n Cookie.removeCookie(LAST_USERNAME_COOKIE_NAME, { path: '/' });\n};\n\nexport default fn;\n","/*!\n * Copyright (c) 2015-2016, 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 { _, loc } from 'okta';\nimport bundles from './Bundles';\nimport countryCallingCodes from './countryCallingCodes';\nconst fn = {};\n\n// () => [{ countryCode: countryName }], sorted by countryName\nfn.getCountries = function() {\n const countries = _.omit(bundles.country, 'HM', 'BV', 'TF');\n // HM, BV, and TF do not have phone prefixes, so don't give the\n // user the option to choose these countries. FYI it appears that these\n // countries do not have calling codes because they are ~~uninhabited~~\n\n let collection = _.map(countries, function(name, code) {\n return { name: name, code: code };\n });\n\n // Sort it; figure out if there is a better way to do this (best would\n // be to sort it in the properties file!!)\n\n collection = _.sortBy(collection, 'name');\n const sorted = {};\n\n _.each(collection, function(country) {\n sorted[country.code] = country.name;\n });\n\n return sorted;\n};\n\nfn.getCountryCode = function(){\n\n const countries = _.omit(bundles.country, 'HM', 'BV', 'TF');\n // HM, BV, and TF do not have phone prefixes, so don't give the\n // user the option to choose these countries. FYI it appears that these\n // countries do not have calling codes because they are ~~uninhabited~~\n\n let collection = _.map(countries, function(name, code) {\n return { name: name, code: code };\n });\n\n collection = _.sortBy(collection, 'name');\n const sorted = {};\n\n _.each(collection, function(country) {\n sorted[country.code] = loc('country.option.label', 'login', [country.name, country.code]);\n });\n\n return sorted;\n};\n\nfn.getCallingCodeForCountry = function(countryCode) {\n return countryCallingCodes[countryCode];\n};\n\nexport default fn;\n","/*!\n * Copyright (c) 2015-2016, 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 Uint8Array, btoa, atob */\n\nconst fn = {};\n\n/**\n * Light weight hashing algorithm that hashes string into an integer between 0 and 4294967295\n * Not recommended for data set of size greater than 10000\n * https://www.npmjs.com/package/string-hash\n *\n * @param str the string to be hashed\n * @returns string hash of integer type\n */\nfn.getStringHash = function(str) {\n let hash = 5381;\n let i = str.length;\n\n while (i) {\n hash = (hash * 33) ^ str.charCodeAt(--i);\n }\n return hash >>> 0;\n};\n\n/**\n * Converts any url safe characters in a base64 string to regular base64 characters\n * @param str base64 string that might contain url safe characters\n * @returns base64 formatted string\n */\nfn.base64UrlSafeToBase64 = function(str) {\n return str.replace(new RegExp('_', 'g'), '/').replace(new RegExp('-', 'g'), '+');\n};\n\n/**\n * Converts an ArrayBuffer object that contains binary data to base64 encoded string\n * @param bin ArrayBuffer object\n * @returns base64 encoded string\n */\nfn.binToStr = function(bin) {\n return btoa(new Uint8Array(bin).reduce((s, byte) => s + String.fromCharCode(byte), ''));\n};\n\n/**\n * Converts base64 string to binary data view\n * @param str in base64 or base64UrlSafe format\n * @returns converted Uint8Array view of binary data\n */\nfn.strToBin = function(str) {\n return Uint8Array.from(atob(this.base64UrlSafeToBase64(str)), c => c.charCodeAt(0));\n};\n\nexport default fn;\n","/*!\n * Copyright (c) 2015-2016, 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 { $ } from 'okta';\nimport Q from 'q';\nexport default {\n getUserAgent: function() {\n return navigator.userAgent;\n },\n isMessageFromCorrectSource: function($iframe, event) {\n return event.source === $iframe[0].contentWindow;\n },\n generateDeviceFingerprint: function(oktaDomainUrl, element) {\n const userAgent = this.getUserAgent();\n\n if (!userAgent) {\n return Q.reject('user agent is not defined');\n } else if (isWindowsPhone(userAgent)) {\n return Q.reject('device fingerprint is not supported on Windows phones');\n }\n\n const deferred = Q.defer();\n const self = this;\n let $iframe;\n let iFrameTimeout;\n\n function isWindowsPhone(userAgent) {\n return userAgent.match(/windows phone|iemobile|wpdesktop/i);\n }\n\n function removeIframe() {\n $iframe.off();\n $iframe.remove();\n window.removeEventListener('message', onMessageReceivedFromOkta, false);\n }\n\n function handleError(reason) {\n removeIframe();\n deferred.reject(reason);\n }\n\n function onMessageReceivedFromOkta(event) {\n if (!self.isMessageFromCorrectSource($iframe, event)) {\n return;\n }\n // deviceFingerprint service is available, clear timeout\n clearTimeout(iFrameTimeout);\n if (!event || !event.data || event.origin !== oktaDomainUrl) {\n handleError('no data');\n return;\n }\n try {\n const message = JSON.parse(event.data);\n\n if (message && message.type === 'FingerprintServiceReady') {\n sendMessageToOkta({ type: 'GetFingerprint' });\n } else if (message && message.type === 'FingerprintAvailable') {\n removeIframe();\n deferred.resolve(message.fingerprint);\n } else {\n handleError('no data');\n }\n } catch (error) {\n //Ignore any errors since we could get other messages too\n }\n }\n\n function sendMessageToOkta(message) {\n const win = $iframe[0].contentWindow;\n\n if (win) {\n win.postMessage(JSON.stringify(message), oktaDomainUrl);\n }\n }\n\n // Attach listener\n window.addEventListener('message', onMessageReceivedFromOkta, false);\n // Create and Load devicefingerprint page inside the iframe\n $iframe = $('\n `).last();\n },\n\n stopProbing() {\n this.checkPortXhr && this.checkPortXhr.abort();\n this.probingXhr && this.probingXhr.abort();\n },\n});\n\nexport default Body;\n","import { _, View } from 'okta';\nimport BaseHeader from './BaseHeader';\nimport BaseForm from './BaseForm';\nimport BaseModel from './BaseModel';\nimport BaseFooter from './BaseFooter';\nimport hbs from 'handlebars-inline-precompile';\nimport {getClassNameMapping} from '../../ion/ViewClassNamesFactory';\n\nexport default View.extend({\n\n Header: BaseHeader,\n\n Body: BaseForm,\n\n Footer: BaseFooter,\n\n className() {\n const appState = this.options.appState;\n\n const formName = appState.get('currentFormName');\n const authenticatorKey = appState.get('authenticatorKey');\n const methodType = appState.get('authenticatorMethodType');\n const isPasswordRecoveryFlow = appState.get('isPasswordRecoveryFlow');\n\n const additionalClassNames = getClassNameMapping(\n formName,\n authenticatorKey,\n methodType,\n isPasswordRecoveryFlow,\n );\n\n const classNames = ['siw-main-view'].concat(additionalClassNames);\n return classNames.join(' ');\n },\n\n template: hbs`\n
    \n
    \n
    \n `,\n\n preRender() {\n View.prototype.preRender.apply(this, arguments);\n // Add Views\n if (this.Header !== null) {\n this.add(this.Header, {\n selector: '.siw-main-header',\n options: this.options,\n });\n }\n this.renderForm();\n this.add(this.Footer, {\n selector : '.siw-main-footer',\n options: this.options,\n });\n },\n\n renderForm() {\n let optionUiSchemaConfig;\n\n if (this.form) {\n this.form.remove();\n optionUiSchemaConfig = this.form.model.toJSON({verbose: true});\n }\n\n // Create Model\n const IonModel = this.createModelClass(\n this.options.currentViewState,\n optionUiSchemaConfig,\n this.settings,\n );\n\n const model = new IonModel ({\n formName: this.options.currentViewState.name,\n });\n\n if (!optionUiSchemaConfig) {\n optionUiSchemaConfig = model.toJSON({verbose: true});\n }\n\n this.model = model;\n this.form = this.add(this.Body, {\n selector : '.siw-main-body',\n options: Object.assign(\n {},\n this.options,\n {\n model,\n optionUiSchemaConfig,\n },\n ),\n }).last();\n\n _.each(model.attributes, (value, key) => {\n if (key.match(/sub_schema_local_[^ ]+/)) {\n // in order to render different sub-schema\n this.listenTo(model, `change:${key}`, () => {\n this.renderForm();\n });\n }\n });\n },\n\n createModelClass(currentViewState, optionUiSchemaConfig = {}) {\n return BaseModel.create(currentViewState, optionUiSchemaConfig);\n },\n\n});\n","export { default as BaseHeader } from './BaseHeader';\nexport { default as BaseFooter } from './BaseFooter';\nexport { default as BaseForm } from './BaseForm';\nexport { default as BaseFormWithPolling } from './BaseFormWithPolling';\nexport { default as BaseOktaVerifyChallengeView } from './BaseOktaVerifyChallengeView';\nexport { default as BaseModel } from './BaseModel';\nexport { default as BaseView } from './BaseView';\nexport { addCustomButton, createCustomButtons, createIdpButtons } from './FormInputFactory';\n","/*!\n * Copyright (c) 2020, 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 */\nimport { loc, _ } from 'okta';\nimport FactorUtil from '../../../util/FactorUtil';\nimport { AUTHENTICATOR_KEY } from '../../ion/RemediationConstants';\n\nconst { getPasswordComplexityDescriptionForHtmlList } = FactorUtil;\n\nconst getButtonDataSeAttr = function(authenticator) {\n if (authenticator.authenticatorKey) {\n const method = authenticator.value?.methodType ?\n '-' + authenticator.value?.methodType : '';\n return authenticator.authenticatorKey + method;\n }\n return '';\n};\n\n/* eslint complexity: [0, 0] */\nconst getAuthenticatorData = function(authenticator, isVerifyAuthenticator) {\n const authenticatorKey = authenticator.authenticatorKey;\n const key = _.isString(authenticatorKey) ? authenticatorKey.toLowerCase() : '';\n let authenticatorData = {};\n switch (key) {\n case AUTHENTICATOR_KEY.EMAIL:\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.email.authenticator.description', 'login'),\n iconClassName: 'mfa-okta-email',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n\n case AUTHENTICATOR_KEY.PASSWORD:\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.password.authenticator.description', 'login'),\n iconClassName: 'mfa-okta-password',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n\n case AUTHENTICATOR_KEY.PHONE:\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? authenticator.relatesTo?.profile?.phoneNumber\n : loc('oie.phone.authenticator.description', 'login'),\n iconClassName: 'mfa-okta-phone',\n noTranslateClassName: isVerifyAuthenticator ? 'no-translate' : '',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n\n case AUTHENTICATOR_KEY.SECURITY_QUESTION:\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.security.question.authenticator.description', 'login'),\n iconClassName: 'mfa-okta-security-question',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n\n case AUTHENTICATOR_KEY.WEBAUTHN:\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.webauthn.description', 'login'),\n iconClassName: 'mfa-webauthn',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n\n case AUTHENTICATOR_KEY.OV:\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.okta_verify.authenticator.description', 'login'),\n iconClassName: 'mfa-okta-verify',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n\n case AUTHENTICATOR_KEY.GOOGLE_OTP:\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.google_authenticator.authenticator.description', 'login'),\n iconClassName: 'mfa-google-auth',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n\n case AUTHENTICATOR_KEY.ON_PREM: {\n const vendorName = authenticator.relatesTo?.displayName ||\n loc('oie.on_prem.authenticator.default.vendorName', 'login');\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.on_prem.authenticator.description', 'login', [vendorName]),\n iconClassName: 'mfa-onprem',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n }\n\n case AUTHENTICATOR_KEY.RSA:\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.rsa.authenticator.description', 'login'),\n iconClassName: 'mfa-rsa',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n\n case AUTHENTICATOR_KEY.DUO:\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.duo.authenticator.description', 'login'),\n iconClassName: 'mfa-duo',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n\n case AUTHENTICATOR_KEY.IDP: {\n const idpName = authenticator.relatesTo?.displayName;\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.idp.authenticator.description', 'login', [idpName]),\n iconClassName: 'mfa-custom-factor',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n }\n case AUTHENTICATOR_KEY.CUSTOM_OTP: {\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.custom_otp.description', 'login'),\n iconClassName: 'mfa-hotp',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n }\n\n case AUTHENTICATOR_KEY.SYMANTEC_VIP: {\n const appName = authenticator.relatesTo?.displayName;\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.symantecVip.authenticator.description', 'login', [appName]),\n iconClassName: 'mfa-symantec',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n }\n\n case AUTHENTICATOR_KEY.YUBIKEY: {\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.yubikey.authenticator.description', 'login'),\n iconClassName: 'mfa-yubikey',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n }\n\n case AUTHENTICATOR_KEY.CUSTOM_APP: {\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.custom.app.authenticator.description', 'login', [authenticator.label]),\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n logoUri : authenticator?.relatesTo?.logoUri || ''\n });\n break;\n }\n\n }\n return authenticatorData;\n};\n\nexport function getAuthenticatorDataForEnroll(authenticator) {\n return getAuthenticatorData(authenticator);\n}\n\nexport function getAuthenticatorDataForVerification(authenticator) {\n return getAuthenticatorData(authenticator, true);\n}\n\nexport function getIconClassNameForBeacon(authenticatorKey) {\n return getAuthenticatorData({ authenticatorKey }).iconClassName;\n}\n\nexport function removeRequirementsFromError(errorJSON) {\n if (errorJSON.errorCauses?.length > 0\n && Array.isArray(errorJSON.errorCauses[0].errorSummary)\n && errorJSON.errorCauses[0].errorSummary.length > 0) {\n // Change from Array to string for all errors.\n errorJSON.errorCauses[0].errorSummary = errorJSON.errorCauses[0].errorSummary[0];\n\n // Overrides for particular error messages.\n const errorKey = errorJSON.errorCauses[0].errorKey?.length > 0 && errorJSON.errorCauses[0].errorKey[0];\n // Remove the requirements string only if this is requirements were not met error.\n if (errorKey === 'password.passwordRequirementsNotMet') {\n errorJSON.errorCauses[0].errorSummary = loc('registration.error.password.passwordRequirementsNotMet', 'login');\n }\n }\n return errorJSON;\n}\n\n/**\n * Get authenticator display name from {@code remediation}.\n *\n * @param {Object} remediation\n */\nexport function getAuthenticatorDisplayName(remediation) {\n return remediation.relatesTo?.value?.displayName;\n}\n\n// Re-export function from FactorUtil\nexport { getPasswordComplexityDescriptionForHtmlList };\n","/*!\n * Copyright (c) 2020, 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 */\nimport { loc, View, createButton, _ } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Enums from '../../../util/Enums';\nimport Util from '../../../util/Util';\nimport {\n FASTPASS_FALLBACK_SPINNER_TIMEOUT,\n IDENTIFIER_FLOW,\n LOOPBACK_RESPONSE_STATUS_CODE,\n OV_UV_ENABLE_BIOMETRICS_FASTPASS_DESKTOP, \n OV_UV_ENABLE_BIOMETRICS_FASTPASS_MOBILE,\n REQUEST_PARAM_AUTHENTICATION_CANCEL_REASON,\n} from '../utils/Constants';\n\nexport function appendLoginHint(deviceChallengeUrl, loginHint) {\n if (deviceChallengeUrl && loginHint) {\n deviceChallengeUrl += '&login_hint=' + loginHint;\n }\n\n return deviceChallengeUrl;\n}\n\nexport function doChallenge(view, fromView) {\n const deviceChallenge = view.getDeviceChallengePayload();\n const loginHint = view.options?.settings?.get('identifier');\n const HIDE_CLASS = 'hide';\n switch (deviceChallenge.challengeMethod) {\n case Enums.LOOPBACK_CHALLENGE:\n view.title = loc('deviceTrust.sso.redirectText', 'login');\n view.add(View.extend({\n className: 'loopback-content',\n template: hbs`
    `\n }));\n view.doLoopback(deviceChallenge);\n break;\n case Enums.CUSTOM_URI_CHALLENGE:\n view.title = loc('customUri.title', 'login');\n view.add(View.extend({\n className: 'skinny-content',\n template: hbs`\n

    \n {{i18n code=\"customUri.required.content.prompt\" bundle=\"login\"}}\n

    \n `,\n }));\n view.add(createButton({\n className: 'ul-button button button-wide button-primary',\n title: loc('customUri.required.content.button', 'login'),\n id: 'launch-ov',\n click: () => {\n view.doCustomURI();\n }\n }));\n view.add(View.extend({\n className: 'skinny-content',\n template: hbs`\n

    \n {{i18n code=\"customUri.required.content.download.title\" bundle=\"login\"}}\n

    \n

    \n \n {{i18n code=\"customUri.required.content.download.linkText\" bundle=\"login\"}}\n \n

    \n `,\n getTemplateData() {\n return {\n downloadOVLink: deviceChallenge.downloadHref\n };\n },\n }));\n view.customURI = appendLoginHint(deviceChallenge.href, loginHint);\n view.doCustomURI();\n break;\n case Enums.UNIVERSAL_LINK_CHALLENGE:\n view.title = loc('universalLink.title', 'login');\n view.add(View.extend({\n className: 'universal-link-content',\n template: hbs`\n
    \n {{i18n code=\"universalLink.content\" bundle=\"login\"}}\n `\n }));\n view.add(createButton({\n className: 'ul-button button button-wide button-primary',\n title: loc('oktaVerify.reopen.button', 'login'),\n click: () => {\n // only window.location.href can open universal link in iOS/MacOS\n // other methods won't do, ex, AJAX get or form get (Util.redirectWithFormGet)\n let deviceChallengeUrl = appendLoginHint(deviceChallenge.href, loginHint);\n Util.redirect(deviceChallengeUrl);\n }\n }));\n break;\n case Enums.APP_LINK_CHALLENGE:\n view.title = loc('appLink.title', 'login');\n view.add(View.extend({\n className: 'app-link-content',\n template: hbs`\n
    \n
    {{i18n code=\"appLink.content\" bundle=\"login\"}}
    \n `,\n getTemplateData() {\n return { hideClass: HIDE_CLASS };\n },\n postRender() {\n if (fromView === IDENTIFIER_FLOW) {\n this.$('.spinner').removeClass(HIDE_CLASS);\n setTimeout(_.bind(()=> {\n const data = { label: loc('goback', 'login') };\n this.options.appState.trigger('updateFooterLink', data);\n this.$('.spinner').addClass(HIDE_CLASS);\n this.$('.appLinkContent').removeClass(HIDE_CLASS);\n }, this), FASTPASS_FALLBACK_SPINNER_TIMEOUT);\n } else {\n this.$('.appLinkContent').removeClass(HIDE_CLASS);\n }\n },\n }));\n view.add(createButton({\n className: `${HIDE_CLASS} al-button button button-wide button-primary`,\n title: loc('oktaVerify.open.button', 'login'),\n click: () => {\n // only window.location.href can open app link in Android\n // other methods won't do, ex, AJAX get or form get (Util.redirectWithFormGet)\n let deviceChallengeUrl = appendLoginHint(deviceChallenge.href, loginHint);\n Util.redirect(deviceChallengeUrl, window, true);\n },\n postRender() {\n if (fromView === IDENTIFIER_FLOW) {\n setTimeout(_.bind(()=> {\n this.$el.removeClass(HIDE_CLASS);\n }, this), FASTPASS_FALLBACK_SPINNER_TIMEOUT);\n } else {\n this.$el.removeClass(HIDE_CLASS);\n }\n }\n }));\n break;\n }\n}\n\nexport function cancelPollingWithParams(appState, pollingCancelAction, cancelReason, statusCode) {\n const actionParams = {};\n actionParams[REQUEST_PARAM_AUTHENTICATION_CANCEL_REASON] = cancelReason;\n actionParams[LOOPBACK_RESPONSE_STATUS_CODE] = statusCode;\n appState.trigger('invokeAction', pollingCancelAction, actionParams);\n}\n\nexport function getBiometricsErrorOptions(error, isMessageObj) {\n let errorSummaryKeys;\n if (isMessageObj) {\n errorSummaryKeys = Object.values(error?.value[0]?.i18n);\n } else {\n errorSummaryKeys = error?.responseJSON?.errorSummaryKeys;\n }\n\n const isBiometricsRequiredMobile = errorSummaryKeys \n && errorSummaryKeys.includes(OV_UV_ENABLE_BIOMETRICS_FASTPASS_MOBILE);\n const isBiometricsRequiredDesktop = errorSummaryKeys \n && errorSummaryKeys.includes(OV_UV_ENABLE_BIOMETRICS_FASTPASS_DESKTOP);\n let options = [];\n\n if (!isBiometricsRequiredMobile && !isBiometricsRequiredDesktop) {\n return options;\n }\n\n const bulletPoints = [\n loc('oie.authenticator.oktaverify.method.fastpass.verify.enable.biometrics.point1', 'login'),\n loc('oie.authenticator.oktaverify.method.fastpass.verify.enable.biometrics.point2', 'login'),\n loc('oie.authenticator.oktaverify.method.fastpass.verify.enable.biometrics.point3', 'login')\n ];\n\n // Add an additional bullet point for desktop devices\n if (isBiometricsRequiredDesktop) {\n bulletPoints.push(\n loc('oie.authenticator.oktaverify.method.fastpass.verify.enable.biometrics.point4', 'login')\n );\n }\n\n options = {\n type: 'error',\n className: 'okta-verify-uv-callout-content',\n title: loc('oie.authenticator.oktaverify.method.fastpass.verify.enable.biometrics.title', 'login'),\n subtitle: loc('oie.authenticator.oktaverify.method.fastpass.verify.enable.biometrics.description', 'login'),\n bullets: bulletPoints,\n };\n\n return options;\n}\n","export const SHOW_RESEND_TIMEOUT = 30000;\nexport const WARNING_TIMEOUT = 30000;\nexport const CHALLENGE_TIMEOUT = 300000;\nexport const MS_PER_SEC = 1000;\nexport const UNIVERSAL_LINK_POST_DELAY = 500;\nexport const CANCEL_POLLING_ACTION = 'authenticatorChallenge-cancel';\nexport const AUTHENTICATOR_CANCEL_ACTION = 'currentAuthenticator-cancel';\nexport const WIDGET_FOOTER_CLASS = 'siw-main-footer';\nexport const FASTPASS_FALLBACK_SPINNER_TIMEOUT = 4000;\nexport const IDENTIFIER_FLOW = 'IDENTIFIER';\nexport const OV_UV_ENABLE_BIOMETRICS_FASTPASS_DESKTOP \n = 'oie.authenticator.oktaverify.method.fastpass.verify.enable.biometrics.desktop';\nexport const OV_UV_ENABLE_BIOMETRICS_FASTPASS_MOBILE \n = 'oie.authenticator.oktaverify.method.fastpass.verify.enable.biometrics.mobile';\nexport const AUTHENTICATOR_ALLOWED_FOR_OPTIONS = {\n ANY: 'any',\n SSO: 'sso',\n RECOVERY: 'recovery',\n};\nexport const REQUEST_PARAM_AUTHENTICATION_CANCEL_REASON = 'reason';\nexport const LOOPBACK_RESPONSE_STATUS_CODE = 'statusCode';\nexport const AUTHENTICATION_CANCEL_REASONS = {\n LOOPBACK_FAILURE: 'OV_UNREACHABLE_BY_LOOPBACK',\n OV_ERROR: 'OV_RETURNED_ERROR',\n USER_CANCELED: 'USER_CANCELED',\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// TODO: Use AuthJS for device fingerprinting: OKTA-418160\nimport { $ } from 'okta';\n\nfunction getUserAgent() {\n return navigator.userAgent;\n}\n\nfunction isWindowsPhone(userAgent) {\n return userAgent.match(/windows phone|iemobile|wpdesktop/i);\n}\n\nexport default {\n isMessageFromCorrectSource($iframe, event) {\n return event.source === $iframe[0].contentWindow;\n },\n\n // NOTE: This utility is similar to the DeviceFingerprint.js file used for V1 authentication flows.\n generateDeviceFingerprint(fingerprintData) {\n return new Promise((resolve, reject) => {\n const userAgent = getUserAgent();\n if (!userAgent) {\n return reject('user agent is not defined');\n } else if (isWindowsPhone(userAgent)) {\n return reject('device fingerprint is not supported on Windows phones');\n }\n\n let $iframe;\n let iFrameTimeout;\n const self = this; // Needed for mocking\n\n function removeIframe() {\n $iframe.off();\n $iframe.remove();\n window.removeEventListener('message', onMessageReceivedFromOkta, false);\n }\n\n function handleError(reason) {\n removeIframe();\n reject(reason);\n }\n\n function onMessageReceivedFromOkta(event) {\n if (!self.isMessageFromCorrectSource($iframe, event)) {\n return;\n }\n // deviceFingerprint service is available, clear timeout\n clearTimeout(iFrameTimeout);\n if (!event || !event.data || event.origin !== fingerprintData.oktaDomainUrl) {\n handleError('no data');\n return;\n }\n try {\n const message = JSON.parse(event.data);\n\n if (message && message.type === 'FingerprintServiceReady') {\n sendMessageToOkta({\n type: 'GetFingerprint',\n });\n } else if (message && message.type === 'FingerprintAvailable') {\n removeIframe();\n resolve(message.fingerprint);\n } else {\n handleError('no data');\n }\n } catch (error) {\n //Ignore any errors since we could get other messages too\n }\n }\n\n function sendMessageToOkta(message) {\n const win = $iframe[0].contentWindow;\n\n if (win) {\n win.postMessage(JSON.stringify(message), fingerprintData.oktaDomainUrl);\n }\n }\n\n // Attach listener\n window.addEventListener('message', onMessageReceivedFromOkta, false);\n // Create and Load devicefingerprint page inside the iframe\n $iframe = $('`).last();\n try {\n Duo.init({\n host: contextualData.host,\n sig_request: contextualData.signedToken, // eslint-disable-line camelcase\n iframe: duoFrame.el,\n post_action: (signedData) => { // eslint-disable-line camelcase\n this.model.set('credentials.signatureData', signedData);\n this.saveForm(this.model);\n },\n });\n } catch (e) {\n duoFrame.remove();\n this.add(createCallout({\n type: 'error',\n subtitle: loc('oie.duo.iFrameError', 'login'),\n }), '.o-form-error-container');\n console.error(e); // eslint-disable-line no-console\n }\n },\n\n getContextualData() {\n // to be overriden\n }\n});\n","import { loc } from 'okta';\nimport BaseDuoAuthenticatorForm from './BaseDuoAuthenticatorForm';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\n\nconst Body = BaseDuoAuthenticatorForm.extend({\n title() {\n return loc('oie.duo.verify.title', 'login');\n },\n\n getContextualData() {\n return this.options.appState.get('currentAuthenticatorEnrollment').contextualData;\n },\n});\n\nexport default BaseAuthenticatorView.extend({\n Body,\n});\n","import { loc } from 'okta';\nimport BaseDuoAuthenticatorForm from './BaseDuoAuthenticatorForm';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\n\nconst Body = BaseDuoAuthenticatorForm.extend({\n title() {\n return loc('oie.duo.enroll.title', 'login');\n },\n\n getContextualData() {\n return this.options.appState.get('currentAuthenticator').contextualData;\n },\n});\n\nexport default BaseAuthenticatorView.extend({\n Body,\n});\n","import hbs from 'handlebars-inline-precompile';\nimport { View } from 'okta';\n\n// Courage doesn't support HTML, hence creating a subtitle here.\nconst CheckYourEmailTitle = View.extend({\n className: 'okta-form-subtitle',\n attributes: {\n 'data-se': 'o-form-explain',\n },\n template: hbs`\n {{#if email}}\n {{i18n \n code=\"oie.email.verify.alternate.magicLinkToEmailAddress\" \n bundle=\"login\" \n arguments=\"email\" \n $1=\"$1\"\n }}\n {{else}}\n {{i18n \n code=\"oie.email.verify.alternate.magicLinkToYourEmail\" \n bundle=\"login\"\n }}\n {{/if}}\n \n {{#if useEmailMagicLinkValue}}\n {{i18n \n code=\"oie.email.verify.alternate.instructions\" \n bundle=\"login\" \n }}\n {{else}}\n {{i18n \n code=\"oie.email.verify.alternate.verificationCode.instructions\" \n bundle=\"login\" \n }}\n {{/if}}\n `,\n \n getTemplateData() {\n return this.options;\n },\n});\n \nconst EnterCodeLink = View.extend({\n template: hbs`\n \n `,\n});\n\nexport function getCheckYourEmailTitle() {\n return CheckYourEmailTitle;\n}\n\nexport function getEnterCodeLink() {\n return EnterCodeLink;\n}","import { loc, createCallout } from 'okta';\nimport { BaseForm } from '../../internals';\nimport email from '../shared/email';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\nimport BaseResendView from '../shared/BaseResendView';\nimport BaseFormWithPolling from '../../internals/BaseFormWithPolling';\n\nconst ResendView = BaseResendView.extend(\n {\n className: 'hide resend-email-view',\n events: {\n 'click a.resend-link' : 'handelResendLink'\n },\n\n initialize() {\n this.add(createCallout({\n content: `${loc('email.code.not.received', 'login')}\n ${loc('email.button.resend', 'login')}`,\n type: 'warning',\n }));\n },\n\n handelResendLink() {\n this.options.appState.trigger('invokeAction', this.options.resendEmailAction);\n // Hide warning, but reinitiate to show warning again after some threshold of polling\n if (!this.$el.hasClass('hide')) {\n this.$el.addClass('hide');\n }\n this.showCalloutAfterTimeout();\n },\n },\n);\n\nconst Body = BaseFormWithPolling.extend(Object.assign(\n {\n save() {\n return loc('mfa.challenge.verify', 'login');\n },\n initialize() {\n BaseFormWithPolling.prototype.initialize.apply(this, arguments);\n\n this.add(ResendView, {\n selector: '.o-form-error-container',\n options: {\n resendEmailAction: this.resendEmailAction,\n }\n });\n this.startPolling();\n },\n\n saveForm() {\n BaseForm.prototype.saveForm.apply(this, arguments);\n this.stopPolling();\n },\n\n remove() {\n BaseForm.prototype.remove.apply(this, arguments);\n this.stopPolling();\n },\n\n triggerAfterError(model, error) {\n BaseForm.prototype.triggerAfterError.apply(this, arguments);\n const isFormPolling = !!this.polling;\n this.stopPolling();\n\n if (error.responseJSON?.errorSummaryKeys?.includes('idx.session.expired')) {\n // Do NOT resume polling since session is invalid and polling is already stopped\n return;\n }\n\n if (this.isRateLimitError(error)) {\n // When polling encounter rate limit error, wait 60 sec for rate limit bucket to reset\n // before polling again & hide error message\n if (isFormPolling) {\n setTimeout(() => {\n model.trigger('clearFormError');\n }, 0);\n }\n this.startPolling(60000);\n } else {\n this.startPolling(this.options.appState.get('dynamicRefreshInterval'));\n }\n },\n\n isRateLimitError(error) {\n return (error.responseJSON?.errorSummaryKeys?.includes('tooManyRequests') // IDX API error\n || (error.responseJSON?.errorCode === 'E0000047') && !error.responseJSON?.errorIntent); // Standard API error\n },\n },\n email,\n));\n\nexport default BaseAuthenticatorView.extend({\n Body,\n});\n","import { loc, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\n\nconst BaseAuthenticatorEmailForm = BaseAuthenticatorView.prototype.Body;\n\nconst SubtitleView = View.extend({\n template: hbs`\n
    \n {{#if email}}\n {{i18n\n code=\"oie.email.verify.subtitleWithEmailAddress\"\n bundle=\"login\"\n arguments=\"email\"\n $1=\"$1\"\n }}\n {{else}}\n {{i18n\n code=\"oie.email.verify.subtitleWithoutEmailAddress\"\n bundle=\"login\"\n }}\n {{/if}}\n
    \n `,\n\n getTemplateData() {\n const email = this.options.appState.get('currentAuthenticatorEnrollment')?.profile?.email;\n return {\n email,\n };\n },\n});\n\nconst Body = BaseAuthenticatorEmailForm.extend(\n {\n title() {\n return loc('oie.email.mfa.title', 'login');\n },\n\n save() {\n return loc('oie.email.verify.primaryButton', 'login');\n },\n\n postRender() {\n BaseAuthenticatorEmailForm.prototype.postRender.apply(this, arguments);\n this.add(SubtitleView, {\n prepend: true,\n selector: '.o-form-info-container',\n });\n },\n\n getUISchema() {\n // Prevent from displaying radio buttons on the UI\n const uiSchemas = BaseAuthenticatorEmailForm.prototype.getUISchema.apply(this, arguments);\n return uiSchemas.filter(schema => schema.name !== 'authenticator.methodType');\n },\n },\n);\n\nexport default BaseAuthenticatorView.extend({\n Body,\n});\n","import BaseAuthenticatorEmailView from './BaseAuthenticatorEmailView';\nimport { getCheckYourEmailTitle, getEnterCodeLink } from './AuthenticatorEmailViewUtil';\n\nconst BaseAuthenticatorEmailForm = BaseAuthenticatorEmailView.prototype.Body;\n\nconst Body = BaseAuthenticatorEmailForm.extend(\n Object.assign({\n noButtonBar: true,\n resendEmailAction: 'currentAuthenticatorEnrollment-resend',\n\n events: {\n 'click .enter-auth-code-instead-link': 'showAuthCodeEntry',\n },\n\n initialize() {\n BaseAuthenticatorEmailForm.prototype.initialize.apply(this, arguments);\n\n const { email } =\n this.options.currentViewState.relatesTo?.value?.profile || {};\n\n const useEmailMagicLinkValue = this.isUseEmailMagicLink();\n\n if (useEmailMagicLinkValue) {\n this.add(getEnterCodeLink(), {\n prepend: true,\n selector: '.o-form-error-container',\n });\n } \n\n this.add(getCheckYourEmailTitle(), {\n prepend: true,\n selector: '.o-form-error-container',\n options: { email, useEmailMagicLinkValue },\n });\n },\n\n postRender() {\n BaseAuthenticatorEmailForm.prototype.postRender.apply(this, arguments);\n if (this.isUseEmailMagicLink()) {\n this.showCodeEntryField(false);\n } else {\n this.noButtonBar = false;\n }\n },\n\n isUseEmailMagicLink() {\n const useEmailMagicLink = this.options.appState.get('currentAuthenticatorEnrollment')?.\n contextualData?.useEmailMagicLink;\n return useEmailMagicLink !== undefined ? useEmailMagicLink : true;\n },\n\n showAuthCodeEntry() {\n this.noButtonBar = false;\n this.render();\n\n this.showCodeEntryField(true);\n this.showEnterAuthCodeInsteadLink(false);\n },\n\n showCodeEntryField(show = true) {\n const $textField = this.$el.find('.o-form-fieldset-container');\n $textField.toggle(show);\n },\n\n showEnterAuthCodeInsteadLink(show = true) {\n const $enterAuthCodeInsteadLink = this.$el.find(\n '.enter-auth-code-instead-link'\n );\n $enterAuthCodeInsteadLink.toggle(show);\n },\n })\n);\n\nexport default BaseAuthenticatorEmailView.extend({\n Body,\n});\n","import { loc } from 'okta';\nimport BaseAuthenticatorEmailView from './BaseAuthenticatorEmailView';\nimport { getCheckYourEmailTitle, getEnterCodeLink } from './AuthenticatorEmailViewUtil';\n\nconst BaseAuthenticatorEmailForm = BaseAuthenticatorEmailView.prototype.Body;\n\nconst Body = BaseAuthenticatorEmailForm.extend(\n Object.assign({\n resendEmailAction: 'currentAuthenticator-resend',\n\n initialize() {\n BaseAuthenticatorEmailForm.prototype.initialize.apply(this, arguments);\n\n const email = this.options.appState.get('user')?.identifier || {};\n\n const useEmailMagicLinkValue = this.isUseEmailMagicLink();\n\n if (useEmailMagicLinkValue !== undefined) {\n \n this.noButtonBar = true;\n this.events['click .enter-auth-code-instead-link'] = 'showAuthCodeEntry';\n\n if (useEmailMagicLinkValue) {\n this.add(getEnterCodeLink(), {\n prepend: true,\n selector: '.o-form-error-container',\n });\n } \n \n this.add(getCheckYourEmailTitle(), {\n prepend: true,\n selector: '.o-form-error-container',\n options: { email, useEmailMagicLinkValue },\n });\n } else {\n this.subtitle = loc('oie.email.enroll.subtitle', 'login');\n }\n },\n\n postRender() {\n if (this.isUseEmailMagicLink() !== undefined) {\n BaseAuthenticatorEmailForm.prototype.postRender.apply(this, arguments);\n if (this.isUseEmailMagicLink()) {\n this.showCodeEntryField(false);\n } else {\n this.noButtonBar = false;\n }\n }\n },\n\n isUseEmailMagicLink() {\n return this.options.appState.get('currentAuthenticator')?.\n contextualData?.useEmailMagicLink;\n },\n\n showAuthCodeEntry() {\n this.noButtonBar = false;\n this.render();\n\n this.showCodeEntryField(true);\n this.showEnterAuthCodeInsteadLink(false);\n },\n\n showCodeEntryField(show = true) {\n const $textField = this.$el.find('.o-form-fieldset-container');\n $textField.toggle(show);\n },\n\n showEnterAuthCodeInsteadLink(show = true) {\n const $enterAuthCodeInsteadLink = this.$el.find(\n '.enter-auth-code-instead-link'\n );\n $enterAuthCodeInsteadLink.toggle(show);\n },\n })\n);\n\nexport default BaseAuthenticatorEmailView.extend({\n Body,\n});\n","const I18N_BASE_ATTRIBUTE_ENROLL_PROFILE_MAPPINGS = {\n /**\n * Mapping fields in the enroll profile remediation form to their i18n label for localization.\n */\n 'enroll-profile.userProfile.lastName': 'oie.user.profile.lastname',\n 'enroll-profile.userProfile.firstName': 'oie.user.profile.firstname',\n 'enroll-profile.userProfile.email': 'oie.user.profile.primary.email',\n 'enroll-profile.userProfile.secondEmail': 'oie.user.profile.secondary.email',\n 'enroll-profile.userProfile.middleName': 'oie.user.profile.middleName',\n 'enroll-profile.userProfile.honorificPrefix': 'oie.user.profile.honorificPrefix',\n 'enroll-profile.userProfile.honorificSuffix': 'oie.user.profile.honorificSuffix',\n 'enroll-profile.userProfile.title': 'oie.user.profile.title',\n 'enroll-profile.userProfile.displayName': 'oie.user.profile.displayName',\n 'enroll-profile.userProfile.nickName': 'oie.user.profile.nickName',\n 'enroll-profile.userProfile.profileUrl': 'oie.user.profile.profileUrl',\n 'enroll-profile.userProfile.mobilePhone': 'oie.user.profile.mobilePhone',\n 'enroll-profile.userProfile.primaryPhone': 'oie.user.profile.primaryPhone',\n 'enroll-profile.userProfile.streetAddress': 'oie.user.profile.streetAddress',\n 'enroll-profile.userProfile.city': 'oie.user.profile.city',\n 'enroll-profile.userProfile.state': 'oie.user.profile.state',\n 'enroll-profile.userProfile.zipCode': 'oie.user.profile.zipCode',\n 'enroll-profile.userProfile.postalCode': 'oie.user.profile.postalCode',\n 'enroll-profile.userProfile.countryCode': 'oie.user.profile.countryCode',\n 'enroll-profile.userProfile.postalAddress': 'oie.user.profile.postalAddress',\n 'enroll-profile.userProfile.preferredLanguage': 'oie.user.profile.preferredLanguage',\n 'enroll-profile.userProfile.locale': 'oie.user.profile.locale',\n 'enroll-profile.userProfile.timezone': 'oie.user.profile.timezone',\n 'enroll-profile.userProfile.userType': 'oie.user.profile.userType',\n 'enroll-profile.userProfile.employeeNumber': 'oie.user.profile.employeeNumber',\n 'enroll-profile.userProfile.costCenter': 'oie.user.profile.costCenter',\n 'enroll-profile.userProfile.organization': 'oie.user.profile.organization',\n 'enroll-profile.userProfile.division': 'oie.user.profile.division',\n 'enroll-profile.userProfile.department': 'oie.user.profile.department',\n 'enroll-profile.userProfile.managerId': 'oie.user.profile.managerId',\n 'enroll-profile.userProfile.manager': 'oie.user.profile.manager',\n 'enroll-profile.credentials.passcode': 'oie.password.label',\n};\n\nexport {\n I18N_BASE_ATTRIBUTE_ENROLL_PROFILE_MAPPINGS,\n};\n","import { loc } from 'okta';\nimport { BaseForm } from '../../internals';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\n\nconst Body = BaseForm.extend(Object.assign(\n {\n className: 'google-authenticator-challenge',\n\n title() {\n return loc('oie.verify.google_authenticator.otp.title', 'login');\n },\n\n subtitle() {\n return loc('oie.verify.google_authenticator.otp.description', 'login');\n },\n\n save() {\n return loc('mfa.challenge.verify', 'login');\n },\n },\n));\n\nexport default BaseAuthenticatorView.extend({\n Body,\n});\n","import { loc, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport { addCustomButton, BaseForm, BaseView } from '../../internals';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\nimport EnrollGoogleAuthenticatorBarcodeView from './EnrollGoogleAuthenticatorBarcodeView';\nimport EnrollAuthenticatorManualSetupView from './EnrollAuthenticatorManualSetupView';\n\nconst VIEW_TO_DISPLAY = 'viewToDisplay';\nconst viewToDisplayState = {\n BARCODE: 'barcode',\n MANUAL: 'manual',\n ENTER_CODE: 'enterCode',\n};\n\nconst Body = BaseForm.extend({\n title() {\n return loc('oie.enroll.google_authenticator.setup.title', 'login');\n },\n\n noButtonBar: true,\n\n className: 'oie-enroll-google-authenticator',\n\n enterCodeSubtitle: View.extend({\n template: hbs`\n
    \n {{i18n code=\"oie.enroll.google_authenticator.enterCode.title\" bundle=\"login\"}}\n
    \n `,\n }),\n\n getUISchema() {\n const schema = BaseForm.prototype.getUISchema.apply(this, arguments);\n\n const nextButton = addCustomButton({\n className: 'google-authenticator-next',\n title: loc('oform.next', 'login'),\n attributes: {\n style: 'display: block',\n },\n click: () => {\n this.model.set(VIEW_TO_DISPLAY, viewToDisplayState.ENTER_CODE);\n }\n });\n\n const verifyButton = addCustomButton({\n className: 'google-authenticator-verify',\n title: loc('oform.verify', 'login'),\n click: () => {\n this.$el.submit();\n }\n });\n\n schema[0].showWhen = {\n viewToDisplay: viewToDisplayState.ENTER_CODE,\n };\n\n // Add Enter Code Subtitle\n schema.unshift({\n View: this.enterCodeSubtitle,\n selector: '.o-form-fieldset-container',\n showWhen: {\n viewToDisplay: viewToDisplayState.ENTER_CODE,\n }\n });\n\n schema.push(\n {\n View: EnrollGoogleAuthenticatorBarcodeView,\n selector: '.o-form-fieldset-container',\n showWhen: {\n viewToDisplay: viewToDisplayState.BARCODE,\n }\n }, {\n View: EnrollAuthenticatorManualSetupView,\n selector: '.o-form-fieldset-container',\n showWhen: {\n viewToDisplay: viewToDisplayState.MANUAL,\n }\n }, {\n label: false,\n className: 'shared-secret',\n type: 'text',\n placeholder: this.options.appState.get('currentAuthenticator').contextualData.sharedSecret,\n disabled: true,\n showWhen: {\n viewToDisplay: viewToDisplayState.MANUAL,\n }\n },\n {\n View: nextButton,\n showWhen: {\n viewToDisplay: (val) => val === viewToDisplayState.BARCODE || val === viewToDisplayState.MANUAL,\n }\n },\n {\n View: verifyButton,\n showWhen: {\n viewToDisplay: (val) => val === viewToDisplayState.ENTER_CODE,\n }\n },\n );\n return schema;\n },\n});\n\nexport default BaseAuthenticatorView.extend({\n Body,\n createModelClass() {\n const ModelClass = BaseView.prototype.createModelClass.apply(this, arguments);\n const local = Object.assign(\n {\n viewToDisplay: {\n value: 'barcode',\n type: 'string',\n required: true,\n values: [viewToDisplayState.BARCODE, viewToDisplayState.MANUAL, viewToDisplayState.ENTER_CODE],\n }\n },\n ModelClass.prototype.local,\n );\n return ModelClass.extend({\n local,\n });\n },\n});\n","import { View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\n\nexport default View.extend({\n className: 'oie-enroll-google-authenticator-manual-setup',\n template: hbs`\n
    \n {{i18n code=\"oie.enroll.google_authenticator.cannotScanBarcode.title\" bundle=\"login\"}}\n
    \n

    \n {{i18n code=\"oie.enroll.google_authenticator.manualSetupInstructions\" bundle=\"login\"}}\n

    \n `,\n});\n","import { View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\n\nexport default View.extend({\n className: 'oie-enroll-google-authenticator-barcode',\n template: hbs`\n {{#if href}}\n
    \n {{i18n code=\"oie.enroll.google_authenticator.scanBarcode.title\" bundle=\"login\"}}\n
    \n
    \n

    \n {{i18n code=\"oie.enroll.google_authenticator.scanBarcode.description\" bundle=\"login\"}}\n

    \n \n
    \n {{/if}}\n `,\n\n getTemplateData() {\n const contextualData = this.options.appState.get('currentAuthenticator').contextualData;\n return { href: contextualData.qrcode?.href };\n },\n\n events: {\n 'click .cannot-scan-link': function(e) {\n e.preventDefault();\n this.options.model.set('viewToDisplay', 'manual');\n }\n },\n});\n","import { loc } from 'okta';\nimport BaseIdPAuthenticatorBody from './BaseIdPAuthenticatorBody';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\n\nconst Body = BaseIdPAuthenticatorBody.extend({\n\n title() {\n const displayName = this.options.appState.getAuthenticatorDisplayName();\n return loc('oie.idp.enroll.title', 'login', [displayName]);\n },\n\n subtitle() {\n const displayName = this.options.appState.getAuthenticatorDisplayName();\n return loc('oie.idp.enroll.description', 'login', [displayName]);\n },\n\n save() {\n return loc('mfa.enroll', 'login');\n },\n\n});\n\nexport default BaseAuthenticatorView.extend({\n Body,\n});\n","import { loc } from 'okta';\nimport BaseIdPAuthenticatorBody from './BaseIdPAuthenticatorBody';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\n\nconst Body = BaseIdPAuthenticatorBody.extend({\n\n title() {\n const displayName = this.options.appState.getAuthenticatorDisplayName();\n return loc('oie.idp.challenge.title', 'login', [displayName]);\n },\n\n subtitle() {\n const displayName = this.options.appState.getAuthenticatorDisplayName();\n return loc('oie.idp.challenge.description', 'login', [displayName]);\n },\n\n save() {\n return loc('mfa.challenge.verify', 'login');\n },\n\n});\n\nexport default BaseAuthenticatorView.extend({\n Body,\n});\n","import { BaseForm } from '../../internals';\n\nexport default BaseForm.extend({\n\n initialize() {\n BaseForm.prototype.initialize.apply(this, arguments);\n this.model.set('useRedirect', true);\n }\n\n});\n","import { loc } from 'okta';\nimport { BaseForm } from '../../internals';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\n\nconst ON_PREM_TOKEN_CHANGE_KEY = 'errors.E0000113';\n\nconst Body = BaseForm.extend({\n\n className: 'on-prem-authenticator-verify',\n\n modelEvents: {\n 'error': '_checkTokenChange'\n },\n\n title() {\n const vendorName =\n this.options.appState.getAuthenticatorDisplayName() ||\n loc('oie.on_prem.authenticator.default.vendorName', 'login');\n return loc('oie.on_prem.verify.title', 'login', [vendorName]);\n },\n\n _checkTokenChange(model, convertedErrors) {\n const errorSummaryKeys = convertedErrors?.responseJSON?.errorSummaryKeys;\n if (errorSummaryKeys && errorSummaryKeys.includes(ON_PREM_TOKEN_CHANGE_KEY)) {\n // this means we are in change pin, so we should clear out answer input\n this.model.set('credentials.passcode', '');\n this.render();\n }\n },\n\n save() {\n return loc('mfa.challenge.verify', 'login');\n },\n});\n\nexport default BaseAuthenticatorView.extend({\n Body,\n});\n","import { loc } from 'okta';\nimport { BaseForm } from '../../internals';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\n\nconst ON_PREM_TOKEN_CHANGE_KEY = 'errors.E0000113';\n\nconst Body = BaseForm.extend({\n\n className: 'on-prem-authenticator-enroll',\n\n modelEvents: {\n 'error': '_checkTokenChange'\n },\n\n title() {\n const vendorName =\n this.options.appState.getAuthenticatorDisplayName() ||\n loc('oie.on_prem.authenticator.default.vendorName', 'login');\n return loc('oie.on_prem.enroll.title', 'login', [vendorName]);\n },\n\n _checkTokenChange(model, convertedErrors) {\n const errorSummaryKeys = convertedErrors?.responseJSON?.errorSummaryKeys;\n if (errorSummaryKeys && errorSummaryKeys.includes(ON_PREM_TOKEN_CHANGE_KEY)) {\n // this means we are in change pin, so we should clear out answer input\n this.model.set('credentials.passcode', '');\n this.render();\n }\n },\n\n save() {\n return loc('mfa.challenge.verify', 'login');\n },\n});\n\nexport default BaseAuthenticatorView.extend({\n Body,\n});\n","import { Collection } from 'okta';\nimport { BaseForm } from '../../internals';\nimport AuthenticatorVerifyOptions from '../../components/AuthenticatorVerifyOptions';\nimport { getAuthenticatorDataForVerification } from '../../utils/AuthenticatorUtil';\nimport { Body as SelectAuthenticatorVerifyViewBody } from '../SelectAuthenticatorVerifyView';\nimport { AUTHENTICATOR_KEY } from '../../../ion/RemediationConstants';\n\nconst Body = SelectAuthenticatorVerifyViewBody.extend({\n getUISchema() {\n // Change the UI schema to not display radios here.\n const uiSchemas = BaseForm.prototype.getUISchema.apply(this, arguments);\n const methodsSchema = uiSchemas.find(schema => schema.name === 'authenticator.methodType');\n\n this._sortMethodOptionsIfDeviceKnown(methodsSchema.options);\n\n const methodOptions = methodsSchema.options.map((option) => {\n return Object.assign({}, option, getAuthenticatorDataForVerification({authenticatorKey: AUTHENTICATOR_KEY.OV}));\n });\n return [{\n View: AuthenticatorVerifyOptions,\n options: {\n name: methodsSchema.name,\n collection: new Collection(methodOptions),\n }\n }];\n },\n\n // If the `deviceKnown` attribute is true, we should put the signed_nonce method to the top of authenticator list.\n // This is in sync with v2/ion/ui-schema/ion-object-handler.js - createOVOptions\n _sortMethodOptionsIfDeviceKnown(methodOptions) {\n // Check if the `deviceKnown` attribute is true\n const deviceKnown = this.options?.currentViewState?.relatesTo?.value?.deviceKnown;\n\n if (deviceKnown) {\n const signedNonceIndex = methodOptions.findIndex((e) => e.value === 'signed_nonce');\n\n if (signedNonceIndex > 0) {\n const signedNonceModel = methodOptions[signedNonceIndex];\n\n // Put the 'signed_nonce' option to the top of the list\n methodOptions.splice(signedNonceIndex, 1);\n methodOptions.unshift(signedNonceModel);\n }\n }\n }\n});\n\nexport default Body;\n","import { loc } from 'okta';\nimport { BaseForm } from '../../internals';\n\nconst Body = BaseForm.extend(Object.assign({\n className: 'okta-verify-send-push-form',\n\n save() {\n return loc('oie.okta_verify.sendPushButton', 'login');\n },\n\n title() {\n return loc('oie.okta_verify.push.title', 'login');\n },\n\n render() {\n BaseForm.prototype.render.apply(this, arguments);\n // Move checkbox below the button\n // Checkbox is rendered by BaseForm using remediation response and \n // hence by default always gets added above buttons.\n const checkbox = this.$el.find('[data-se=\"o-form-fieldset-authenticator.autoChallenge\"]');\n checkbox.length && this.$el.find('.o-form-button-bar').after(checkbox);\n },\n\n getUISchema() {\n const uiSchemas = BaseForm.prototype.getUISchema.apply(this, arguments);\n return uiSchemas.filter(schema => schema.name !== 'authenticator.methodType');\n },\n}));\n \nexport default Body;\n","import { BaseFooter } from '../../internals';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\nimport \nChallengeAuthenticatorDataOktaVerifyPushOnlyFormView\n from './ChallengeAuthenticatorDataOktaVerifyPushOnlyFormView';\nimport ChallengeAuthenticatorDataOktaVerifyFormView from './ChallengeAuthenticatorDataOktaVerifyFormView';\n\nexport default BaseAuthenticatorView.extend({\n initialize() {\n BaseAuthenticatorView.prototype.initialize.apply(this, arguments);\n if (this.isPushOnlyWithAutoChallengeFlow()) {\n this.Body = ChallengeAuthenticatorDataOktaVerifyPushOnlyFormView;\n } else {\n this.Body = ChallengeAuthenticatorDataOktaVerifyFormView;\n this.Footer = BaseFooter;\n }\n },\n\n isPushOnlyWithAutoChallengeFlow() {\n const methodType = this.options.appState.getSchemaByName('authenticator.methodType');\n const hasAutoChallengeSchema = this.options.appState.getSchemaByName('authenticator.autoChallenge');\n const methodTypeOptions = methodType?.options;\n return hasAutoChallengeSchema && methodTypeOptions.length === 1 && methodTypeOptions[0].value === 'push';\n },\n});\n","import { _, createCallout } from 'okta';\nimport { BaseOktaVerifyChallengeView } from '../../internals';\nimport { getBiometricsErrorOptions } from '../../utils/ChallengeViewUtil';\n\nconst Body = BaseOktaVerifyChallengeView.extend({\n getDeviceChallengePayload() {\n return this.options.currentViewState.relatesTo.value.contextualData.challenge.value;\n },\n\n showCustomFormErrorCallout(error) {\n const options = getBiometricsErrorOptions(error, false);\n \n // If not biometrics error, just show the returned error message\n if (_.isEmpty(options)) {\n return false;\n }\n\n this.showMessages(createCallout(options));\n return true;\n },\n});\n\nexport default Body;\n","import { loc, createCallout } from 'okta';\nimport { BaseForm } from '../../internals';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\n\nconst OV_NMC_FORCE_UPGRAGE_SERVER_KEY = 'oie.authenticator.app.method.push.force.upgrade.number_challenge';\nconst OV_UV_ENABLE_BIOMETRIC_SERVER_KEY = 'oie.authenticator.app.method.push.verify.enable.biometrics';\n\nconst Body = BaseForm.extend(Object.assign(\n {\n className: 'okta-verify-resend-push',\n\n title() {\n return loc('oie.okta_verify.push.title', 'login');\n },\n\n save() {\n return loc('oie.okta_verify.push.resend', 'login');\n },\n\n showMessages() {\n let options = {};\n if (this.options.appState.containsMessageWithI18nKey(OV_NMC_FORCE_UPGRAGE_SERVER_KEY)) {\n // add a title for OV force upgrade\n options.title = loc('oie.numberchallenge.force.upgrade.title', 'login');\n } else if (this.options.appState.containsMessageWithI18nKey(OV_UV_ENABLE_BIOMETRIC_SERVER_KEY)) {\n // add a title for OV enable biometrics message during verification\n options.content = null;\n options.className = 'okta-verify-uv-callout-content';\n options.title = loc('oie.authenticator.app.method.push.verify.enable.biometrics.title', 'login');\n options.subtitle = loc('oie.authenticator.app.method.push.verify.enable.biometrics.description', 'login');\n options.type = 'error';\n options.bullets = [\n loc('oie.authenticator.app.method.push.verify.enable.biometrics.point1', 'login'),\n loc('oie.authenticator.app.method.push.verify.enable.biometrics.point2', 'login'),\n loc('oie.authenticator.app.method.push.verify.enable.biometrics.point3', 'login')\n ];\n options = createCallout(options);\n }\n BaseForm.prototype.showMessages.call(this, options);\n },\n },\n));\n\nexport default BaseAuthenticatorView.extend({\n Body,\n});\n","import BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\nimport { BaseForm } from '../../internals';\nimport { loc, createCallout, _ } from 'okta';\nimport { getBiometricsErrorOptions } from '../../utils/ChallengeViewUtil';\n\n// for EA,\n// redirect is needed for Apple SSO Extension to intercept the request, because\n// - XHR request is not interceptable\n// - form post is interceptable, but some app (Outlook) closes the app after\n// We may have a different approach/UX for GA\nconst Body = BaseForm.extend({\n noButtonBar: true,\n\n className: 'ion-form device-challenge-poll',\n\n title() {\n return loc('deviceTrust.sso.redirectText', 'login');\n },\n\n initialize() {\n BaseForm.prototype.initialize.apply(this, arguments);\n\n this.listenTo(this.model, 'error', () => {\n this.$('.spinner').hide();\n });\n this.add('
    ');\n\n const isGetMethod = this.options.currentViewState?.method?.toLowerCase() === 'get';\n this.model.set('useRedirect', isGetMethod);\n this.trigger('save', this.model);\n },\n\n showCustomFormErrorCallout(error) {\n const options = getBiometricsErrorOptions(error, false);\n \n // If not biometrics error, just show the returned error message\n if (_.isEmpty(options)) {\n return false;\n }\n\n this.showMessages(createCallout(options));\n return true;\n },\n});\n\nexport default BaseAuthenticatorView.extend({\n Body,\n});\n","import { loc, createCallout } from 'okta';\nimport { BaseForm } from '../../internals';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\n\nconst OV_UV_ENABLE_BIOMETRIC_SERVER_KEY = 'oie.authenticator.oktaverify.method.totp.verify.enable.biometrics';\n\nconst Body = BaseForm.extend(Object.assign(\n {\n className: 'okta-verify-totp-challenge',\n\n title() {\n return loc('oie.okta_verify.totp.title', 'login');\n },\n\n save() {\n return loc('mfa.challenge.verify', 'login');\n },\n\n showCustomFormErrorCallout(error) {\n const errorSummaryKeys = error?.responseJSON?.errorSummaryKeys;\n let options;\n if (errorSummaryKeys && errorSummaryKeys.includes(OV_UV_ENABLE_BIOMETRIC_SERVER_KEY)) {\n options = {\n type: 'error',\n className: 'okta-verify-uv-callout-content',\n title: loc('oie.authenticator.app.method.push.verify.enable.biometrics.title', 'login'),\n subtitle: loc('oie.authenticator.app.method.push.verify.enable.biometrics.description', 'login'),\n bullets: [\n loc('oie.authenticator.app.method.push.verify.enable.biometrics.point1', 'login'),\n loc('oie.authenticator.app.method.push.verify.enable.biometrics.point2', 'login'),\n loc('oie.authenticator.app.method.push.verify.enable.biometrics.point3', 'login')\n ],\n };\n this.showMessages(createCallout(options));\n return true;\n }\n },\n },\n));\n\nexport default BaseAuthenticatorView.extend({\n Body,\n});\n","import BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\nimport { Body as ChallengePushViewBody } from '../shared/ChallengePushView';\nimport ChallengeOktaVerifyFastPassView from './ChallengeOktaVerifyFastPassView';\nimport NumberChallengePushView from './NumberChallengePushView';\nimport { AUTHENTICATOR_METHODS } from '../../../ion/RemediationConstants';\n\nexport default BaseAuthenticatorView.extend({\n initialize() {\n BaseAuthenticatorView.prototype.initialize.apply(this, arguments);\n const currentAuthenticator = this.options?.appState?.get('currentAuthenticator');\n const selectedMethod = currentAuthenticator?.methods[0];\n if (selectedMethod?.type === AUTHENTICATOR_METHODS.PUSH &&\n currentAuthenticator?.contextualData?.correctAnswer) {\n this.Body = NumberChallengePushView;\n } else if (selectedMethod?.type === AUTHENTICATOR_METHODS.PUSH) {\n this.Body = ChallengePushViewBody;\n } else {\n this.Body = ChallengeOktaVerifyFastPassView;\n }\n },\n});\n","import { View, _ } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\n\nexport default View.extend({\n template: hbs`\n {{#if href}}\n
      \n
    1. {{i18n code=\"oie.enroll.okta_verify.qrcode.step1\" bundle=\"login\"}}
    2. \n
    3. {{i18n code=\"oie.enroll.okta_verify.qrcode.step2\" bundle=\"login\"}}
    4. \n
    5. {{i18n code=\"oie.enroll.okta_verify.qrcode.step3\" bundle=\"login\"}}
    6. \n
    \n
    \n \"{{i18n\n
    \n {{/if}}\n {{#if email}}\n
      \n
    • {{{i18n code=\"oie.enroll.okta_verify.email.info\" bundle=\"login\" arguments=\"email\"}}}
    • \n
    • \n
    \n {{/if}}\n {{#if phoneNumber}}\n
      \n
    • {{{i18n code=\"oie.enroll.okta_verify.sms.info\" bundle=\"login\" arguments=\"phoneNumber\"}}}
    • \n
    • \n
    \n {{/if}}\n `,\n getTemplateData() {\n const contextualData = this.options.appState.get('currentAuthenticator').contextualData;\n return {\n href: contextualData.qrcode?.href,\n email: _.escape(contextualData?.email),\n phoneNumber: _.escape(contextualData?.phoneNumber),\n };\n }\n});\n","import { loc } from 'okta';\nimport { BaseFormWithPolling } from '../../internals';\nimport BrowserFeatures from '../../../../util/BrowserFeatures';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\nimport polling from '../shared/polling';\nimport { FORMS as RemediationForms } from '../../../ion/RemediationConstants';\nimport OVResendView from './OVResendView';\nimport SwitchEnrollChannelLinkView from './SwitchEnrollChannelLinkView';\nimport EnrollChannelPollDescriptionView from './EnrollChannelPollDescriptionView';\n\nconst OV_FORCE_FIPS_COMPLIANCE_UPGRAGE_KEY_IOS =\n 'oie.authenticator.app.non_fips_compliant_enrollment_device_incompatible';\nconst OV_FORCE_FIPS_COMPLIANCE_UPGRAGE_KEY_NON_IOS =\n 'oie.authenticator.app.non_fips_compliant_enrollment_app_update_required';\nconst OV_QR_ENROLL_ENABLE_BIOMETRICS_KEY = 'oie.authenticator.app.method.push.enroll.enable.biometrics';\n\nconst Body = BaseFormWithPolling.extend(Object.assign(\n {\n title() {\n const selectedChannel = this.options.appState.get('currentAuthenticator').contextualData.selectedChannel;\n let title;\n switch (selectedChannel) {\n case 'email':\n title = loc('oie.enroll.okta_verify.setup.email.title', 'login');\n break;\n case 'sms':\n title = loc('oie.enroll.okta_verify.setup.sms.title', 'login');\n break;\n default:\n title = loc('oie.enroll.okta_verify.setup.title', 'login');\n }\n return title;\n },\n className: 'oie-enroll-ov-poll',\n noButtonBar: true,\n initialize() {\n BaseFormWithPolling.prototype.initialize.apply(this, arguments);\n this.listenTo(this.model, 'error', this.stopPolling);\n this.startPolling();\n },\n postRender() {\n BaseFormWithPolling.prototype.postRender.apply(this, arguments);\n\n if ((BrowserFeatures.isAndroid() || BrowserFeatures.isIOS()) &\n this.options.appState.get('currentAuthenticator').contextualData.selectedChannel === 'qrcode') {\n this.options.appState.trigger('switchForm', RemediationForms.SELECT_ENROLLMENT_CHANNEL);\n }\n },\n showMessages() {\n // override showMessages to display custom callout\n const calloutOptions = {};\n if (this.options.appState.containsMessageWithI18nKey(OV_FORCE_FIPS_COMPLIANCE_UPGRAGE_KEY_IOS) ||\n this.options.appState.containsMessageWithI18nKey(OV_FORCE_FIPS_COMPLIANCE_UPGRAGE_KEY_NON_IOS)) {\n // add a title for ov force upgrade\n calloutOptions.title = loc('oie.okta_verify.enroll.force.upgrade.title', 'login');\n } else if (this.options.appState.containsMessageWithI18nKey(OV_QR_ENROLL_ENABLE_BIOMETRICS_KEY)) {\n // add a title for OV enable biometrics message during enrollment\n calloutOptions.title = loc('oie.authenticator.app.method.push.enroll.enable.biometrics.title', 'login');\n }\n BaseFormWithPolling.prototype.showMessages.call(this, calloutOptions);\n },\n getUISchema() {\n const schema = [];\n const contextualData = this.options.appState.get('currentAuthenticator').contextualData;\n const selectedChannel = contextualData.selectedChannel;\n schema.push({\n View: EnrollChannelPollDescriptionView,\n });\n schema.push({\n View: SwitchEnrollChannelLinkView,\n options: {\n selectedChannel\n },\n selector: selectedChannel === 'qrcode' ? '.qrcode-container' : '.switch-channel-content',\n });\n if (['email', 'sms'].includes(selectedChannel)) {\n schema.push({\n View: OVResendView,\n selector: '.o-form-error-container',\n });\n }\n return schema;\n },\n remove() {\n BaseFormWithPolling.prototype.remove.apply(this, arguments);\n this.stopPolling();\n },\n },\n\n polling,\n));\n\nexport default BaseAuthenticatorView.extend({\n Body,\n});\n","import { loc, _, Model } from 'okta';\nimport { BaseForm, BaseView } from '../../internals';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\nimport CountryUtil from '../../../../util/CountryUtil';\nimport SwitchEnrollChannelLinkView from './SwitchEnrollChannelLinkView';\n\nconst Body = BaseForm.extend({\n className: 'oie-enroll-ov-data',\n title() {\n return this.options.appState.get('currentAuthenticator').contextualData.selectedChannel === 'email' ?\n loc('oie.enroll.okta_verify.enroll.channel.email.title', 'login'):\n loc('oie.enroll.okta_verify.enroll.channel.sms.title', 'login');\n },\n\n save() {\n return loc('oie.enroll.okta_verify.setupLink', 'login');\n },\n\n getUISchema() {\n const uiSchemas = BaseForm.prototype.getUISchema.apply(this, arguments);\n const phoneNumberUISchema = _.find(uiSchemas, ({ name }) => name === 'phoneNumber');\n const phoneNumberUISchemaIndex = _.findIndex(uiSchemas, ({ name }) => name === 'phoneNumber');\n\n const countryUISchema = {\n 'label-top': true,\n label: loc('country.label', 'login'),\n type: 'select',\n options: CountryUtil.getCountries(),\n name: 'country',\n wide: true,\n };\n\n // Create an input group - serves as a display wrapper\n const phoneNumberWithCodeUISchema = {\n label: loc('mfa.phoneNumber.placeholder', 'login'),\n type: 'group',\n modelType: 'string',\n 'label-top': true,\n name: 'phoneCode',\n input: [\n {\n type: 'label',\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: `+${this.model.get('phoneCode')}`,\n className: 'country-code-label no-translate',\n },\n Object.assign({}, phoneNumberUISchema),\n ],\n };\n\n if (phoneNumberUISchemaIndex !== -1) {\n // Replace phoneNumberUISchema and add countryUISchema before phone.\n uiSchemas.splice(phoneNumberUISchemaIndex, 1, countryUISchema, phoneNumberWithCodeUISchema);\n }\n\n const description = {\n View: this.options.appState.get('currentAuthenticator').contextualData.selectedChannel === 'email' ?\n loc('oie.enroll.okta_verify.channel.email.description', 'login'):\n loc('oie.enroll.okta_verify.channel.sms.description', 'login'),\n selector: '.o-form-fieldset-container',\n };\n\n uiSchemas.push(description);\n return uiSchemas;\n },\n\n handlePhoneCodeChange() {\n const countryCodeField = this.el.querySelector('.country-code-label');\n countryCodeField.innerText = `+${this.model.get('phoneCode')}`;\n },\n\n initialize() {\n BaseForm.prototype.initialize.apply(this, arguments);\n if (this.options.appState.get('currentAuthenticator').contextualData.selectedChannel === 'sms') {\n this.listenTo(this.model, 'change:phoneCode', this.handlePhoneCodeChange.bind(this));\n }\n },\n});\n\nexport default BaseAuthenticatorView.extend({\n Body,\n createModelClass() {\n const ModelClass = BaseView.prototype.createModelClass.apply(this, arguments);\n if (this.options.appState.get('currentAuthenticator').contextualData.selectedChannel !== 'sms') {\n return ModelClass;\n }\n const local = Object.assign(\n {\n country: {\n // Set default country to \"US\"\n 'value': 'US',\n 'type': 'string',\n },\n },\n ModelClass.prototype.local,\n );\n const derived = Object.assign(\n {\n phoneCode: {\n deps: [ 'country'],\n fn: function(country) {\n return CountryUtil.getCallingCodeForCountry(country);\n },\n },\n },\n ModelClass.prototype.derived,\n );\n return ModelClass.extend({\n local,\n derived,\n toJSON: function() {\n const modelJSON = Model.prototype.toJSON.call(this, arguments);\n const phoneCode = this.get('phoneCode');\n\n // Add country code..\n let formattedPhoneNumber = `+${phoneCode}${modelJSON.phoneNumber}`;\n\n // Override phone with formatted number..\n modelJSON.phoneNumber = formattedPhoneNumber;\n return modelJSON;\n },\n });\n },\n postRender() {\n this.add(SwitchEnrollChannelLinkView, 'form');\n },\n});\n","import { View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\n\nconst NumberChallengePhoneView = View.extend({\n className: 'number-challenge-section',\n template: hbs`\n

    \n {{i18n\n code=\"oie.numberchallenge.instruction\"\n bundle=\"login\"\n arguments=\"correctAnswer\"\n $1=\"$1\"}}\n

    \n
    \n
    \n
    \n {{correctAnswer}}\n
    \n
    \n
    \n
    \n `,\n getTemplateData() {\n const correctAnswer = this.options.appState.get('currentAuthenticator')?.contextualData?.correctAnswer;\n return {\n correctAnswer\n };\n },\n});\n\n\nexport default NumberChallengePhoneView;\n","import { loc } from 'okta';\nimport { BaseFormWithPolling } from '../../internals';\nimport polling from '../shared/polling';\nimport ResendNumberChallengeView from './ResendNumberChallengeView';\nimport NumberChallengePhoneView from './NumberChallengePhoneView';\n\nconst Body = BaseFormWithPolling.extend(Object.assign(\n {\n noButtonBar: true,\n\n className: 'okta-verify-number-challenge',\n\n events: {\n 'click a.resend-number-challenge': 'handleResendNumberChallenge'\n },\n\n handleResendNumberChallenge() {\n this.options.appState.trigger('invokeAction', 'currentAuthenticator-resend');\n // hide the warning\n this.options.appState.trigger('hideNumberChallengeWarning');\n },\n\n title() {\n return loc('oie.okta_verify.push.sent', 'login');\n },\n\n initialize() {\n BaseFormWithPolling.prototype.initialize.apply(this, arguments);\n this.add(NumberChallengePhoneView);\n },\n\n triggerAfterError() {\n BaseFormWithPolling.prototype.triggerAfterError.apply(this, arguments);\n this.stopPolling();\n this.$el.find('.o-form-fieldset-container').empty();\n },\n\n postRender() {\n BaseFormWithPolling.prototype.postRender.apply(this, arguments);\n this.startPoll();\n },\n\n startPoll() {\n this.startPolling();\n this.addWarning();\n },\n\n stopPoll() {\n this.stopPolling();\n },\n\n addWarning() {\n this.add(ResendNumberChallengeView, '.o-form-error-container');\n this.options.appState.trigger('showNumberChallengeWarning');\n },\n\n remove() {\n BaseFormWithPolling.prototype.remove.apply(this, arguments);\n this.stopPolling();\n },\n },\n\n polling,\n));\n\nexport default Body;\n","import { createCallout } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport BaseResendView from '../shared/BaseResendView';\n\nexport default BaseResendView.extend({\n //only show after certain threshold of polling\n className: 'hide resend-ov-link-view',\n events: {\n 'click a.resend-link' : 'handelResendLink'\n },\n\n initialize() {\n const selectedChannel = this.options.appState.get('currentAuthenticator').contextualData.selectedChannel;\n this.add(createCallout({\n content: selectedChannel === 'email' ?\n hbs `{{{i18n code=\"oie.enroll.okta_verify.email.notReceived\" bundle=\"login\"}}}`:\n hbs `{{{i18n code=\"oie.enroll.okta_verify.sms.notReceived\" bundle=\"login\"}}}`,\n type: 'warning',\n }));\n },\n\n handelResendLink() {\n this.options.appState.trigger('invokeAction', 'currentAuthenticator-resend');\n //hide warning, but reinitiate to show warning again after some threshold of polling\n this.$el.addClass('hide');\n this.showCalloutAfterTimeout();\n },\n});\n","import { _, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport { WARNING_TIMEOUT } from '../../utils/Constants';\n\nconst ResendNumberChallengeView = View.extend({\n initialize() {\n this.listenTo(this.options.appState, 'showNumberChallengeWarning', () => {\n this.startWarningTimeout();\n });\n\n this.listenTo(this.options.appState, 'hideNumberChallengeWarning', () => {\n this.clearWarning();\n });\n },\n className: 'resend-number-challenge-warning hide',\n template: hbs`\n
    \n \n

    {{i18n\n code=\"oie.numberchallenge.warning\"\n bundle=\"login\"\n $1=\"$1\"}}\n

    \n
    \n `,\n showWarning() {\n this.$el.removeClass('hide');\n },\n clearWarning() {\n this.$el.addClass('hide');\n clearTimeout(this.warningTimeout);\n this.startWarningTimeout();\n },\n startWarningTimeout() {\n this.warningTimeout = setTimeout(_.bind(function() {\n this.showWarning();\n }, this), WARNING_TIMEOUT);\n }\n});\n\nexport default ResendNumberChallengeView;\n","import { loc, _ } from 'okta';\nimport { BaseForm } from '../../internals';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\nimport BrowserFeatures from '../../../../util/BrowserFeatures';\n\nconst Body = BaseForm.extend({\n title() {\n return (BrowserFeatures.isAndroid() || BrowserFeatures.isIOS())\n ? loc('oie.enroll.okta_verify.setup.title', 'login')\n : loc('oie.enroll.okta_verify.select.channel.title', 'login');\n },\n getUISchema() {\n const schemas = BaseForm.prototype.getUISchema.apply(this, arguments);\n // filter selected channel\n const channelField = _.find(schemas, (schema) => schema.name === 'authenticator.channel');\n channelField.options = _.filter(channelField?.options, (option) =>\n option.value !== this.options.appState.get('currentAuthenticator')?.contextualData?.selectedChannel);\n channelField.value = channelField.options[0]?.value;\n const description = {\n View: loc('oie.enroll.okta_verify.select.channel.description', 'login'),\n selector: '.o-form-fieldset-container',\n };\n return [description, ...schemas];\n },\n});\n\nexport default BaseAuthenticatorView.extend({\n Body,\n});\n","import { View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport { FORMS as RemediationForms } from '../../../ion/RemediationConstants';\n\nexport default View.extend({\n className: 'switch-channel-text',\n template: hbs `\n {{#if isQRcodeChannel}}\n \n {{i18n code=\"enroll.totp.cannotScan\" bundle=\"login\"}}\n {{else}}\n {{{i18n code=\"oie.enroll.okta_verify.switch.channel.link.text\" bundle=\"login\"}}}\n {{/if}}`,\n getTemplateData() {\n return {\n isQRcodeChannel: this.options.appState.get('currentAuthenticator').contextualData.selectedChannel === 'qrcode',\n };\n },\n postRender() {\n this.$el.find('.switch-channel-link').on('click', (event) => {\n const appState = this.options.appState;\n event.preventDefault();\n appState.trigger('switchForm', RemediationForms.SELECT_ENROLLMENT_CHANNEL);\n });\n },\n});\n","import { loc } from 'okta';\nimport { BaseForm } from '../../internals';\nimport AuthenticatorFooter from '../../components/AuthenticatorFooter';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\nimport { getForgotPasswordLink } from '../../utils/LinksUtil';\nimport { isCustomizedI18nKey } from '../../../ion/i18nTransformer';\n\n\nconst Body = BaseForm.extend({\n\n title: function() {\n return loc('oie.password.challenge.title', 'login');\n },\n\n save: function() {\n return loc('mfa.challenge.verify', 'login');\n },\n\n /**\n * Update UI schemas for customization from .widgetrc.js or Admin Customization settings page.\n * @returns Array\n */\n getUISchema() {\n const schemas = BaseForm.prototype.getUISchema.apply(this, arguments);\n\n const { settings } = this.options;\n const passwordExplainLabeli18nKey = 'primaryauth.password.tooltip';\n\n const passwordSchema = schemas.find(({name}) => name === 'credentials.passcode');\n\n if (passwordSchema && isCustomizedI18nKey(passwordExplainLabeli18nKey, settings)) {\n passwordSchema.explain = loc(passwordExplainLabeli18nKey, 'login');\n passwordSchema['explain-top'] = true;\n }\n\n return schemas;\n },\n\n});\n\nconst Footer = AuthenticatorFooter.extend({\n links: function() {\n let links = AuthenticatorFooter.prototype.links.apply(this, arguments);\n\n links = getForgotPasswordLink(this.options.appState, this.options.settings).concat(links);\n\n return links;\n }\n});\n\nexport default BaseAuthenticatorView.extend({\n Body,\n Footer,\n});\n","import { loc } from 'okta';\nimport { BaseForm, BaseView } from '../../internals';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\nimport {\n getPasswordComplexityDescriptionForHtmlList,\n removeRequirementsFromError } from '../../utils/AuthenticatorUtil';\nimport { generatePasswordPolicyHtml } from './PasswordPolicyUtil';\n\nconst Body = BaseForm.extend({\n title() {\n return loc('oie.password.enroll.title', 'login');\n },\n save() {\n return loc('oform.next', 'login');\n },\n\n initialize() {\n BaseForm.prototype.initialize.apply(this, arguments);\n const policy = this.getPasswordPolicySettings();\n this.displayPasswordPolicy(policy);\n },\n\n displayPasswordPolicy(policy) {\n if (policy) {\n const rulesList = getPasswordComplexityDescriptionForHtmlList( policy );\n generatePasswordPolicyHtml(this, rulesList, true);\n }\n },\n\n triggerAfterError(model, error) {\n error.responseJSON = removeRequirementsFromError(error.responseJSON);\n this.options.appState.trigger('afterError', error);\n },\n\n getPasswordPolicySettings() {\n // This will be overridden by following scenario since the policies could be different for those.\n // - password reset (`ReEnrollAuthenticatorPasswordView.js`)\n //\n const relatesToObject = this.options.currentViewState.relatesTo;\n return relatesToObject?.value?.settings;\n },\n\n getUISchema() {\n const uiSchemas = BaseForm.prototype.getUISchema.apply(this, arguments);\n return uiSchemas.concat([\n {\n name: 'confirmPassword',\n label: loc('oie.password.confirmPasswordLabel','login'),\n type: 'password',\n 'label-top': true,\n params: {\n showPasswordToggle: this.settings.get('showPasswordToggle'),\n }\n }\n ]);\n }\n});\n\nexport default BaseAuthenticatorView.extend({\n\n Body,\n\n createModelClass() {\n const ModelClass = BaseView.prototype.createModelClass.apply(this, arguments);\n const local = Object.assign(\n {\n confirmPassword: {\n type: 'string',\n required: true,\n }\n },\n ModelClass.prototype.local,\n );\n return ModelClass.extend({\n local,\n validate() {\n if (this.get('credentials.passcode') !== this.get('confirmPassword') &&\n this.get('credential.value') !== this.get('confirmPassword')) {\n const errors = {\n 'confirmPassword': loc('password.error.match', 'login'),\n };\n return errors;\n } else {\n return null;\n }\n }\n });\n }\n});\n","import { View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\n\nconst generatePasswordPolicyHtml = function(form, rulesList, prepend) {\n form.add(\n View.extend({\n tagName: 'section',\n template:\n hbs`
    \n {{i18n code=\"password.complexity.requirements.header\" bundle=\"login\"}}\n
    \n
      \n {{#each rulesList}}
    • {{this}}
    • {{/each}}\n
    `,\n getTemplateData: () => ({ rulesList }),\n attributes: {\n 'data-se': 'password-authenticator--rules'\n }\n }),\n {\n prepend,\n selector: '.o-form-fieldset-container',\n }\n );\n};\n\nexport {\n generatePasswordPolicyHtml,\n};","import { loc } from 'okta';\nimport EnrollAuthenticatorPasswordView from './EnrollAuthenticatorPasswordView';\n\nconst Body = EnrollAuthenticatorPasswordView.prototype.Body.extend({\n\n className: 'password-authenticator',\n\n title() {\n const title = this.options.settings.get('brandName')?\n loc('password.expired.title.specific', 'login', [this.options.settings.get('brandName')]):\n loc('password.expired.title.generic', 'login');\n return title;\n },\n\n save() {\n return loc('password.expired.submit', 'login');\n },\n\n getPasswordPolicySettings() {\n return this.options.appState.get('recoveryAuthenticator')?.settings\n || this.options.appState.get('enrollmentAuthenticator')?.settings;\n },\n\n});\n\nexport default EnrollAuthenticatorPasswordView.extend({ Body });\n","import { loc } from 'okta';\nimport { BaseFooter } from '../../internals';\nimport EnrollAuthenticatorPasswordView from './EnrollAuthenticatorPasswordView';\n\nconst Body = EnrollAuthenticatorPasswordView.prototype.Body.extend({\n className: 'password-authenticator',\n subtitle() {\n if (this.options.settings.get('brandName')) {\n return loc('password.expiring.subtitle.specific', 'login', [this.options.settings.get('brandName')]);\n }\n },\n title() {\n const passwordPolicy = this.getPasswordPolicySettings() || {};\n const daysToExpiry = passwordPolicy.daysToExpiry;\n\n if (daysToExpiry > 0) {\n return loc('password.expiring.title', 'login', [daysToExpiry]);\n } else if (daysToExpiry === 0) {\n return loc('password.expiring.today', 'login');\n } else {\n return loc('password.expiring.soon', 'login');\n }\n },\n\n save() {\n return loc('password.expired.submit', 'login');\n },\n showMessages() {\n // if brandName is configured and messages is present, render as subtitle with brandName in context\n if (this.options.settings.get('brandName')) {\n return null;\n }\n // else if brandName is not set, render messages object sent from server as text\n EnrollAuthenticatorPasswordView.prototype.Body.prototype.showMessages.apply(this, arguments);\n },\n});\n\nconst Footer = BaseFooter.extend({\n links() {\n const links = [];\n if (this.options.appState.hasRemediationObject('skip')) {\n links.push({\n 'type': 'link',\n 'label': loc('password.expiring.later', 'login'),\n 'name': 'skip',\n 'actionPath': 'skip',\n });\n }\n return links;\n }\n});\n\nexport default EnrollAuthenticatorPasswordView.extend({ Body, Footer });\n","import { loc } from 'okta';\nimport EnrollAuthenticatorPasswordView from './EnrollAuthenticatorPasswordView';\n\nconst Body = EnrollAuthenticatorPasswordView.prototype.Body.extend({\n\n className: 'password-authenticator',\n\n title() {\n const title = this.options.settings.get('brandName')?\n loc('password.reset.title.specific', 'login', [this.options.settings.get('brandName')]):\n loc('password.reset.title.generic', 'login');\n return title;\n },\n\n save() {\n return loc('password.reset', 'login');\n },\n\n});\n\nexport default EnrollAuthenticatorPasswordView.extend({ Body });\n","import { _, loc } from 'okta';\nimport { BaseForm, BaseView } from '../../internals';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\n\nconst Body = BaseForm.extend(\n {\n className: 'phone-authenticator-challenge',\n events: {\n 'click a.phone-authenticator-challenge__link' : 'handleSecondaryLinkClick'\n },\n\n title() {\n return loc('oie.phone.verify.title', 'login');\n },\n\n save() {\n return (this.model.get('primaryMode') === 'sms')\n ? loc('oie.phone.sms.primaryButton', 'login')\n : loc('oie.phone.call.primaryButton', 'login');\n },\n\n handleSecondaryLinkClick() {\n // Call the API to send a code via secondary mode\n const secondaryMode = this.model.get('secondaryMode');\n this.model.set('authenticator.methodType', secondaryMode);\n this.saveForm(this.model);\n },\n\n initialize() {\n // This is needed when user clicks on secondary (say voice) and call fails with ratelimit server-side error.\n // Then the user clicks primary button (say sms) and right methodType needs to be sent.\n this.model.on('error', () => this.model.set('authenticator.methodType', this.model.get('primaryMode')));\n BaseForm.prototype.initialize.apply(this, arguments);\n const sendText = ( this.model.get('primaryMode') === 'sms' )\n ? loc('oie.phone.verify.sms.sendText', 'login')\n : loc('oie.phone.verify.call.sendText', 'login');\n const carrierChargesText = loc('oie.phone.carrier.charges', 'login');\n const extraCssClasses =\n this.model.get('phoneNumber') !== loc('oie.phone.alternate.title', 'login') ?\n 'strong no-translate' : '';\n // Courage doesn't support HTML, hence creating a subtitle here.\n this.add(`
    ${sendText}\n ${this.model.escape('phoneNumber')}\n

    ${carrierChargesText}

    \n
    `);\n },\n\n getUISchema() {\n // Change the UI schema to not display radios here.\n const uiSchemas = BaseForm.prototype.getUISchema.apply(this, arguments);\n return uiSchemas.filter(schema => schema.name !== 'authenticator.methodType');\n },\n\n render() {\n BaseForm.prototype.render.apply(this, arguments);\n const secondaryMode = this.model.get('secondaryMode');\n if (secondaryMode) {\n const secondaryButtonTitle = (secondaryMode === 'sms')\n ? loc('oie.phone.sms.secondaryButton', 'login')\n : loc('oie.phone.call.secondaryButton', 'login');\n this.add(\n `${secondaryButtonTitle}`,\n '.o-form-button-bar');\n }\n },\n },\n);\n\nexport default BaseAuthenticatorView.extend({\n Body,\n\n createModelClass({ uiSchema }) {\n // It is important to get methods from here to maintain single source of truth.\n const { options: methods } = _.find(uiSchema, schema => schema.name === 'authenticator.methodType');\n const relatesToObject = this.options.currentViewState.relatesTo;\n const { profile } = relatesToObject?.value || {};\n const ModelClass = BaseView.prototype.createModelClass.apply(this, arguments);\n const local = Object.assign({\n primaryMode: {\n 'value': methods[0].value,\n 'type': 'string',\n },\n secondaryMode: {\n 'value': methods[1] && methods[1].value,\n 'type': 'string',\n },\n phoneNumber: {\n 'value': profile?.phoneNumber ? profile.phoneNumber : loc('oie.phone.alternate.title', 'login'),\n 'type': 'string',\n },\n }, ModelClass.prototype.local);\n return ModelClass.extend({ local });\n },\n});\n","import { loc, createCallout } from 'okta';\nimport { BaseForm, BaseView } from '../../internals';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\nimport BaseResendView from '../shared/BaseResendView';\n\nconst ResendView = BaseResendView.extend(\n {\n // To be shown after a timeout\n className: 'phone-authenticator-challenge__resend-warning hide',\n events: {\n 'click a.resend-link': 'handleResendLink'\n },\n\n // Override this to change the resend action location from response\n resendActionKey: 'currentAuthenticatorEnrollment-resend',\n\n initialize() {\n const resendText = (this.model.get('mode') === 'sms')\n ? loc('oie.phone.verify.sms.resendText', 'login')\n : loc('oie.phone.verify.call.resendText', 'login');\n const linkText = (this.model.get('mode') === 'sms')\n ? loc('oie.phone.verify.sms.resendLinkText', 'login')\n : loc('oie.phone.verify.call.resendLinkText', 'login');\n this.add(createCallout({\n content: `${resendText} ${linkText}`,\n type: 'warning',\n }));\n },\n\n handleResendLink() {\n this.options.appState.trigger('invokeAction', this.resendActionKey);\n // Hide warning, but start a timeout again..\n if (!this.el.classList.contains('hide')) {\n this.el.classList.add('hide');\n }\n this.showCalloutAfterTimeout();\n },\n },\n);\n\nconst Body = BaseForm.extend(Object.assign(\n {\n className: 'phone-authenticator-challenge',\n\n title() {\n return loc('oie.phone.verify.title', 'login');\n },\n\n save() {\n return loc('mfa.challenge.verify', 'login');\n },\n\n initialize() {\n BaseForm.prototype.initialize.apply(this, arguments);\n const sendText = (this.model.get('mode') === 'sms')\n ? loc('oie.phone.verify.sms.codeSentText', 'login')\n : loc('mfa.calling', 'login');\n const enterCodeText = loc('oie.phone.verify.enterCodeText', 'login');\n const carrierChargesText = loc('oie.phone.carrier.charges', 'login');\n\n const strongClass = this.model.get('phoneNumber') !== loc('oie.phone.alternate.title', 'login') ?\n 'strong no-translate' : '';\n // Courage doesn't support HTML, hence creating a subtitle here.\n this.add(`
    \n ${sendText} ${this.model.escape('phoneNumber')}.\n  ${enterCodeText}\n

    ${carrierChargesText}

    \n
    `, {\n prepend: true,\n selector: '.o-form-fieldset-container',\n });\n },\n\n postRender() {\n BaseForm.prototype.postRender.apply(this, arguments);\n this.add(ResendView, {\n selector: '.o-form-info-container',\n prepend: true,\n });\n },\n },\n));\n\nexport default BaseAuthenticatorView.extend({\n Body,\n\n createModelClass() {\n const relatesToObject = this.options.currentViewState.relatesTo;\n const { methods, profile } = relatesToObject?.value || {};\n const ModelClass = BaseView.prototype.createModelClass.apply(this, arguments);\n const local = Object.assign({\n mode: {\n 'value': methods[0].type,\n 'type': 'string',\n },\n phoneNumber: {\n 'value': profile?.phoneNumber ? profile.phoneNumber : loc('oie.phone.alternate.title', 'login'),\n 'type': 'string',\n }\n }, ModelClass.prototype.local );\n return ModelClass.extend({ local });\n },\n});\n\nexport { ResendView };","import { _, loc, Model } from 'okta';\nimport { BaseForm, BaseView } from '../../internals';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\nimport CountryUtil from '../../../../util/CountryUtil';\n\nconst Body = BaseForm.extend({\n\n className: 'phone-authenticator-enroll',\n\n title() {\n return loc('oie.phone.enroll.title', 'login');\n },\n\n subtitle() {\n return this.model.get('authenticator.methodType') === 'voice'\n ? loc('oie.phone.enroll.call.subtitle', 'login')\n : loc('oie.phone.enroll.sms.subtitle', 'login');\n },\n\n render() {\n BaseForm.prototype.render.apply(this, arguments);\n const selectedMethod = this.model.get('authenticator.methodType');\n const phoneField = this.el.querySelector('.phone-authenticator-enroll__phone');\n const extensionField = this.el.querySelector('.phone-authenticator-enroll__phone-ext');\n\n if (selectedMethod === 'voice') {\n if (!phoneField.classList.contains('phone-authenticator-enroll__phone--small')) {\n phoneField.classList.add('phone-authenticator-enroll__phone--small');\n }\n extensionField.classList.remove('hide');\n }\n\n if (selectedMethod === 'sms') {\n phoneField.classList.remove('phone-authenticator-enroll__phone--small');\n if (!extensionField.classList.contains('hide')) {\n extensionField.classList.add('hide');\n }\n }\n\n this.el.querySelector('.phone-authenticator-enroll__phone-code').innerText = `+${this.model.get('phoneCode')}`;\n },\n\n handlePhoneCodeChange() {\n const countryCodeField = this.el.querySelector('.phone-authenticator-enroll__phone-code');\n countryCodeField.innerText = `+${this.model.get('phoneCode')}`;\n },\n\n save() {\n return this.model.get('authenticator.methodType') === 'voice'\n ? loc('oie.phone.call.primaryButton', 'login')\n : loc('oie.phone.sms.primaryButton', 'login');\n },\n\n getUISchema() {\n const uiSchemas = BaseForm.prototype.getUISchema.apply(this, arguments);\n\n // TODO: Using underscore to support IE, replace with Array.prototype methods (find, findIndex) when IE\n // support is removed\n const phoneNumberUISchemaIndex = _.findIndex(uiSchemas, ({ name }) => name === 'authenticator.phoneNumber');\n\n const countryUISchema = {\n 'label-top': true,\n label: loc('country.label', 'login'),\n type: 'select',\n options: CountryUtil.getCountries(),\n name: 'country',\n wide: true,\n };\n\n // Create an input group - serves as a display wrapper\n const phoneNumberWithCodeUISchema = {\n label: loc('mfa.phoneNumber.placeholder', 'login'),\n type: 'group',\n modelType: 'string',\n 'label-top': true,\n name: 'phoneCode',\n className : 'phone-authenticator-enroll__phone',\n input: [\n {\n type: 'label',\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: `+${this.model.get('phoneCode')}`,\n className: 'phone-authenticator-enroll__phone-code no-translate',\n },\n Object.assign({}, uiSchemas[phoneNumberUISchemaIndex]),\n ],\n };\n\n const extensionUISchema = {\n label: loc('phone.extention.label', 'login'),\n type: 'text',\n // Need to manually hide and show\n // - toggleWhen puts display: block on the element when it unhides hence can't be used.\n // Because in this case, the element needs to be rendered as an inline-block.\n // - showWhen has an animation on the element when unhiding\n // The animation makes the element look weird because of the way it is positioned,\n // hence can't be used\n className: 'phone-authenticator-enroll__phone-ext hide',\n 'label-top': true,\n name: 'extension',\n };\n\n if (phoneNumberUISchemaIndex !== -1) {\n // Replace phoneNumberUISchema..\n uiSchemas.splice(phoneNumberUISchemaIndex, 1, phoneNumberWithCodeUISchema);\n // Add countryUISchema before & extensionUISchema after phone..\n uiSchemas.splice(phoneNumberUISchemaIndex, 0, countryUISchema);\n uiSchemas.splice(phoneNumberUISchemaIndex + 2, 0, extensionUISchema);\n }\n\n const methodType = _.find(uiSchemas, ({ name }) => name === 'authenticator.methodType');\n\n if (methodType && methodType.options.length === 1) {\n methodType.className = 'hide';\n }\n\n return uiSchemas;\n },\n\n initialize() {\n BaseForm.prototype.initialize.apply(this, arguments);\n this.listenTo(this.model, 'change:authenticator.methodType', this.render.bind(this));\n this.listenTo(this.model, 'change:phoneCode', this.handlePhoneCodeChange.bind(this));\n },\n});\n\nexport default BaseAuthenticatorView.extend({\n\n Body,\n\n createModelClass() {\n const ModelClass = BaseView.prototype.createModelClass.apply(this, arguments);\n const local = Object.assign(\n {\n country: {\n // Set default country to \"US\"\n 'value': 'US',\n 'type': 'string',\n },\n extension: {\n 'type': 'string',\n },\n },\n ModelClass.prototype.local,\n );\n const derived = Object.assign(\n {\n phoneCode: {\n deps: [ 'country' ],\n fn: function(country) {\n return CountryUtil.getCallingCodeForCountry(country);\n },\n },\n },\n ModelClass.prototype.derived,\n );\n return ModelClass.extend({\n local,\n derived,\n toJSON: function() {\n const modelJSON = Model.prototype.toJSON.call(this, arguments);\n const extension = this.get('extension');\n const phoneCode = this.get('phoneCode');\n\n // Add country code..\n let formattedPhoneNumber = `+${phoneCode}${modelJSON.authenticator.phoneNumber}`;\n\n // Add extension if present..\n if (modelJSON.authenticator.methodType === 'voice' && extension?.trim().length) {\n formattedPhoneNumber = `${formattedPhoneNumber}x${extension}`;\n }\n // Override phone with formatted number..\n modelJSON.authenticator.phoneNumber = formattedPhoneNumber;\n return modelJSON;\n },\n });\n },\n});\n","import { loc } from 'okta';\nimport {\n default as ChallengeAuthenticatorPhoneView,\n ResendView\n} from './ChallengeAuthenticatorPhoneView';\nimport { BaseForm } from '../../internals';\n\nconst EnrollResendView = ResendView.extend(\n {\n // To be shown after a timeout\n className: 'phone-authenticator-enroll--warning hide',\n resendActionKey: 'currentAuthenticator-resend',\n },\n);\n\nconst Body = ChallengeAuthenticatorPhoneView.prototype.Body.extend(\n {\n className: 'phone-authenticator-enroll',\n\n title() {\n return loc('oie.phone.enroll.title', 'login');\n },\n\n postRender() {\n BaseForm.prototype.postRender.apply(this, arguments);\n this.add(EnrollResendView, {\n selector: '.o-form-info-container',\n prepend: true,\n });\n },\n },\n);\n\nexport default ChallengeAuthenticatorPhoneView.extend({ Body });\n","import { loc } from 'okta';\nimport { BaseForm } from '../../internals';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\nimport PIVHeader from './PIVHeader';\n\nconst Body = BaseForm.extend({\n\n className: 'piv-cac-card',\n modelEvents: {\n request: 'startAuthentication',\n error: 'stopAuthentication',\n },\n\n initialize() {\n BaseForm.prototype.initialize.apply(this, arguments);\n this.model.set('useRedirect', true);\n this.addInstructions();\n },\n\n title() {\n return loc('piv.cac.title', 'login');\n },\n\n save() {\n return loc('retry', 'login');\n },\n\n addInstructions() {\n this.add(\n `
    \n

    ${loc('piv.cac.card.insert', 'login')}

    \n
    \n
    `\n );\n },\n \n startAuthentication: function() {\n this.$('.okta-waiting-spinner').show();\n this.$('.o-form-button-bar').hide();\n },\n\n stopAuthentication: function() {\n this.$('.okta-waiting-spinner').hide();\n this.$('.o-form-button-bar').show();\n }\n \n});\n\nexport default BaseAuthenticatorView.extend({\n Header: PIVHeader,\n Body,\n postRender() {\n BaseAuthenticatorView.prototype.postRender.apply(this, arguments);\n const messages = this.options.appState.get('messages') || {};\n // if piv view has errors, show errors and stop authentication.\n // otherwise trigger authentication on page load\n if (Array.isArray(messages.value)) {\n this.form.stopAuthentication();\n } else {\n this.form.startAuthentication();\n this.form.trigger('save', this.model);\n }\n },\n});\n","import { BaseHeader } from '../../internals';\nimport HeaderBeacon from '../../components/HeaderBeacon';\n\nexport default BaseHeader.extend({\n HeaderBeacon: HeaderBeacon.extend({\n getBeaconClassName: function() {\n return 'smartcard';\n },\n })\n});\n","import { loc } from 'okta';\nimport { BaseForm } from '../../internals';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\n\nconst Body = BaseForm.extend({\n title() {\n return loc('oie.security.question.challenge.title', 'login');\n },\n\n save() {\n return loc('mfa.challenge.verify', 'login');\n },\n\n getUISchema() {\n const uiSchemas = BaseForm.prototype.getUISchema.apply(this, arguments);\n const questionKey = uiSchemas.filter(s => s.name.indexOf('questionKey') >= 0);\n const answer = uiSchemas.filter(s => s.name.indexOf('answer') >= 0);\n\n /**\n * At verify SQ case,\n * 'questionKey' is read-only hence it won't show up in UI anyway.\n * 'answer' has label 'answer' but apparently UI want to display the\n * actual question (label of `questionKey`) as better user experience.\n */\n if (questionKey.length === 1 && answer.length === 1) {\n answer[0].label = questionKey[0].label;\n }\n\n return uiSchemas;\n }\n});\n\nexport default BaseAuthenticatorView.extend({\n Body,\n});\n","import { loc } from 'okta';\nimport { BaseForm } from '../../internals';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\n\nconst Body = BaseForm.extend({\n title() {\n return loc('oie.security.question.enroll.title', 'login');\n },\n save() {\n return loc('mfa.challenge.verify', 'login');\n },\n});\n\nexport default BaseAuthenticatorView.extend({\n Body,\n});\n","import { View } from 'okta';\nimport { SHOW_RESEND_TIMEOUT } from '../../utils/Constants';\nimport sessionStorageHelper from '../../../client/sessionStorageHelper';\n\nexport default View.extend({\n\n postRender() {\n this.showCalloutAfterTimeout();\n },\n\n showCalloutAfterTimeout() {\n const timeStamp = sessionStorageHelper.getResendTimestamp();\n if (!timeStamp) {\n sessionStorageHelper.setResendTimestamp(Date.now());\n }\n\n // We keep track of a 'global' timestamp in sessionStorage because if the SIW does a re-render,\n // we don't want to force the user to wait another 30s again to see the resend link. With this\n // the user will wait AT MOST 30s until they see the resend link.\n this.showMeInterval = setInterval(() => {\n const start = sessionStorageHelper.getResendTimestamp();\n const now = Date.now();\n if (now - start >= SHOW_RESEND_TIMEOUT) {\n this.$el.removeClass('hide');\n clearInterval(this.showMeInterval);\n sessionStorageHelper.removeResendTimestamp();\n }\n }, 250);\n },\n\n remove() {\n View.prototype.remove.apply(this, arguments);\n clearInterval(this.showMeInterval);\n\n const formName = this.options.appState.get('currentFormName');\n const resendContext = this.options.appState.get('currentAuthenticator')?.resend \n || this.options.appState.get('currentAuthenticatorEnrollment')?.resend;\n const didFormNameChange = this.options.model.get('formName') !== formName;\n\n // Clear resend timeStamp whenever we change views (this means we're navigating away from the resend view)\n if (sessionStorageHelper.getResendTimestamp()\n && (!resendContext || didFormNameChange)) {\n sessionStorageHelper.removeResendTimestamp();\n } \n },\n});\n","// Common view for OV push and custom push.\nimport { loc, createButton, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport { BaseFormWithPolling } from '../../internals';\nimport polling from '../shared/polling';\nimport { WARNING_TIMEOUT } from '../../utils/Constants';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\nimport { AUTHENTICATOR_KEY } from '../../../ion/RemediationConstants';\n\nconst warningTemplate = View.extend({\n className: 'okta-form-infobox-warning infobox infobox-warning',\n template: hbs`\n \n

    {{warning}}

    \n `\n});\nconst Body = BaseFormWithPolling.extend(Object.assign(\n {\n noButtonBar: true,\n\n title() {\n return this.isOV() ? loc('oie.okta_verify.push.title', 'login') :\n loc('oie.verify.custom_app.title', 'login', [this.options.appState.getAuthenticatorDisplayName()]);\n },\n\n initialize() {\n BaseFormWithPolling.prototype.initialize.apply(this, arguments);\n // 'hasSavingState' would be true by default.\n // Setting it to false when auth key is okta_verify or custom_app with autochallenge schema\n // So that 'o-form-saving' css class is not added while polling and checkbox remains enabled.\n if (this.isOVWithAutoChallenge() || this.isCustomAppWithAutoChallenge()) {\n this.hasSavingState = false;\n }\n this.listenTo(this.model, 'error', this.stopPoll);\n this.addView();\n },\n\n addView() {\n this.add(createButton({\n className: 'button button-wide button-primary send-push link-button-disabled',\n title: this.isOV() ? loc('oie.okta_verify.push.sent', 'login') : loc('oie.custom_app.push.sent', 'login'),\n click: (e) => {\n e.preventDefault();\n }\n }));\n this.add(\n `\n ${this.isOV() ? loc('oie.okta_verify.push.sent', 'login') : loc('oie.custom_app.push.sent', 'login')}`,\n );\n },\n\n render() {\n BaseFormWithPolling.prototype.render.apply(this, arguments);\n // Move checkbox below the button\n // Checkbox is rendered by BaseForm using remediation response and\n // hence by default always gets added above buttons.\n if (this.isOVWithAutoChallenge() || this.isCustomAppWithAutoChallenge()) {\n const checkbox = this.$el.find('[data-se=\"o-form-fieldset-autoChallenge\"]');\n checkbox.length && this.$el.find('.o-form-fieldset-container').append(checkbox);\n }\n },\n\n postRender() {\n BaseFormWithPolling.prototype.postRender.apply(this, arguments);\n\n const className = this.isOV() ?\n 'okta-verify-push-challenge' : ' custom-app-push-challenge';\n this.$el.addClass(className);\n this.startPoll();\n },\n\n startPoll() {\n this.startPolling();\n this.warningTimeout = setTimeout(() => {\n const warningText = this.isOV() ? loc('oktaverify.warning', 'login') :\n loc('oie.custom_app.push.warning', 'login', [this.options.appState.getAuthenticatorDisplayName()]);\n this.showWarning(warningText);\n }, WARNING_TIMEOUT);\n },\n\n stopPoll() {\n this.stopPolling();\n this.clearWarning();\n },\n\n showWarning(msg) {\n this.clearWarning();\n this.add(warningTemplate, '.o-form-error-container', {options: {warning: msg}});\n },\n\n clearWarning() {\n if (this.$('.o-form-error-container div').hasClass('okta-form-infobox-warning')) {\n this.$('.okta-form-infobox-warning').remove();\n }\n clearTimeout(this.warningTimeout);\n },\n\n remove() {\n BaseFormWithPolling.prototype.remove.apply(this, arguments);\n this.stopPolling();\n },\n\n isOV() {\n return this.options.appState.get('authenticatorKey') === AUTHENTICATOR_KEY.OV;\n },\n\n isCustomApp() {\n return this.options.appState.get('authenticatorKey') === AUTHENTICATOR_KEY.CUSTOM_APP;\n },\n\n isOVWithAutoChallenge() {\n return this.isOV() && this.options.appState.getSchemaByName('autoChallenge');\n },\n\n isCustomAppWithAutoChallenge(){\n return this.isCustomApp() && this.options.appState.getSchemaByName('autoChallenge');\n }\n },\n\n polling,\n));\n\nconst AuthenticatorView = BaseAuthenticatorView.extend({\n Body,\n});\n\nexport {\n AuthenticatorView as default,\n Body,\n};\n","import { loc } from 'okta';\nexport default {\n title() {\n return loc('oie.email.mfa.title', 'login');\n }\n};\n","import { _ } from 'okta';\nimport { MS_PER_SEC } from '../../utils/Constants';\n\nexport default {\n startPolling(newRefreshInterval) {\n this.fixedPollingInterval = this.options.currentViewState.refresh;\n this.dynamicPollingInterval = newRefreshInterval;\n this.countDownCounterValue = Math.ceil(this.pollingInterval / MS_PER_SEC);\n // Poll is present in remediation form\n if (this.fixedPollingInterval) {\n this._startRemediationPolling();\n } else {\n // Poll is present in authenticator/ authenticator Enrollment obj.\n // Authenticator won't co-exists hence it's safe to trigger both.\n this._startAuthenticatorPolling();\n }\n },\n\n _startAuthenticatorPolling() {\n // Authenticator won't co-exists hence it's safe to trigger both.\n [\n 'currentAuthenticator',\n 'currentAuthenticatorEnrollment',\n ].some(responseKey => {\n if (this.options.appState.has(responseKey)) {\n const authenticator = this.options.appState.get(responseKey);\n const authenticatorPollAction = `${responseKey}-poll`;\n const pollInterval = this.dynamicPollingInterval || authenticator?.poll?.refresh;\n if (_.isNumber(pollInterval)) {\n this.polling = setTimeout(()=>{\n this.options.appState.trigger('invokeAction', authenticatorPollAction);\n }, pollInterval);\n }\n return true;\n } else {\n return false;\n }\n });\n },\n\n _startRemediationPolling() {\n const pollInterval = this.dynamicPollingInterval || this.fixedPollingInterval;\n if (_.isNumber(pollInterval)) {\n this.polling = setTimeout(() => {\n this.options.appState.trigger('saveForm', this.model);\n }, pollInterval);\n }\n },\n\n stopPolling() {\n if (this.polling) {\n clearTimeout(this.polling);\n this.polling = null;\n }\n }\n};\n","import { View, createButton } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\n\nexport default View.extend({\n className: 'custom-buttons',\n template: hbs`\n {{#if addSeparateLine}}\n
    {{i18n code=\"socialauth.divider.text\" bundle=\"login\"}}
    \n {{/if}}\n
    \n `,\n\n initialize(options) {\n options.customButtons.forEach((idpButton) => {\n this.add(createButton(idpButton), '.okta-custom-buttons-container');\n });\n },\n\n getTemplateData() {\n const jsonData = View.prototype.getTemplateData.apply(this, arguments);\n\n return Object.assign(jsonData, {\n addSeparateLine: this.options.addSeparateLine,\n });\n }\n});\n","import { View, createButton, loc } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Util from '../../../../util/Util';\nimport Enums from '../../../../util/Enums';\nimport { UNIVERSAL_LINK_POST_DELAY } from '../../utils/Constants';\nimport { FORMS } from '../../../ion/RemediationConstants';\nimport { appendLoginHint } from '../../utils/ChallengeViewUtil';\n\nexport default View.extend({\n className: 'sign-in-with-device-option',\n template: hbs`\n
    \n {{#if signInWithDeviceIsRequired}}\n
    \n {{i18n code=\"oktaVerify.description\" bundle=\"login\"}}\n
    \n {{/if}}\n
    \n {{#unless signInWithDeviceIsRequired}}\n
    \n {{i18n code=\"authbutton.divider.text\" bundle=\"login\"}}\n
    \n {{/unless}}\n `,\n initialize() {\n const appState = this.options.appState;\n const deviceChallengePollRemediation = this.options.appState.hasRemediationObject(FORMS.LAUNCH_AUTHENTICATOR);\n\n const deviceChallenge = deviceChallengePollRemediation?.relatesTo?.value;\n this.add(createButton({\n className: 'button',\n icon: 'okta-verify-authenticator',\n title: loc('oktaVerify.button', 'login'),\n click() {\n if (this.settings.get('features.engFastpassMultipleAccounts') && this.model.get('identifier')) {\n this.options.settings.set('identifier', encodeURIComponent(this.model.get('identifier')));\n }\n\n const isUVapproach = deviceChallenge?.challengeMethod === Enums.UNIVERSAL_LINK_CHALLENGE;\n if (isUVapproach) {\n // launch the Okta Verify app\n let deviceChallengeUrl = appendLoginHint(deviceChallenge.href, this.options?.settings?.get('identifier'));\n Util.redirect(deviceChallengeUrl);\n }\n\n const isAppLinkapproach = deviceChallenge?.challengeMethod === Enums.APP_LINK_CHALLENGE;\n if (isAppLinkapproach) {\n // launch the Okta Verify app\n let deviceChallengeUrl = appendLoginHint(deviceChallenge.href, this.options?.settings?.get('identifier'));\n Util.redirect(deviceChallengeUrl, window, true);\n }\n\n // OKTA-350084\n // For the universal link (iOS) and app link (Android) approach,\n // we need to 1. launch the Okta Verify app\n // and 2. take the enduser to the next step right away\n // In Safari, when Okta Verify app is not installed, step 1 responds with error immediately,\n // then step 2 will respond with error.\n // To avoid showing the error right before switching to the next UI,\n // wait for 500 milliseconds before invoking step 2\n Util.callAfterTimeout(() => {\n if (this.options.isRequired) {\n appState.trigger('saveForm', this.model);\n } else {\n appState.trigger('invokeAction', FORMS.LAUNCH_AUTHENTICATOR);\n }\n }, isUVapproach || isAppLinkapproach ? UNIVERSAL_LINK_POST_DELAY : 0);\n }\n }), '.okta-verify-container');\n },\n\n getTemplateData() {\n return {\n signInWithDeviceIsRequired: !!this.options.isRequired,\n };\n }\n});\n","import { View, createButton } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\n\nexport default View.extend({\n className: 'sign-in-with-idp',\n template: hbs`\n {{#if isSecondaryIdpDisplay}}\n
    {{i18n code=\"socialauth.divider.text\" bundle=\"login\"}}
    \n {{/if}}\n
    \n {{#if isPrimaryIdpDisplay}}\n
    {{i18n code=\"socialauth.divider.text\" bundle=\"login\"}}
    \n {{/if}} \n `,\n initialize() {\n this.options.idpButtons.forEach((idpButton) => {\n this.add(createButton(idpButton), '.okta-idps-container');\n });\n },\n\n getTemplateData() {\n const jsonData = View.prototype.getTemplateData.apply(this, arguments);\n const addDivider = this.options.idpButtons.length > 0;\n\n return Object.assign(jsonData, {\n isPrimaryIdpDisplay: addDivider && this.options.isPrimaryIdpDisplay,\n isSecondaryIdpDisplay: addDivider && !this.options.isPrimaryIdpDisplay\n });\n }\n});\n","import { loc } from 'okta';\nimport BaseForm from '../../internals/BaseForm';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\n\nconst Body = BaseForm.extend({\n\n title() {\n const displayName = this.options.appState.getAuthenticatorDisplayName();\n return this.options.appState.isAuthenticatorChallenge()\n ? loc('oie.symantecVip.challenge.title', 'login', [displayName])\n : loc('oie.symantecVip.enroll.title', 'login', [displayName]);\n },\n\n subtitle() {\n const displayName = this.options.appState.getAuthenticatorDisplayName();\n return this.options.appState.isAuthenticatorChallenge()\n ? loc('oie.symantecVip.challenge.description', 'login', [displayName])\n : loc('oie.symantecVip.enroll.description', 'login', [displayName]);\n },\n\n save() {\n return this.options.appState.isAuthenticatorChallenge()\n ? loc('mfa.challenge.verify', 'login')\n : loc('mfa.enroll', 'login');\n },\n\n});\n\nexport default BaseAuthenticatorView.extend({\n Body,\n});\n","import { loc, View, createCallout } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\n\nexport default View.extend({\n // eslint-disable-next-line max-len\n template: hbs`

    {{i18n code=\"oie.verify.webauthn.instructions\" bundle=\"login\"}}

    `,\n initialize() {\n const relatesToObject = this.options.currentViewState.relatesTo;\n const challengeData = relatesToObject?.value.contextualData.challengeData;\n if (challengeData.userVerification === 'required') {\n this.add(createCallout({\n className: 'uv-required-callout',\n size: 'slim',\n type: 'warning',\n subtitle: loc('oie.verify.webauthn.uv.required.instructions', 'login'),\n }));\n }\n this.add('
    ');\n },\n});\n","import { _, loc, createButton, createCallout } from 'okta';\nimport { BaseForm } from '../../internals';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\nimport CryptoUtil from '../../../../util/CryptoUtil';\nimport webauthn from '../../../../util/webauthn';\nimport BrowserFeatures from '../../../../util/BrowserFeatures';\nimport ChallengeWebauthnInfoView from './ChallengeWebauthnInfoView';\nimport { getMessageFromBrowserError } from '../../../ion/i18nTransformer';\nimport ChallengeWebauthnFooter from '../../components/ChallengeWebauthnFooter';\n\nconst Body = BaseForm.extend({\n\n title() {\n return loc('oie.verify.webauth.title', 'login');\n },\n\n className: 'oie-verify-webauthn',\n\n getUISchema() {\n const schema = [];\n // Returning custom array so no input fields are displayed for webauthn\n if (webauthn.isNewApiAvailable()) {\n const retryButton = createButton({\n className: 'retry-webauthn button-primary default-custom-button',\n title: loc('mfa.challenge.verify', 'login'),\n click: () => {\n this.getCredentialsAndSave();\n }\n });\n\n schema.push({\n View: ChallengeWebauthnInfoView,\n }, {\n View: retryButton,\n });\n } else {\n schema.push({\n View: createCallout({\n className: 'webauthn-not-supported',\n type: 'error',\n subtitle: loc('oie.webauthn.error.not.supported', 'login'),\n }),\n });\n }\n return schema;\n },\n\n remove() {\n BaseForm.prototype.remove.apply(this, arguments);\n if (this.webauthnAbortController) {\n this.webauthnAbortController.abort();\n this.webauthnAbortController = null;\n }\n },\n\n noButtonBar: true,\n\n modelEvents: {\n 'error': '_stopVerification'\n },\n\n getCredentialsAndSave() {\n this.clearErrors();\n this._startVerification();\n // AbortController is not supported in IE11\n // eslint-disable-next-line compat/compat\n this.webauthnAbortController = new AbortController();\n const relatesToObject = this.options.currentViewState.relatesTo;\n const authenticatorData = relatesToObject?.value || {};\n const allowCredentials = [];\n const authenticatorEnrollments = this.options.appState.get('authenticatorEnrollments').value || [];\n authenticatorEnrollments.forEach((enrollement) => {\n if (enrollement.key === 'webauthn') {\n allowCredentials.push({\n type: 'public-key',\n id: CryptoUtil.strToBin(enrollement.credentialId),\n });\n }\n });\n const challengeData = authenticatorData.contextualData.challengeData;\n const options = _.extend({}, challengeData, {\n allowCredentials,\n challenge: CryptoUtil.strToBin(challengeData.challenge),\n });\n // navigator.credentials() is not supported in IE11\n // eslint-disable-next-line compat/compat\n navigator.credentials.get({\n publicKey: options,\n signal: this.webauthnAbortController.signal\n }).then((assertion) => {\n this.model.set({\n credentials : {\n clientData: CryptoUtil.binToStr(assertion.response.clientDataJSON),\n authenticatorData: CryptoUtil.binToStr(assertion.response.authenticatorData),\n signatureData: CryptoUtil.binToStr(assertion.response.signature),\n }\n });\n this.saveForm(this.model);\n }, (error) => {\n // Do not display if it is abort error triggered by code when switching.\n // this.webauthnAbortController would be null if abort was triggered by code.\n if (this.webauthnAbortController) {\n this.model.trigger('error', this.model, {responseJSON: {errorSummary: getMessageFromBrowserError(error)}});\n }\n }).finally(() => {\n // unset webauthnAbortController on successful authentication or error\n this.webauthnAbortController = null;\n });\n },\n\n _startVerification: function() {\n this.$('.okta-waiting-spinner').show();\n this.$('.retry-webauthn').hide();\n this.$('.retry-webauthn')[0].textContent = loc('retry', 'login');\n },\n\n _stopVerification: function() {\n this.$('.okta-waiting-spinner').hide();\n this.$('.retry-webauthn').show();\n }\n});\n\nexport default BaseAuthenticatorView.extend({\n Body,\n Footer: ChallengeWebauthnFooter,\n postRender() {\n BaseAuthenticatorView.prototype.postRender.apply(this, arguments);\n // Trigger browser prompt automatically for other browsers for better UX.\n if (webauthn.isNewApiAvailable() && !BrowserFeatures.isSafari()) {\n this.form.getCredentialsAndSave();\n }\n },\n});\n","import { loc, View, createCallout } from 'okta';\nimport BrowserFeatures from 'util/BrowserFeatures';\nimport hbs from 'handlebars-inline-precompile';\n\nexport default View.extend({\n // eslint-disable-next-line max-len\n template: hbs`

    {{i18n code=\"oie.enroll.webauthn.instructions\" bundle=\"login\"}}

    `,\n initialize() {\n const relatesToObject = this.options.currentViewState.relatesTo;\n const activationData = relatesToObject?.value.contextualData.activationData;\n if (BrowserFeatures.isEdge()) {\n this.add(View.extend({\n tagName: 'p',\n className: 'idx-webauthn-enroll-text-edge',\n template: hbs`{{i18n code=\"oie.enroll.webauthn.instructions.edge\" bundle=\"login\"}}`\n }));\n }\n if (activationData.authenticatorSelection.userVerification === 'required') {\n this.add(createCallout({\n className: 'uv-required-callout',\n size: 'slim',\n type: 'warning',\n subtitle: loc('oie.enroll.webauthn.uv.required.instructions', 'login'),\n }));\n }\n this.add('
    ');\n },\n});\n","import { _, loc, createCallout, createButton } from 'okta';\nimport { BaseForm } from '../../internals';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\nimport webauthn from '../../../../util/webauthn';\nimport CryptoUtil from '../../../../util/CryptoUtil';\nimport EnrollWebauthnInfoView from './EnrollWebauthnInfoView';\nimport { getMessageFromBrowserError } from '../../../ion/i18nTransformer';\n\nfunction getExcludeCredentials(authenticatorEnrollments = []) {\n const credentials = [];\n authenticatorEnrollments.forEach((enrollement) => {\n if (enrollement.key === 'webauthn') {\n credentials.push({\n type: 'public-key',\n id: CryptoUtil.strToBin(enrollement.credentialId),\n });\n }\n });\n return credentials;\n}\n\nconst Body = BaseForm.extend({\n title() {\n return loc('oie.enroll.webauthn.title', 'login');\n },\n className: 'oie-enroll-webauthn',\n modelEvents: {\n 'error': '_stopEnrollment',\n },\n getUISchema() {\n const schema = [];\n // Returning custom array so no input fields are displayed for webauthn\n if (webauthn.isNewApiAvailable()) {\n schema.push({\n View: EnrollWebauthnInfoView,\n });\n schema.push({\n View: createButton({\n className: 'webauthn-setup button button-primary button-wide',\n title: loc('oie.enroll.webauthn.save', 'login'),\n click: () => {\n this.triggerWebauthnPrompt();\n },\n }),\n });\n } else {\n schema.push({\n View: createCallout({\n className: 'webauthn-not-supported',\n type: 'error',\n subtitle: loc('oie.webauthn.error.not.supported', 'login'),\n }),\n });\n }\n return schema;\n },\n triggerWebauthnPrompt() {\n this.$el.find('.o-form-error-container').empty();\n this._startEnrollment();\n const relatesToObject = this.options.currentViewState.relatesTo;\n const activationData = relatesToObject?.value.contextualData.activationData;\n if (webauthn.isNewApiAvailable()) {\n var options = _.extend({}, activationData, {\n challenge: CryptoUtil.strToBin(activationData.challenge),\n user: {\n id: CryptoUtil.strToBin(activationData.user.id),\n name: activationData.user.name,\n displayName: activationData.user.displayName\n },\n excludeCredentials: getExcludeCredentials(this.options.appState.get('authenticatorEnrollments').value)\n });\n this.webauthnAbortController = new AbortController();\n navigator.credentials.create({\n publicKey: options,\n signal: this.webauthnAbortController.signal\n }).then((newCredential) => {\n this.model.set({\n credentials : {\n clientData: CryptoUtil.binToStr(newCredential.response.clientDataJSON),\n attestation: CryptoUtil.binToStr(newCredential.response.attestationObject),\n }\n });\n this.saveForm(this.model);\n })\n .catch((error) => {\n this.model.trigger('error', this.model, {responseJSON: {errorSummary: getMessageFromBrowserError(error)}});\n }).finally(() => {\n this.webauthnAbortController = null;\n });\n }\n },\n _startEnrollment: function() {\n this.$('.okta-waiting-spinner').show();\n this.$('.webauthn-setup').hide();\n },\n\n _stopEnrollment: function() {\n this.$('.okta-waiting-spinner').hide();\n this.$('.webauthn-setup').show();\n },\n});\n\nexport default BaseAuthenticatorView.extend({\n Body,\n postRender() {\n BaseAuthenticatorView.prototype.postRender.apply(this, arguments);\n this.$el.find('.o-form-button-bar [type=\"submit\"]').remove();\n },\n});\n","import { loc, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport BaseForm from '../../internals/BaseForm';\nimport BaseAuthenticatorView from '../../components/BaseAuthenticatorView';\n\nconst ExampleView = View.extend({\n template: hbs`
    `,\n});\n\nconst Body = BaseForm.extend({\n title() {\n return this.options.appState.isAuthenticatorChallenge()\n ? loc('oie.yubikey.challenge.title', 'login')\n : loc('oie.yubikey.enroll.title', 'login');\n },\n\n subtitle() {\n return loc('oie.yubikey.description', 'login');\n },\n\n save() {\n return loc('mfa.challenge.verify', 'login');\n },\n\n getUISchema() {\n const schema = BaseForm.prototype.getUISchema.apply(this, arguments);\n schema.unshift({\n View: ExampleView,\n selector: '.o-form-fieldset-container',\n });\n return schema;\n },\n\n});\n\nexport default BaseAuthenticatorView.extend({\n Body,\n});\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 { _, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Enums from 'util/Enums';\nexport default View.extend({\n className: 'hide resend-email-infobox',\n template: hbs`\n
    \n \n

    \n {{i18n code=\"email.code.not.received\" bundle=\"login\"}}\n \n {{i18n code=\"email.button.resend\" bundle=\"login\"}}\n \n

    \n
    \n `,\n\n events: {\n 'click .resend-email-btn': 'resendEmail',\n },\n\n postRender: function() {\n this.showResendCallout();\n },\n\n showResendCallout: function() {\n _.delay(() => {\n this.$el.removeClass('hide');\n }, Enums.API_RATE_LIMIT);\n },\n\n hideResendCallout: function() {\n this.$el.addClass('hide');\n },\n\n resendEmail: function(e) {\n e.preventDefault();\n this.hideResendCallout();\n this.model.resend().finally(this.showResendCallout.bind(this));\n },\n});\n","/*!\n * Copyright (c) 2020, 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 { View, _ } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport 'qtip';\n\nexport default View.extend({\n className: 'scope-item',\n template: hbs`\n

    {{name}}

    \n {{#if description}}\n \n {{/if}}`,\n\n postRender: function() {\n this.$('.scope-item-tooltip').qtip({\n content: {\n text: _.escape(this.options.description)\n },\n style: { classes: 'okta-tooltip qtip-custom qtip-shadow' },\n position: {\n my: 'bottom left',\n target: 'mouse'\n }\n });\n }\n});\n\n","/*!\n * Copyright (c) 2017, 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 max-len: [2, 131] */\nimport hbs from 'handlebars-inline-precompile';\nimport { _, View, loc } from 'okta';\nimport ScopeItem from './ScopeItem';\n\nconst SCOPE_N_GROUP_CONFIG = {\n groups: 'user',\n myAccount: 'user',\n users: 'user',\n apps: 'resource',\n authenticators: 'resource',\n authorizationServers: 'resource',\n clients: 'resource',\n domains: 'resource',\n factors: 'resource',\n idps: 'resource',\n linkedObjects: 'resource',\n policies: 'resource',\n templates: 'resource',\n eventHooks: 'hook',\n inlineHooks: 'hook',\n events: 'system',\n logs: 'system',\n orgs: 'system',\n roles: 'system',\n schemas: 'system',\n sessions: 'system',\n trustedOrigins: 'system',\n};\n\nconst DEFAULT_GROUP = 'system';\n\nconst findScopeGroupKey = ({ name = '' }) => {\n const xs = name.split('.');\n const groupType = xs[1];\n\n return SCOPE_N_GROUP_CONFIG[groupType] || DEFAULT_GROUP;\n};\n\nconst ScopeGroupHeaderView = View.extend({\n className: 'scope-group',\n\n events: {\n 'click': 'expandScopes',\n },\n\n template: hbs`\n
    \n

    {{groupName}}

    \n \n \n \n \n \n \n
    `,\n\n expandScopes() {\n this.$el.toggleClass('scope-group--is-expanded');\n this.$('.caret').toggleClass('caret--is-rotated');\n },\n\n preRender() {\n _.chain(this.options.scopes)\n .sortBy(({ name }) => name)\n .each(({ name, displayName, description }) => {\n this.add(ScopeItem, {\n options: {\n name: displayName || name,\n description,\n },\n });\n });\n }\n});\n\nexport default View.extend({\n className: 'scope-list detail-row',\n\n postRender: function() {\n const allScopes = this.model.get('scopes');\n const scopesWithGroup = _.groupBy(allScopes, findScopeGroupKey);\n\n const SCOPE_GROUP_NAMES_CONFIG = {\n 'user': loc('admin.consent.group.user.group', 'login'),\n 'resource': loc('admin.consent.group.resource.policy', 'login'),\n 'hook': loc('admin.consent.group.hook', 'login'),\n 'system': loc('admin.consent.group.system', 'login'),\n };\n\n // loop through SCOPE_GROUP_NAMES_CONFIG to keep group order consistent in UI.\n _.each(SCOPE_GROUP_NAMES_CONFIG, (groupName, groupKey) => {\n const scopes = scopesWithGroup[groupKey];\n if (!Array.isArray(scopes)) {\n return;\n }\n // add scope group header and scopes\n this.add(ScopeGroupHeaderView, {\n options: {\n groupName,\n scopes,\n }\n });\n });\n },\n});\n","/*!\n * Copyright (c) 2017, 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 { View, _ } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport 'qtip';\nexport default View.extend({\n className: 'scope-item',\n template: hbs(\n '\\\n
    \\\n

    {{name}}

    \\\n
    \\\n {{#if description}}\\\n \\\n {{/if}}\\\n '\n ),\n getTemplateData() {\n const { name, description, isCustomized } = this.options;\n const baseClass = 'scope-item-text';\n const classNames = (name === 'openid' || isCustomized)\n ? `${baseClass} no-translate`: baseClass;\n return { classNames, name, description };\n },\n\n postRender: function() {\n this.$('.scope-item-tooltip').qtip({\n content: {\n text: _.escape(this.options.description),\n },\n style: { classes: 'okta-tooltip qtip-custom qtip-shadow' },\n position: {\n my: 'bottom right',\n target: 'mouse',\n },\n });\n },\n});\n","/*!\n * Copyright (c) 2017, 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 { View } from 'okta';\nimport ScopeItem from './ScopeItem';\nexport default View.extend({\n className: 'scope-list detail-row',\n\n postRender: function() {\n this.model.get('scopes').forEach(scope => {\n this.add(ScopeItem, {\n options: {\n name: scope.displayName || scope.name,\n description: scope.description,\n isCustomized: scope.isCustomized,\n },\n });\n });\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { _, ListView, View, createButton, loc } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport FactorUtil from 'util/FactorUtil';\nimport RouterUtil from 'util/RouterUtil';\nconst cardinalityTextTpl = hbs('{{cardinalityText}}');\nconst FactorListFactorRow = View.extend({\n tagName: 'li',\n\n className: 'enroll-factor-row clearfix',\n\n template: hbs(\n '\\\n
    \\\n
    \\\n
    \\\n
    \\\n
    \\\n

    {{factorLabel}}

    \\\n {{#if factorDescription}}\\\n

    {{factorDescription}}

    \\\n {{/if}}\\\n
    \\\n
    \\\n '\n ),\n\n attributes: function() {\n return { 'data-se': this.model.get('factorName') };\n },\n\n children: function() {\n const children = [];\n const enrolled = this.model.get('enrolled');\n const required = this.model.get('required');\n const cardinality = this.model.get('cardinality');\n\n if (this.options.showInlineSetupButton) {\n return [\n [\n createButton({\n className: 'button',\n title: this.getSetupButtonText(),\n click: function() {\n this.options.appState.trigger(\n 'navigate',\n RouterUtil.createEnrollFactorUrl(this.model.get('provider'), this.model.get('factorType'))\n );\n },\n }),\n '.enroll-factor-button',\n ],\n ];\n } else if (enrolled) {\n children.push(['', '.enroll-factor-label']);\n } else if (required) {\n children.push(['', '.enroll-factor-label']);\n }\n\n const cardinalityText = FactorUtil.getCardinalityText(enrolled, required, cardinality);\n\n if (cardinalityText) {\n children.push([cardinalityTextTpl({ cardinalityText: cardinalityText }), '.enroll-factor-description']);\n }\n return children;\n },\n\n minimize: function() {\n this.$el.addClass('enroll-factor-row-min');\n },\n\n maximize: function() {\n this.$el.removeClass('enroll-factor-row-min');\n },\n\n getSetupButtonText: function() {\n return this.model.get('additionalEnrollment')\n ? loc('enroll.choices.setup.another', 'login')\n : loc('enroll.choices.setup', 'login');\n },\n});\nexport default ListView.extend({\n className: 'enroll-factor-list',\n\n item: FactorListFactorRow,\n\n itemSelector: '.list-content',\n\n template: hbs(\n '\\\n {{#if listTitle}}\\\n

    {{listTitle}}

    \\\n {{/if}}\\\n
      \\\n '\n ),\n\n getTemplateData: function() {\n const json = ListView.prototype.getTemplateData.call(this);\n\n _.extend(json, this);\n return json;\n },\n\n postRender: function() {\n if (this.options.minimize) {\n this.invoke('minimize');\n }\n },\n});\n","/*!\n * Copyright (c) 2019, 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 { View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nexport default View.extend({\n template: hbs`\n \n {{i18n code=\"enroll.choices.setup.skip\" bundle=\"login\"}}\n \n `,\n className: 'auth-footer clearfix',\n events: {\n 'click .js-skip': function(e) {\n e.preventDefault();\n this.model.doTransaction(function(transaction) {\n return transaction.skip();\n });\n },\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { _, loc } from 'okta';\nimport FactorList from './FactorList';\nexport default FactorList.extend({\n listTitle: _.partial(loc, 'enroll.choices.list.setup', 'login'),\n\n className: function() {\n return FactorList.prototype.className + ' enroll-required-factor-list';\n },\n\n postRender: function() {\n let currentModel;\n let currentRow;\n\n FactorList.prototype.postRender.apply(this, arguments);\n currentModel = this.options.appState.get('factors').getFirstUnenrolledRequiredFactor();\n currentRow = this.find(function(view) {\n return view.model === currentModel;\n });\n currentRow.maximize();\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { _, View, loc } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport FactorUtil from 'util/FactorUtil';\nimport RouterUtil from 'util/RouterUtil';\nexport default View.extend({\n className: 'scan-instructions clearfix',\n template: hbs`\n
      \n
      \n

      {{instructions}}

      \n
      \n
      \n \n `,\n\n events: {\n 'click [data-type=\"manual-setup\"]': function(e) {\n e.preventDefault();\n const url = RouterUtil.createActivateFactorUrl(\n this.model.get('__provider__'),\n this.model.get('__factorType__'),\n 'manual'\n );\n if (this.model.get('__factorType__') === 'push') {\n // cancel the poll and navigate to manual setup.\n this.model\n .doTransaction(function(transaction) {\n return transaction.prev().then(function(trans) {\n const factor = _.findWhere(trans.factors, {\n factorType: 'push',\n provider: 'OKTA',\n });\n\n return factor.enroll();\n });\n })\n .then(() => {\n this.options.appState.trigger('navigate', url);\n });\n } else {\n this.options.appState.trigger('navigate', url);\n }\n },\n 'click [data-type=\"refresh-qrcode\"]': function(e) {\n e.preventDefault();\n this.model.trigger('errors:clear');\n\n const self = this;\n\n this.model\n .doTransaction(function(transaction) {\n if (this.appState.get('isWaitingForActivation')) {\n return transaction.poll();\n } else {\n return transaction.activate();\n }\n })\n .then(function(trans) {\n const res = trans.data;\n\n if (\n (res.status === 'MFA_ENROLL_ACTIVATE' || res.status === 'FACTOR_ENROLL_ACTIVATE') &&\n res.factorResult === 'WAITING'\n ) {\n // defer the render here to have a lastResponse set in AppState\n // so that we get new QRcode rendered\n _.defer(_.bind(self.render, self));\n }\n });\n },\n },\n\n initialize: function() {\n this.listenTo(this.options.appState, 'change:lastAuthResponse', function() {\n if (this.options.appState.get('isMfaEnrollActivate')) {\n this.$el.toggleClass('qrcode-expired', !this.options.appState.get('isWaitingForActivation'));\n } else if (this.options.appState.get('isSuccessResponse')) {\n this.$el.addClass('qrcode-success');\n }\n });\n this.listenTo(this.model, 'error', function() {\n if (this.options.appState.get('isMfaEnrollActivate')) {\n this.$el.toggleClass('qrcode-expired', true);\n }\n });\n },\n\n getTemplateData: function() {\n const factorName = FactorUtil.getFactorLabel(this.model.get('__provider__'), this.model.get('__factorType__'));\n let instructions;\n\n if (this.model.get('__provider__') === 'GOOGLE') {\n instructions = loc('enroll.totp.setupGoogleAuthApp', 'login', [factorName]);\n } else {\n instructions = loc('enroll.totp.setupApp', 'login', [factorName]);\n }\n return {\n instructions: instructions,\n qrcode: this.options.appState.get('qrcode'),\n altQRCode: loc('mfa.altQrCode', 'login')\n };\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { _, loc } from 'okta';\nimport FactorUtil from 'util/FactorUtil';\nimport FormType from 'util/FormType';\nimport Util from 'util/Util';\nimport TextBox from 'views/shared/TextBox';\nconst form = {\n title: function() {\n const factorName = FactorUtil.getFactorLabel(this.model.get('__provider__'), this.model.get('__factorType__'));\n\n return loc('enroll.totp.title', 'login', [factorName]);\n },\n subtitle: _.partial(loc, 'enroll.totp.enterCode', 'login'),\n autoSave: true,\n noButtonBar: true,\n attributes: { 'data-se': 'step-sendcode' },\n\n formChildren: function() {\n return [\n FormType.Input({\n label: loc('mfa.challenge.enterCode.placeholder', 'login'),\n 'label-top': true,\n explain: Util.createInputExplain(\n 'mfa.challenge.enterCode.tooltip',\n 'mfa.challenge.enterCode.placeholder',\n 'login'\n ),\n 'explain-top': true,\n name: 'passCode',\n input: TextBox,\n type: 'tel',\n }),\n FormType.Toolbar({\n noCancelButton: true,\n save: loc('oform.verify', 'login'), // TODO: deprecated by mfa.challenge.verify\n }),\n ];\n },\n};\nexport default form;\n","/*!\n * Copyright (c) 2015-2016, 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 { View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Enums from 'util/Enums';\nexport default View.extend({\n template: hbs(\n '\\\n \\\n {{i18n code=\"mfa.backToFactors\" bundle=\"login\"}}\\\n \\\n '\n ),\n className: 'auth-footer',\n events: {\n 'click .js-back': function(e) {\n e.preventDefault();\n this.options.appState.trigger('backToFactors');\n this.back();\n },\n },\n\n back: function() {\n this.state.set('navigateDir', Enums.DIRECTION_BACK);\n if (this.options.appState.get('prevLink')) {\n // Once we are in the MFA_ENROLL_ACTIVATE, we need to reset to the\n // correct state. Fortunately, this means that the router will\n // handle navigation once the request is finished.\n this.model.doTransaction(function(transaction) {\n return transaction.prev();\n });\n } else {\n this.options.appState.trigger('navigate', 'signin/enroll');\n }\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Enums from 'util/Enums';\n\nexport default View.extend({\n template: hbs(\n '\\\n \\\n {{i18n code=\"mfa.backToFactors\" bundle=\"login\"}}\\\n \\\n \\\n {{i18n code=\"mfa.scanBarcode\" bundle=\"login\"}}\\\n \\\n '\n ),\n className: 'auth-footer',\n events: {\n 'click .js-back': function(e) {\n e.preventDefault();\n this.back();\n },\n 'click .js-goto': function(e) {\n e.preventDefault();\n // go to a different screen with current auth status:\n // refresh the latest response\n this.model.startTransaction(function(authClient) {\n return authClient.tx.resume();\n });\n },\n },\n back: function() {\n this.state.set('navigateDir', Enums.DIRECTION_BACK);\n if (this.options.appState.get('prevLink')) {\n // Once we are in the MFA_ENROLL_ACTIVATE, we need to reset to the\n // correct state. Fortunately, this means that the router will\n // handle navigation once the request is finished.\n this.model.doTransaction(function(transaction) {\n return transaction.prev();\n });\n } else {\n this.options.appState.trigger('navigate', 'signin/enroll');\n }\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { _, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport RouterUtil from 'util/RouterUtil';\n\nfunction goToFactorActivation(appState) {\n const url = RouterUtil.createActivateFactorUrl(\n appState.get('activatedFactorProvider'),\n appState.get('activatedFactorType')\n );\n\n appState.trigger('navigate', url);\n}\n\nexport default View.extend({\n template: hbs(\n '\\\n \\\n {{i18n code=\"mfa.backToFactors\" bundle=\"login\"}}\\\n \\\n \\\n {{i18n code=\"mfa.scanBarcode\" bundle=\"login\"}}\\\n \\\n '\n ),\n className: 'auth-footer',\n events: {\n 'click .js-back': function(e) {\n e.preventDefault();\n this.back();\n },\n 'click .js-goto': function(e) {\n e.preventDefault();\n\n const goToFactor = _.partial(goToFactorActivation, this.options.appState);\n\n this.options.appState.unset('factorActivationType');\n this.model\n .doTransaction(function(transaction) {\n return transaction.prev().then(function(trans) {\n const factor = _.findWhere(trans.factors, {\n factorType: 'push',\n provider: 'OKTA',\n });\n\n return factor.enroll();\n });\n })\n .then(goToFactor);\n },\n },\n back: function() {\n const self = this;\n\n self.options.appState.unset('factorActivationType');\n if (self.options.appState.get('prevLink')) {\n this.model\n .doTransaction(function(transaction) {\n return transaction.prev();\n })\n .then(function() {\n // we trap 'MFA_ENROLL' response that's why we need to trigger navigation from here\n self.options.appState.trigger('navigate', 'signin/enroll');\n });\n } else {\n self.options.appState.trigger('navigate', 'signin/enroll');\n }\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { _, internal } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nlet { TextBox } = internal.views.forms.inputs;\nexport default TextBox.extend({\n template: hbs(\n '\\\n {{countryCallingCode}}\\\n \\\n \\\n \\\n '\n ),\n\n initialize: function() {\n this.listenTo(this.model, 'change:countryCallingCode', function() {\n this.$('.o-form-label-inline').text(this.model.get('countryCallingCode'));\n });\n },\n\n preRender: function() {\n this.options.countryCallingCode = this.model.get('countryCallingCode');\n },\n\n postRender: function() {\n // This is a hack - once inputGroups are done, get rid of it!!\n this.$el.removeClass('input-fix o-form-control');\n _.defer(() => {\n this.$el.parent().addClass('o-form-input-group');\n });\n },\n});\n","/*!\n * Copyright (c) 2019, 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 max-len: [2, 130] */\nimport { Form, loc } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport ProfileSchema from 'models/ProfileSchema';\nimport RegistrationFormFactory from 'util/RegistrationFormFactory';\nexport default Form.extend({\n layout: 'o-form-theme',\n autoSave: true,\n noCancelButton: true,\n title() {\n return loc('registration.form.title', 'login');\n },\n save() {\n return loc('registration.form.submit', 'login');\n },\n initialize: function(options) {\n this.options = options || {};\n this.schema = new ProfileSchema({\n profileSchemaAttributes: this.options.appState.get('policy').registration.profile,\n });\n this.schema.properties.each(schemaProperty => {\n const inputOptions = RegistrationFormFactory.createInputOptions(schemaProperty);\n\n this.addInput(inputOptions);\n });\n const requiredFieldsLabel = hbs('{{label}}')({\n label: loc('registration.required.fields.label', 'login'),\n });\n\n this.add(requiredFieldsLabel);\n },\n});\n","/*!\n * Copyright (c) 2017, 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 { View, internal } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Enums from 'util/Enums';\nconst { Util } = internal.util;\nexport default View.extend({\n template: hbs(\n '\\\n {{#if passwordWarn}}\\\n \\\n {{i18n code=\"password.expiring.later\" bundle=\"login\"}}\\\n \\\n {{/if}}\\\n \\\n {{i18n code=\"signout\" bundle=\"login\"}}\\\n \\\n '\n ),\n className: 'auth-footer clearfix',\n events: {\n 'click .js-signout': function(e) {\n e.preventDefault();\n const self = this;\n const authClient = self.settings.authClient;\n\n this.model\n .doTransaction(function(transaction) {\n return transaction.cancel();\n })\n .then(function() {\n return authClient.session.exists();\n })\n .then(function(sessionExists) {\n if (sessionExists) {\n return authClient.closeSession().catch(() => {});\n }\n })\n .then(function() {\n if (self.settings.get('signOutLink')) {\n Util.redirect(self.settings.get('signOutLink'));\n } else {\n self.state.set('navigateDir', Enums.DIRECTION_BACK);\n self.options.appState.trigger('navigate', '');\n }\n });\n },\n 'click .js-skip': function(e) {\n e.preventDefault();\n this.model.doTransaction(function(transaction) {\n return transaction.skip();\n });\n },\n },\n getTemplateData: function() {\n return { passwordWarn: this.options.appState.get('isPwdExpiringSoon') };\n },\n});\n","/*!\n * Copyright (c) 2019, 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: [2, 7] */\nimport { Form, createButton, loc } from 'okta';\nimport Q from 'q';\nimport Enums from 'util/Enums';\nexport default Form.extend({\n layout: 'o-form-theme',\n className: 'factor-verify-magiclink',\n autoSave: true,\n noCancelButton: true,\n initialize: function() {\n const form = this;\n // for FACTOR_REQUIRED with email magic link we dont need to show otp code input field and verify button\n\n this.title = this.model.get('factorLabel');\n //TODO: OKTA-211618 Temp fix for demo. FACTOR_REQUIRED after sign up is missing the profile object in API response\n\n const email = this.model.get('email') || this.options.appState.get('lastAuthResponse')._embedded.user.profile.login;\n\n this.subtitle = '(' + email + ')';\n this.add(\n createButton({\n attributes: { 'data-se': 'email-send-code' },\n className: 'button email-request-button',\n title: loc('mfa.sendEmail', 'login'),\n click: function() {\n form.clearErrors();\n this.disable();\n this.options.title = loc('mfa.sent', 'login');\n this.render();\n this.model\n .save()\n .then(() => {\n return Q.delay(Enums.API_RATE_LIMIT);\n })\n .then(() => {\n this.options.title = loc('mfa.resendEmail', 'login');\n this.enable();\n this.render();\n });\n },\n })\n );\n },\n});\n","/*!\n * Copyright (c) 2015-2017, 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 { _, loc } from 'okta';\nimport PrimaryAuthForm from 'views/primary-auth/PrimaryAuthForm';\nexport default PrimaryAuthForm.extend({\n className: 'idp-discovery-form',\n save: function() {\n return loc('oform.next', 'login');\n },\n saveId: 'idp-discovery-submit',\n\n initialize: function() {\n this.listenTo(this, 'save', _.bind(this.model.save, this.model));\n this.stateEnableChange();\n },\n\n inputs: function() {\n const inputs = [];\n const usernameProps = {\n className: 'margin-btm-30',\n label: loc('primaryauth.username.placeholder', 'login'),\n inputId: 'idp-discovery-username',\n disabled: false,\n };\n\n inputs.push(_.extend(this.getUsernameField(), usernameProps));\n if (this.settings.get('features.rememberMe')) {\n inputs.push(this.getRemeberMeCheckbox());\n }\n return inputs;\n },\n\n focus: function() {\n if (!this.model.get('username')) {\n this.getInputs().first().focus();\n } else if (this.getInputs().toArray()[1]) {\n this.getInputs().toArray()[1].focus();\n }\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nconst template = hbs('\\\n \\\n

      {{{message}}}

      \\\n ');\n\n// Have to be unescaped for the html in enroll.windowsHello.error.notConfiguredHtml\n\nexport default View.extend({\n template: template,\n className: 'okta-infobox-error infobox infobox-error infobox-md margin-btm-25',\n attributes: {\n 'data-se': 'o-form-error-html',\n },\n\n message: '',\n\n initialize: function(options) {\n if (options && options.message) {\n this.message = options.message;\n }\n },\n\n getTemplateData: function() {\n return {\n message: this.message,\n };\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { loc, createButton, Form } from 'okta';\nimport TextBox from 'views/shared/TextBox';\n\nfunction addInlineTotp(form) {\n form.addDivider();\n form.addInput({\n label: loc('mfa.challenge.enterCode.placeholder', 'login'),\n 'label-top': true,\n className: 'o-form-fieldset o-form-label-top inline-input auth-passcode',\n name: 'answer',\n input: TextBox,\n type: 'tel',\n });\n form.add(\n createButton({\n attributes: { 'data-se': 'inline-totp-verify' },\n className: 'button inline-totp-verify margin-top-30',\n title: loc('mfa.challenge.verify', 'login'),\n click: function() {\n form.clearErrors();\n if (!form.isValid()) {\n return;\n }\n form.model.manageTransaction(function(transaction, setTransaction) {\n // This is the case where we enter the TOTP code and verify while there is an\n // active Push request (or polling) running. We need to invoke previous() on authClient\n // and then call model.save(). If not, we would still be in MFA_CHALLENGE state and\n // verify would result in a wrong request (push verify instead of a TOTP verify).\n if (transaction.status === 'MFA_CHALLENGE' && transaction.prev) {\n form.options.appState.set('trapMfaRequiredResponse', true);\n return transaction.prev().then(function(trans) {\n setTransaction(trans);\n form.model.save();\n });\n } else {\n // Push is not active and we enter the code to verify.\n form.model.save();\n }\n });\n },\n })\n );\n form.at(1).focus();\n}\n\nexport default Form.extend({\n autoSave: true,\n noButtonBar: true,\n scrollOnError: false,\n layout: 'o-form-theme',\n\n className: 'mfa-verify-totp-inline',\n\n attributes: { 'data-se': 'factor-inline-totp' },\n\n initialize: function() {\n const form = this;\n\n this.listenTo(this.model, 'error', function() {\n this.clearErrors();\n });\n this.add(\n createButton({\n className: 'link',\n attributes: { 'data-se': 'inline-totp-add' },\n title: loc('mfa.challenge.orEnterCode', 'login'),\n click: function() {\n this.remove();\n addInlineTotp(form);\n },\n })\n );\n },\n});\n","/*!\n * Copyright (c) 2019, 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 { View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nexport default View.extend({\n className: 'number-challenge-view',\n template: hbs`\n

      \n {{{i18n code=\"oktaverify.numberchallenge.instruction\" bundle=\"login\" arguments=\"number\"}}}\n

      \n
      \n
      \n
      \n {{number}}\n
      \n
      \n
      \n
      \n

      {{i18n code=\"oktaverify.numberchallenge.explain\" bundle=\"login\"}}

      \n `,\n initialize() {\n this.listenTo(this.options.appState, 'change:isWaitingForNumberChallenge', () => {\n if (this.options.appState.get('lastAuthResponse').status !== 'SUCCESS') {\n this.render();\n }\n });\n },\n getTemplateData() {\n const lastAuthResponse = this.options.appState.get('lastAuthResponse');\n if (!this.options.appState.get('isWaitingForNumberChallenge')) {\n return {\n number: null,\n };\n }\n return {\n number: lastAuthResponse._embedded.factor._embedded.challenge.correctAnswer,\n };\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 complexity: [2, 7] */\nimport { _, loc, Form, createButton, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Q from 'q';\nimport Enums from 'util/Enums';\nimport TextBox from 'views/shared/TextBox';\nconst subtitleTpl = hbs('({{subtitle}})');\nconst PassCodeFormwarningTemplate = View.extend({\n className: 'okta-form-infobox-warning infobox infobox-warning login-timeout-warning',\n attributes: {\n 'aria-live': 'polite',\n },\n template: hbs`\n \n

      {{{warning}}}

      \n `,\n});\n\nfunction getFormAndButtonDetails(factorType) {\n switch (factorType) {\n case 'sms':\n return {\n buttonDataSe: 'sms-send-code',\n buttonClassName: 'sms-request-button',\n formSubmit: loc('mfa.sendCode', 'login'),\n formRetry: loc('mfa.resendCode', 'login'),\n formSubmitted: loc('mfa.sent', 'login'),\n subtitle: subtitleTpl({ subtitle: this.model.get('phoneNumber') }),\n warning: loc('factor.sms.time.warning', 'login'),\n };\n case 'call':\n return {\n buttonDataSe: 'make-call',\n buttonClassName: 'call-request-button',\n formSubmit: loc('mfa.call', 'login'),\n formRetry: loc('mfa.redial', 'login'),\n formSubmitted: loc('mfa.calling', 'login'),\n subtitle: subtitleTpl({ subtitle: this.model.get('phoneNumber') }),\n warning: loc('factor.call.time.warning', 'login'),\n };\n case 'email':\n return {\n buttonDataSe: 'email-send-code',\n buttonClassName: 'email-request-button',\n formSubmit: loc('mfa.sendEmail', 'login'),\n formRetry: loc('mfa.resendEmail', 'login'),\n formSubmitted: loc('mfa.sent', 'login'),\n subtitle: subtitleTpl({ subtitle: this.model.get('email') }),\n };\n default:\n return {\n buttonDataSe: '',\n buttonClassName: '',\n formSubmit: '',\n formRetry: '',\n formSubmitted: '',\n };\n }\n}\n\nexport default Form.extend({\n className: 'mfa-verify-passcode',\n autoSave: true,\n noCancelButton: true,\n save: _.partial(loc, 'mfa.challenge.verify', 'login'),\n scrollOnError: false,\n layout: 'o-form-theme',\n\n disableSubmitButton: function() {\n return this.model.appState.get('isMfaChallenge') && this.model.get('answer');\n },\n\n showWarning: function(msg) {\n this.clearWarnings();\n this.add(PassCodeFormwarningTemplate, '.o-form-error-container', { options: { warning: msg } });\n },\n clearWarnings: function() {\n this.$('.okta-form-infobox-warning').remove();\n },\n\n initialize: function() {\n const form = this;\n\n this.title = this.model.get('factorLabel');\n\n const factorType = this.model.get('factorType');\n const formAndButtonDetails = getFormAndButtonDetails.call(this, factorType);\n const warningDetails = formAndButtonDetails.warning;\n\n this.$el.attr('data-se', 'factor-' + factorType);\n\n this.subtitle = formAndButtonDetails.subtitle;\n this.listenTo(this.model, 'error', function() {\n this.clearErrors();\n });\n this.addInput({\n label: loc('mfa.challenge.enterCode.placeholder', 'login'),\n 'label-top': true,\n className: 'o-form-fieldset o-form-label-top auth-passcode',\n name: 'answer',\n input: TextBox,\n type: 'tel',\n });\n this.add(\n createButton({\n attributes: { 'data-se': formAndButtonDetails.buttonDataSe },\n className: 'button ' + formAndButtonDetails.buttonClassName,\n title: formAndButtonDetails.formSubmit,\n click: function() {\n form.clearErrors();\n this.disable();\n form.clearWarnings();\n this.options.title = formAndButtonDetails.formSubmitted;\n this.render();\n // To send an OTP to the device, make the same request but use\n // an empty passCode\n this.model.set('answer', '');\n this.model\n .save()\n .then(function() {\n // render and focus on the passcode input field.\n form.getInputs().first().render().focus();\n return Q.delay(Enums.API_RATE_LIMIT);\n })\n .then(() => {\n this.options.title = formAndButtonDetails.formRetry;\n this.enable();\n if (factorType === 'call' || factorType === 'sms') {\n form.showWarning(warningDetails);\n }\n this.render();\n });\n },\n })\n );\n if (this.options.appState.get('allowRememberDevice')) {\n this.addInput({\n label: false,\n 'label-top': true,\n placeholder: this.options.appState.get('rememberDeviceLabel'),\n className: 'margin-btm-0',\n name: 'rememberDevice',\n type: 'checkbox',\n });\n }\n },\n});\n","/*!\n * Copyright (c) 2016-2017, 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 { _, Form, loc } from 'okta';\nexport default Form.extend({\n className: 'mfa-verify-password',\n autoSave: true,\n noCancelButton: true,\n save: _.partial(loc, 'mfa.challenge.verify', 'login'),\n scrollOnError: false,\n layout: 'o-form-theme',\n attributes: { 'data-se': 'factor-password' },\n\n initialize: function() {\n this.title = this.model.get('factorLabel');\n\n this.addInput({\n label: loc('mfa.challenge.password.placeholder', 'login'),\n 'label-top': true,\n className: 'auth-passcode',\n name: 'password',\n type: 'password',\n params: {\n showPasswordToggle: true,\n },\n });\n\n if (this.options.appState.get('allowRememberDevice')) {\n this.addInput({\n label: false,\n 'label-top': true,\n placeholder: this.options.appState.get('rememberDeviceLabel'),\n className: 'margin-btm-0',\n name: 'rememberDevice',\n type: 'checkbox',\n });\n }\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { _, Form, loc, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Util from 'util/Util';\nimport NumberChallengeView from './NumberChallengeView';\n\nconst titleTpl = hbs('{{factorName}} ({{{deviceName}}})');\n// deviceName is escaped on BaseForm (see BaseForm's template)\n\nconst WARNING_TIMEOUT = 30000; // milliseconds\nconst PushFormwarningTemplate = View.extend({\n className: 'okta-form-infobox-warning infobox infobox-warning',\n attributes: {\n 'aria-live': 'polite',\n },\n template: hbs`\n \n

      {{warning}}

      \n `,\n});\n\nexport default Form.extend({\n className: 'mfa-verify-push',\n autoSave: true,\n noCancelButton: true,\n save: _.partial(loc, 'oktaverify.send', 'login'),\n scrollOnError: false,\n layout: 'o-form-theme',\n attributes: { 'data-se': 'factor-push' },\n events: {\n submit: 'submit',\n },\n\n initialize: function() {\n this.enabled = true;\n this.listenTo(this.options.appState, 'change:isMfaRejected', this.handleRejectStateChange);\n\n this.numberChallengeView = this.add(NumberChallengeView).last();\n this.listenTo(this.options.appState, 'change:isWaitingForNumberChallenge', function(\n state,\n isWaitingForNumberChallenge\n ) {\n if (isWaitingForNumberChallenge || this.options.appState.get('lastAuthResponse').status === 'SUCCESS') {\n this.clearWarnings();\n this.$el.find('.button').hide();\n this.numberChallengeView.$el.show();\n } else {\n this.numberChallengeView.$el.hide();\n this.$el.find('.button').show();\n }\n });\n this.listenTo(this.options.appState, 'change:isMfaTimeout', function(state, isMfaTimeout) {\n this.setSubmitState(isMfaTimeout);\n if (isMfaTimeout) {\n this.showError(loc('oktaverify.timeout', 'login'));\n }\n });\n this.listenTo(this.options.appState, 'change:isMfaRequired', function(state, isMfaRequired) {\n if (isMfaRequired) {\n this.clearErrors();\n this.clearWarnings();\n }\n });\n this.title = titleTpl({\n factorName: this.model.get('factorLabel'),\n deviceName: this.model.get('deviceName'),\n });\n },\n setSubmitState: function(ableToSubmit) {\n const button = this.$el.find('.button');\n const a11ySpan = this.$el.find('.accessibility-text');\n this.enabled = ableToSubmit;\n if (ableToSubmit) {\n button.removeClass('link-button-disabled');\n button.prop('value', loc('oktaverify.send', 'login'));\n button.prop('disabled', false);\n if (a11ySpan) {\n a11ySpan.remove();\n }\n } else {\n button.addClass('link-button-disabled');\n button.prop('value', loc('oktaverify.sent', 'login'));\n button.prop('disabled', true);\n this.add(\n `${loc('oktaverify.sent', 'login')}`,\n );\n }\n },\n submit: function(e) {\n if (e !== undefined) {\n e.preventDefault();\n }\n if (this.enabled) {\n this.setSubmitState(false);\n this.doSave();\n }\n },\n postRender: function() {\n const factorsPolicyInfo = this.options.appState.get('factorsPolicyInfo');\n const id = this.model.get('id');\n const isAutoPushEnabled = this.settings.get('features.autoPush') && factorsPolicyInfo && factorsPolicyInfo[id]\n ? factorsPolicyInfo[id]['autoPushEnabled']\n : false;\n\n if (isAutoPushEnabled) {\n this.model.set('autoPush', true);\n // bind after $el has been rendered, and trigger push once DOM is fully loaded\n _.defer(_.bind(this.submit, this));\n }\n },\n doSave: function() {\n let warningTimeout;\n\n this.clearErrors();\n this.clearWarnings();\n if (this.model.isValid()) {\n this.listenToOnce(this.model, 'error', function() {\n this.setSubmitState(true);\n this.clearWarnings();\n clearTimeout(warningTimeout);\n });\n this.trigger('save', this.model);\n warningTimeout = Util.callAfterTimeout(() => {\n if (!this.options.appState.get('isWaitingForNumberChallenge')) {\n this.showWarning(loc('oktaverify.warning', 'login'));\n }\n }, WARNING_TIMEOUT);\n }\n },\n showError: function(msg) {\n this.clearWarnings();\n this.model.trigger('error', this.model, { responseJSON: { errorSummary: msg } });\n },\n showWarning: function(msg) {\n this.clearWarnings();\n this.add(PushFormwarningTemplate, '.o-form-error-container', { options: { warning: msg } });\n },\n clearWarnings: function() {\n this.$('.okta-form-infobox-warning').remove();\n },\n handleRejectStateChange: function(state, isMfaRejected) {\n if (isMfaRejected) {\n this.setSubmitState(isMfaRejected);\n this.setRejectedErrorMessage();\n }\n },\n setRejectedErrorMessage: function() {\n // If rejection is due to outdated app, show error message per platform\n // else show user rejected message.\n if (this.options.appState.get('lastAuthResponse').factorResultMessage === 'OKTA_VERIFY_UPGRADE_REQUIRED') {\n if (this.options.appState.get('factor').profile.platform === 'IOS') {\n this.showError(loc('oktaverify.rejected.upgradeRequired.ios', 'login'));\n } else {\n this.showError(loc('oktaverify.rejected.upgradeRequired.android', 'login'));\n }\n } else {\n this.showError(loc('oktaverify.rejected', 'login'));\n }\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { _, Form, loc } from 'okta';\nexport default Form.extend({\n className: 'mfa-verify-question',\n autoSave: true,\n noCancelButton: true,\n save: _.partial(loc, 'mfa.challenge.verify', 'login'),\n scrollOnError: false,\n layout: 'o-form-theme',\n attributes: { 'data-se': 'factor-question' },\n\n initialize: function() {\n this.title = this.model.get('factorLabel');\n\n this.addInput({\n label: this.model.get('securityQuestion'),\n 'label-top': true,\n placeholder: loc('mfa.challenge.answer.placeholder', 'login'),\n className: 'auth-passcode',\n name: 'answer',\n type: 'password',\n params: {\n showPasswordToggle: true,\n },\n });\n\n if (this.options.appState.get('allowRememberDevice')) {\n this.addInput({\n label: false,\n 'label-top': true,\n placeholder: this.options.appState.get('rememberDeviceLabel'),\n className: 'margin-btm-0',\n name: 'rememberDevice',\n type: 'checkbox',\n });\n }\n },\n});\n","/*!\n * Copyright (c) 2015-2019, 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 { _, Form, loc, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport ResendEmailView from 'views/ResendEmailView';\nimport TextBox from 'views/shared/TextBox';\n\nconst createEmailMaskElement = function() {\n const email = this.model.get('email');\n const emailTpl = hbs('{{email}}');\n return { factorEmail: emailTpl({ email }) };\n};\n\nconst SendEmailAndVerifyCodeFormVerifyEmailCodeForm = Form.extend({\n layout: 'o-form-theme',\n className: 'mfa-verify-email',\n title: _.partial(loc, 'email.mfa.title', 'login'),\n noButtonBar: false,\n autoSave: true,\n noCancelButton: true,\n attributes: {\n 'data-se': 'factor-email',\n },\n save: function() {\n return this.options.appState.get('isMfaChallenge')\n ? loc('mfa.challenge.verify', 'login')\n : loc('email.button.send', 'login');\n },\n\n events: Object.assign({}, Form.prototype.events, {\n submit: function(e) {\n e.preventDefault();\n this.handleSubmit();\n },\n }),\n\n handleSubmit() {\n this.clearErrors();\n if (this.options.appState.get('isMfaChallenge')) {\n if (this.isValid()) {\n this.model.save();\n }\n } else {\n // Send email and switch to verification view\n this.model.set('answer', '');\n this.model.save().then(this.renderChallengView.bind(this));\n }\n },\n\n initialize: function() {\n Form.prototype.initialize.apply(this, arguments);\n\n // render 'Send Email' page at first place\n this.add(\n View.extend({\n attributes: {\n 'data-se': 'mfa-send-email-content',\n },\n className: 'mfa-send-email-content',\n template: hbs('{{{i18n code=\"email.mfa.description\" bundle=\"login\" arguments=\"factorEmail\"}}}'),\n getTemplateData: createEmailMaskElement,\n })\n );\n },\n\n renderChallengView: function() {\n this.removeChildren();\n this.add(\n View.extend({\n className: 'mfa-email-sent-content',\n attributes: {\n 'data-se': 'mfa-email-sent-content',\n },\n // Why use `{{{` for the description?\n // - factorEmail is actually an HTML fragment which\n // is created via another handlebar template and used for bold the email address.\n template: hbs('{{{i18n code=\"email.mfa.email.sent.description\" bundle=\"login\" arguments=\"factorEmail\"}}}'),\n getTemplateData: createEmailMaskElement,\n })\n );\n\n this.add(ResendEmailView);\n\n this.addInput({\n label: loc('email.code.label', 'login'),\n 'label-top': true,\n name: 'answer',\n input: TextBox,\n wide: true,\n type: 'tel',\n });\n if (this.options.appState.get('allowRememberDevice')) {\n this.addInput({\n label: false,\n 'label-top': true,\n placeholder: this.options.appState.get('rememberDeviceLabel'),\n className: 'margin-btm-0',\n name: 'rememberDevice',\n type: 'checkbox',\n });\n }\n this.render();\n },\n});\n\nexport default SendEmailAndVerifyCodeFormVerifyEmailCodeForm;\n","/*!\n * Copyright (c) 2015-2016, 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 { _, Form, loc } from 'okta';\nimport TextBox from 'views/shared/TextBox';\nexport default Form.extend({\n className: 'mfa-verify-totp',\n autoSave: true,\n noCancelButton: true,\n save: _.partial(loc, 'mfa.challenge.verify', 'login'),\n scrollOnError: false,\n layout: 'o-form-theme',\n attributes: { 'data-se': 'factor-totp' },\n\n initialize: function() {\n const factorName = this.model.get('factorLabel');\n const maskPasswordField = this.model.get('provider') === 'RSA' || this.model.get('provider') === 'DEL_OATH';\n\n this.title = factorName;\n if (this.model.get('isFactorTypeVerification')) {\n this.subtitle = loc('mfa.challenge.totp.subtitle.multiple', 'login', [factorName]);\n } else {\n this.subtitle = loc('mfa.challenge.title', 'login', [factorName]);\n }\n\n this.addInput({\n label: loc('mfa.challenge.enterCode.placeholder', 'login'),\n 'label-top': true,\n className: 'o-form-fieldset o-form-label-top auth-passcode',\n name: 'answer',\n input: TextBox,\n type: maskPasswordField ? 'password' : 'tel',\n });\n\n if (this.options.appState.get('allowRememberDevice')) {\n this.addInput({\n label: false,\n 'label-top': true,\n placeholder: this.options.appState.get('rememberDeviceLabel'),\n className: 'margin-btm-0',\n name: 'rememberDevice',\n type: 'checkbox',\n });\n }\n\n if (this.model.get('provider') === 'RSA' || this.model.get('provider') === 'DEL_OATH') {\n this.listenTo(this.model, 'error', (source, error) => {\n if (error && error.status === 409) {\n // 409 means we are in change pin, so we should clear out answer input\n this.$('.auth-passcode input').val('');\n this.$('.auth-passcode input').trigger('change');\n this.$('.auth-passcode input').focus();\n }\n });\n }\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { _, Form, loc } from 'okta';\nimport TextBox from 'views/shared/TextBox';\nexport default Form.extend({\n className: 'mfa-verify-yubikey',\n autoSave: true,\n noCancelButton: true,\n save: _.partial(loc, 'mfa.challenge.verify', 'login'),\n scrollOnError: false,\n layout: 'o-form-theme',\n attributes: { 'data-se': 'factor-yubikey' },\n\n initialize: function() {\n const factorName = this.model.get('factorLabel');\n\n this.title = factorName;\n this.subtitle = loc('factor.totpHard.yubikey.description', 'login');\n\n this.addInput({\n label: loc('factor.totpHard.yubikey.placeholder', 'login'),\n 'label-top': true,\n className: 'o-form-fieldset o-form-label-top auth-passcode',\n name: 'answer',\n input: TextBox,\n inputId: 'mfa-answer',\n type: 'password',\n });\n\n if (this.options.appState.get('allowRememberDevice')) {\n this.addInput({\n label: false,\n 'label-top': true,\n className: 'margin-btm-0',\n placeholder: this.options.appState.get('rememberDeviceLabel'),\n name: 'rememberDevice',\n type: 'checkbox',\n });\n }\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { _, $, loc, internal } from 'okta';\nimport FactorUtil from 'util/FactorUtil';\nimport Factor from '../../../models/Factor';\nimport FactorsDropDownOptions from './FactorsDropDownOptions';\nconst { BaseDropDown } = internal.views.components;\n\n$(document).click(function(e) {\n const $target = $(e.target);\n const isDropdown = $target.closest('.option-selected').length > 0 && $target.closest('.dropdown').length > 0;\n\n if (!isDropdown) {\n $('.dropdown .options').hide();\n $('.dropdown a.option-selected').attr('aria-expanded', false);\n }\n});\n\nexport default BaseDropDown.extend({\n className: 'bg-helper icon-button',\n screenReaderText: function() {\n const factors = this.options.appState.get('factors');\n let factor;\n let factorLabel;\n\n if (factors) {\n factor = FactorUtil.findFactorInFactorsArray(factors, this.options.provider, this.options.factorType);\n } else {\n factor = new Factor.Model(this.options.appState.get('factor'), this.toJSON());\n }\n factorLabel = factor.get('factorLabel');\n return loc('mfa.factors.dropdown.sr.text', 'login', [factorLabel]);\n },\n events: {\n 'click a.option-selected': function(e) {\n e.preventDefault();\n if (_.result(this, 'disabled')) {\n e.stopPropagation();\n } else {\n const expanded = this.$('.options').toggle().is(':visible');\n\n this.$('a.option-selected').attr('aria-expanded', expanded);\n if (expanded) {\n this.$('#okta-dropdown-options').find('li.factor-option:first a').focus();\n }\n }\n },\n 'click .dropdown-disabled': function(e) {\n e.preventDefault();\n e.stopPropagation();\n },\n },\n initialize: function() {\n this.addOption(FactorsDropDownOptions.getDropdownOption('TITLE'));\n const factorsList = this.options.appState.get('factors');\n const multiplePushFactors = factorsList.hasMultipleFactorsOfSameType('push');\n\n factorsList.each(function(factor) {\n // Do not add okta totp if there are multiple okta push (each push will have an inline totp)\n if (!(factor.get('factorType') === 'token:software:totp' && multiplePushFactors)) {\n this.addOption(FactorsDropDownOptions.getDropdownOption(factor.get('factorName')), { model: factor });\n this.listenTo(this.last(), 'options:toggle', function() {\n this.$('.options').hide();\n this.$('a.option-selected').attr('aria-expanded', false);\n });\n }\n }, this);\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 max-statements: [2, 16], complexity: [2, 10] */\nimport { _, loc } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport RouterUtil from 'util/RouterUtil';\nconst pushTitleTpl = hbs('{{factorName}} ({{{deviceName}}})');\n\n// deviceName is escaped on BaseForm (see BaseForm's template)\n\nconst action = function(model) {\n let factorIndex;\n const factorType = model.get('factorType');\n const factorsList = this.options.appState.get('factors');\n\n if (factorsList.hasMultipleFactorsOfSameType(factorType)) {\n factorIndex = factorsList.getFactorIndex(factorType, model.get('id'));\n }\n const url = RouterUtil.createVerifyUrl(model.get('provider'), factorType, factorIndex);\n const self = this;\n\n this.options.appState.trigger('factorSwitched');\n this.model.manageTransaction(function(transaction, setTransaction) {\n // FACTOR_CHALLENGE does not have a prev link\n if (transaction.status === 'FACTOR_CHALLENGE') {\n this.options.appState.set('trapMfaRequiredResponse', true);\n }\n if (transaction.status === 'MFA_CHALLENGE' && transaction.prev) {\n this.options.appState.set('trapMfaRequiredResponse', true);\n return transaction.prev().then(function(trans) {\n self.trigger('options:toggle');\n setTransaction(trans);\n self.options.appState.trigger('navigate', url);\n });\n } else {\n self.trigger('options:toggle');\n self.options.appState.trigger('navigate', url);\n }\n });\n};\n\nconst dropdownOptions = {\n TITLE: {\n title: _.partial(loc, 'mfa.factors.dropdown.title', 'login'),\n className: 'dropdown-list-title',\n disabled: true,\n },\n\n OKTA_VERIFY: {\n icon: 'factor-icon mfa-okta-verify-30',\n className: 'factor-option',\n title: function() {\n return this.model.get('factorLabel');\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n\n OKTA_VERIFY_PUSH: {\n icon: 'factor-icon mfa-okta-verify-30',\n className: 'factor-option',\n title: function() {\n return pushTitleTpl({\n factorName: this.model.get('factorLabel'),\n deviceName: this.model.get('deviceName'),\n });\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n\n GOOGLE_AUTH: {\n icon: 'factor-icon mfa-google-auth-30',\n className: 'factor-option',\n title: function() {\n return this.model.get('factorLabel');\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n\n CUSTOM_HOTP: {\n icon: 'factor-icon mfa-hotp-30',\n className: 'factor-option',\n title: function() {\n return this.model.get('factorLabel');\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n\n SYMANTEC_VIP: {\n icon: 'factor-icon mfa-symantec-30',\n className: 'factor-option',\n title: function() {\n return this.model.get('factorLabel');\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n\n RSA_SECURID: {\n icon: 'factor-icon mfa-rsa-30',\n className: 'factor-option',\n title: _.partial(loc, 'factor.totpHard.rsaSecurId', 'login'),\n action: function() {\n action.call(this, this.model);\n },\n },\n\n ON_PREM: {\n icon: 'factor-icon mfa-onprem-30',\n className: 'factor-option',\n title: function() {\n return this.model.get('factorLabel');\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n\n DUO: {\n icon: 'factor-icon mfa-duo-30',\n className: 'factor-option',\n title: function() {\n return this.model.get('factorLabel');\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n\n DUO_PUSH: {\n icon: 'duo-push-16',\n className: 'suboption factor-option',\n // TODO: add phone number here\n title: _.partial(loc, 'mfa.duoSecurity.push', 'login', ['XXX-XXX-7890']),\n },\n\n DUO_SMS: {\n icon: 'duo-sms-16',\n className: 'suboption factor-option',\n // TODO: add phone number here\n title: _.partial(loc, 'mfa.duoSecurity.sms', 'login', ['XXX-XXX-7890']),\n },\n\n DUO_CALL: {\n icon: 'duo-call-16',\n className: 'suboption factor-option',\n // TODO: add phone number here\n title: _.partial(loc, 'mfa.duoSecurity.call', 'login', ['XXX-XXX-7890']),\n },\n\n YUBIKEY: {\n icon: 'factor-icon mfa-yubikey-30',\n className: 'factor-option',\n title: function() {\n return this.model.get('factorLabel');\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n\n SMS: {\n icon: 'factor-icon mfa-sms-30',\n className: 'factor-option',\n title: function() {\n return this.model.get('factorLabel');\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n\n CALL: {\n icon: 'factor-icon mfa-call-30',\n className: 'factor-option',\n title: function() {\n return this.model.get('factorLabel');\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n\n QUESTION: {\n icon: 'factor-icon mfa-question-30',\n className: 'factor-option',\n title: function() {\n return this.model.get('factorLabel');\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n\n PASSWORD: {\n icon: 'factor-icon mfa-password-30',\n className: 'factor-option',\n title: function() {\n return this.model.get('factorLabel');\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n\n WINDOWS_HELLO: {\n icon: 'factor-icon mfa-windows-hello-30',\n className: 'factor-option',\n title: function() {\n return this.model.get('factorLabel');\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n\n U2F: {\n icon: 'factor-icon mfa-u2f-30',\n className: 'factor-option',\n title: function() {\n return this.model.get('factorLabel');\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n\n WEBAUTHN: {\n icon: 'factor-icon mfa-webauthn-30',\n className: 'factor-option',\n title: function() {\n return this.model.get('factorLabel');\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n\n EMAIL: {\n icon: 'factor-icon mfa-email-30',\n className: 'factor-option',\n title: function() {\n return this.model.get('factorLabel');\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n\n GENERIC_SAML: {\n icon: 'factor-icon mfa-custom-factor-30',\n className: 'factor-option',\n title: function() {\n return this.model.get('factorLabel');\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n\n GENERIC_OIDC: {\n icon: 'factor-icon mfa-custom-factor-30',\n className: 'factor-option',\n title: function() {\n return this.model.get('factorLabel');\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n\n CUSTOM_CLAIMS: {\n icon: 'factor-icon mfa-custom-factor-30',\n className: 'factor-option',\n title: function() {\n return this.model.get('factorLabel');\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n};\nexport default {\n getDropdownOption: function(factorName) {\n return dropdownOptions[factorName];\n },\n};\n","/*!\n * Copyright (c) 2015-2016, 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 { _, $, View, loc, createButton, internal } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport OAuth2Util from 'util/OAuth2Util';\nconst SharedUtil = internal.util.Util;\nconst dividerTpl = hbs('
      \\\n {{text}}\\\n
      ');\nconst formTitleTpl = hbs('

      {{title}}

      ');\nexport default View.extend({\n className: 'primary-auth-container',\n\n children: function() {\n const children = [];\n const socialIdpButtons = this.settings.get('configuredSocialIdps');\n const pivButton = this.settings.get('piv');\n const customButtons = this.settings.get('customButtons');\n const divider = dividerTpl({ text: loc('socialauth.divider.text', 'login') });\n\n if (this.settings.get('hasPivCard')) {\n children.push(this._createPivButton(pivButton));\n }\n\n _.each(\n socialIdpButtons,\n function(button) {\n children.push(this._createSocialIdpButton(button));\n },\n this\n );\n\n _.each(\n customButtons,\n function(button) {\n children.push(this._createCustomButton(button));\n },\n this\n );\n\n // If the social auth buttons have to be above the Okta form, the title moves from\n // primary auth form to the social auth (above the buttons) and the divider goes below\n // the buttons (in between social auth and primary auth). If social auth needs to go below\n // Okta form, just add the divider at the top of the social auth container. The title still\n // lives in primary auth form.\n if (this.settings.get('socialAuthPositionTop')) {\n children.unshift(formTitleTpl({ title: loc('primaryauth.title', 'login') }));\n // Divider between Primary Auth and the Social Auth\n children.push(divider);\n } else {\n children.unshift(divider);\n }\n\n return children;\n },\n\n _createSocialIdpButton: function(options) {\n return createButton({\n attributes: {\n 'data-se': options.dataAttr,\n },\n className: options.className,\n title: function() {\n return options.text || loc(options.i18nKey);\n },\n click: function(e) {\n e.preventDefault();\n if (this.settings.get('oauth2Enabled')) {\n OAuth2Util.getTokens(this.settings, { idp: options.id }, this.options.currentController);\n } else {\n const baseUrl = this.settings.get('baseUrl');\n let params;\n const lastAuthResponse = this.options.appState.get('lastAuthResponse');\n if (this.options.appState.get('usingDeviceFlow')) {\n params = $.param({\n stateToken: lastAuthResponse?.stateToken,\n });\n } else {\n params = $.param({\n fromURI: this.settings.get('relayState'),\n });\n }\n const targetUri = `${baseUrl}/sso/idps/${options.id}?${params}`;\n SharedUtil.redirect(targetUri);\n }\n },\n });\n },\n\n _createPivButton: function(options) {\n let className = options.className || '';\n return createButton({\n attributes: {\n 'data-se': 'piv-card-button',\n },\n className: className + ' piv-button',\n title: options.text || loc('piv.cac.card', 'login'),\n click: function(e) {\n e.preventDefault();\n this.options.appState.trigger('navigate', 'signin/verify/piv');\n },\n });\n },\n\n _createCustomButton: function(options) {\n return createButton({\n attributes: {\n 'data-se': options.dataAttr,\n },\n className: options.className + ' default-custom-button',\n title: function() {\n return options.title || loc(options.i18nKey);\n },\n click: options.click,\n });\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { Form, loc } from 'okta';\nimport DeviceFingerprint from 'util/DeviceFingerprint';\nimport TypingUtil from 'util/TypingUtil';\nimport Util from 'util/Util';\nimport TextBox from 'views/shared/TextBox';\nexport default Form.extend({\n className: 'primary-auth-form',\n noCancelButton: true,\n attributes: { novalidate: 'novalidate' },\n save: function() {\n if (this.settings.get('features.passwordlessAuth')) {\n return loc('oform.next', 'login');\n }\n return loc('primaryauth.submit', 'login');\n },\n saveId: 'okta-signin-submit',\n layout: 'o-form-theme',\n\n // If socialAuth is configured, the title moves from the form to\n // the top of the container (and is rendered in socialAuth).\n title: function() {\n let formTitle = loc('primaryauth.title', 'login');\n\n if (this.settings.get('socialAuthPositionTop')) {\n formTitle = '';\n }\n return formTitle;\n },\n\n initialize: function() {\n const trackTypingPattern = this.settings.get('features.trackTypingPattern');\n\n this.listenTo(this, 'save', async function() {\n const { appState } = this.options;\n if (trackTypingPattern) {\n const typingPattern = TypingUtil.getTypingPattern();\n appState.set('typingPattern', typingPattern);\n }\n const creds = {\n username: this.model.get('username'),\n };\n\n if (!this.settings.get('features.passwordlessAuth')) {\n creds.password = this.model.get('password');\n }\n\n // show loading spinner and disable submit button before processCreds hook runs\n appState.trigger('loading', true);\n this.state.trigger('togglePrimaryAuthButton', true);\n \n await this.settings.processCreds(creds);\n\n if (this.settings.get('features.deviceFingerprinting')) {\n try {\n const fingerprint = await DeviceFingerprint.generateDeviceFingerprint(this.settings.get('baseUrl'), this.$el);\n appState.set('deviceFingerprint', fingerprint);\n } catch {\n // Keep going even if device fingerprint fails\n }\n }\n\n this.model.save();\n });\n\n this.stateEnableChange();\n },\n\n stateEnableChange: function() {\n this.listenTo(this.state, 'change:enabled', function(model, enable) {\n if (enable) {\n this.enable();\n } else {\n this.disable();\n }\n });\n },\n\n inputs: function() {\n const inputs = [];\n\n inputs.push(this.getUsernameField());\n if (!this.settings.get('features.passwordlessAuth')) {\n inputs.push(this.getPasswordField());\n }\n if (this.settings.get('features.rememberMe')) {\n inputs.push(this.getRemeberMeCheckbox());\n }\n return inputs;\n },\n\n getUsernameField: function() {\n const userNameFieldObject = {\n className: 'margin-btm-5',\n label: loc('primaryauth.username.placeholder', 'login'),\n 'label-top': true,\n explain: () => {\n if (!this.isCustomized('primaryauth.username.tooltip')) {\n return false;\n }\n\n return Util.createInputExplain('primaryauth.username.tooltip', 'primaryauth.username.placeholder', 'login');\n },\n 'explain-top': true,\n name: 'username',\n input: TextBox,\n inputId: 'okta-signin-username',\n type: 'text',\n disabled: this.options.appState.get('disableUsername'),\n autoComplete: 'username',\n // TODO: support a11y attrs in Courage - OKTA-279025\n render: function() {\n const that = this;\n function clearAriaInvalid() {\n that.$(this)\n .removeAttr('aria-invalid')\n .off('focusout', clearAriaInvalid)\n .off('change', clearAriaInvalid);\n }\n\n this.$(`input[name=${this.options.name}]`)\n // OKTA-430928: to prevent NVDA and JAWS screen readers from\n // announcing \"required invalid entry\" before the user has a chance to\n // complete the field, aria-invalid is set to \"false\" initially and\n // removed on focusout or change using clearAriaInvalid()\n .attr({\n 'aria-invalid': 'false',\n 'aria-required': 'true',\n })\n .prop({\n required: true,\n })\n .focusout(clearAriaInvalid)\n .change(clearAriaInvalid);\n },\n };\n\n return userNameFieldObject;\n },\n\n getPasswordField: function() {\n const passwordFieldObject = {\n className: 'margin-btm-30',\n label: loc('primaryauth.password.placeholder', 'login'),\n 'label-top': true,\n explain: () => {\n if (!this.isCustomized('primaryauth.password.tooltip')) {\n return false;\n }\n\n return Util.createInputExplain('primaryauth.password.tooltip', 'primaryauth.password.placeholder', 'login');\n },\n 'explain-top': true,\n name: 'password',\n inputId: 'okta-signin-password',\n validateOnlyIfDirty: true,\n type: 'password',\n autoComplete: 'current-password',\n // TODO: support a11y attrs in Courage - OKTA-279025\n render: function() {\n const that = this;\n function clearAriaInvalid() {\n that.$(this)\n .removeAttr('aria-invalid')\n .off('focusout', clearAriaInvalid)\n .off('change', clearAriaInvalid);\n }\n this.$(`input[name=${this.options.name}]`)\n // OKTA-430928: to prevent NVDA and JAWS screen readers from\n // announcing \"required invalid entry\" before the user has a chance to\n // complete the field, aria-invalid is set to \"false\" initially and\n // removed on focusout or change using clearAriaInvalid()\n .attr({\n 'aria-invalid': 'false',\n 'aria-required': 'true',\n })\n .prop({\n required: true\n })\n .focusout(clearAriaInvalid)\n .change(clearAriaInvalid);\n },\n };\n\n if (this.settings.get('features.showPasswordToggleOnSignInPage')) {\n passwordFieldObject.params = {};\n passwordFieldObject.params.showPasswordToggle = true;\n }\n return passwordFieldObject;\n },\n\n isCustomized: function(property) {\n const language = this.settings.get('language');\n const i18n = this.settings.get('i18n');\n const customizedProperty = i18n && i18n[language] && i18n[language][property];\n\n return !!customizedProperty;\n },\n\n // TODO fix method name typo\n getRemeberMeCheckbox: function() {\n return {\n label: false,\n placeholder: loc('remember', 'login'),\n name: 'remember',\n type: 'checkbox',\n 'label-top': true,\n className: 'margin-btm-0',\n initialize: function() {\n this.listenTo(this.model, 'change:remember', function(model, val) {\n // OKTA-98946: We normally re-render on changes to model values,\n // but in this case we will manually update the checkbox due to\n // iOS Safari and how it handles autofill - it will autofill the\n // form anytime the dom elements are re-rendered, which prevents\n // the user from editing their username.\n this.$(':checkbox').prop('checked', val).trigger('updateState');\n });\n },\n };\n },\n\n focus: function() {\n if (!this.model.get('username')) {\n this.getInputs().first().focus();\n } else if (!this.settings.get('features.passwordlessAuth')) {\n this.getInputs().toArray()[1].focus();\n }\n if (this.settings.get('features.trackTypingPattern')) {\n TypingUtil.track('okta-signin-username');\n }\n },\n});\n","/*!\n * Copyright (c) 2017, 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 { View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nconst SubSchemaSubSchema = View.extend({\n index: '',\n message: '',\n class: function() {\n return;\n },\n className: function() {\n return 'subschema-unsatisfied subschema-' + this.index;\n },\n template: hbs(\n '\\\n

      \\\n \\\n {{message}}\\\n

      \\\n '\n ),\n getTemplateData: function() {\n return {\n message: this.message,\n };\n },\n});\nexport default View.extend({\n className: 'subschema',\n\n children: function() {\n return this.subSchemas.map(function(subSchema, index) {\n const description = subSchema.get('description');\n const message = description;\n // TODO API should send translated strings instead of i18n code inside description\n // or send param with i18n code\n\n return SubSchemaSubSchema.extend({\n index: index,\n message: message,\n });\n });\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { View } from 'okta';\nimport Enums from 'util/Enums';\nconst CAN_REMOVE_BEACON_CLS = 'can-remove-beacon';\nexport default View.extend({\n tagName: 'main',\n className: 'auth-container main-container',\n id: Enums.WIDGET_CONTAINER_ID,\n attributes: { 'data-se': 'auth-container', tabindex: '-1' },\n initialize: function(options) {\n this.listenTo(options.appState, 'change:beaconType', function(model, type) {\n this.$el.toggleClass(CAN_REMOVE_BEACON_CLS, type === 'security');\n });\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nexport default View.extend({\n template: hbs(\n '\\\n
      \\\n \\\n

      {{i18n code=\"contact.support\" bundle=\"login\" arguments=\"helpSupportNumber\"}}

      \\\n
      '\n ),\n className: 'contact-support',\n\n getTemplateData: function() {\n return this.settings.pick('helpSupportNumber');\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 complexity: [2, 8] */\nimport { View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Factor from 'models/Factor';\nimport Q from 'q';\nimport FactorUtil from 'util/FactorUtil';\nimport FactorsDropDown from 'views/mfa-verify/dropdown/FactorsDropDown';\nexport default View.extend({\n template: hbs(\n '\\\n
      \\\n
      \\\n
      \\\n
      \\\n \\\n
      \\\n
      \\\n '\n ),\n\n events: {\n 'click .auth-beacon-factor': function(e) {\n e.preventDefault();\n e.stopPropagation();\n const expanded = this.$('.dropdown .options').toggle().is(':visible');\n\n this.$('a.option-selected').attr('aria-expanded', expanded);\n if (expanded) {\n this.$('#okta-dropdown-options').find('li.factor-option:first a').focus();\n }\n },\n },\n\n initialize: function() {\n this.options.appState.set('beaconType', 'factor');\n },\n\n getTemplateData: function() {\n const factors = this.options.appState.get('factors');\n let factor;\n let className;\n\n if (factors) {\n factor = FactorUtil.findFactorInFactorsArray(factors, this.options.provider, this.options.factorType);\n } else {\n factor = new Factor.Model(this.options.appState.get('factor'));\n }\n className = factor.get('iconClassName');\n return { className: className || '' };\n },\n\n postRender: function() {\n if (this.options.animate) {\n this.$('.auth-beacon-factor').fadeIn(200);\n }\n const appState = this.options.appState;\n\n if (appState.get('hasMultipleFactorsAvailable')) {\n this.add(FactorsDropDown, '[data-type=\"factor-types-dropdown\"]');\n }\n },\n\n fadeOut: function() {\n const deferred = Q.defer();\n\n this.$('.auth-beacon-factor').fadeOut(200, function() {\n deferred.resolve();\n });\n return deferred.promise;\n },\n\n equals: function(Beacon, options) {\n return (\n Beacon &&\n this instanceof Beacon &&\n options.provider === this.options.provider &&\n (options.factorType === this.options.factorType ||\n (FactorUtil.isOktaVerify(options.provider, options.factorType) &&\n FactorUtil.isOktaVerify(this.options.provider, this.options.factorType)))\n );\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { _, View, internal } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nconst { Util } = internal.util;\nexport default View.extend({\n template: hbs(\n '\\\n \\\n {{i18n code=\"needhelp\" bundle=\"login\"}}\\\n \\\n \\\n '\n ),\n className: 'auth-footer',\n\n initialize: function() {\n this.listenTo(this.state, 'change:enabled', function(model, enable) {\n this.$('.link').toggleClass('o-form-disabled', !enable);\n });\n },\n\n getTemplateData: function() {\n let helpLinkUrl;\n const customHelpPage = this.settings.get('helpLinks.help');\n\n if (customHelpPage) {\n helpLinkUrl = customHelpPage;\n } else {\n helpLinkUrl = hbs('{{baseUrl}}/help/login')({ baseUrl: this.settings.get('baseUrl') });\n }\n return _.extend(this.settings.toJSON({ verbose: true }), { helpLinkUrl: helpLinkUrl });\n },\n postRender: function() {\n this.$('.js-help-links').hide();\n },\n toggleLinks: function(e) {\n e.preventDefault();\n\n this.$('.js-help-links').slideToggle(200, () => {\n this.$('.js-help').attr('aria-expanded', this.$('.js-help-links').is(':visible'));\n });\n },\n events: {\n 'click .js-help': function(e) {\n e.preventDefault();\n if (!this.state.get('enabled')) {\n return;\n }\n\n this.toggleLinks(e);\n },\n 'click .js-forgot-password': function(e) {\n e.preventDefault();\n if (!this.state.get('enabled')) {\n return;\n }\n\n const customResetPasswordPage = this.settings.get('helpLinks.forgotPassword');\n\n if (customResetPasswordPage) {\n Util.redirect(customResetPasswordPage);\n } else {\n this.options.appState.trigger('navigate', 'signin/forgot-password');\n }\n },\n 'click .js-unlock': function(e) {\n e.preventDefault();\n if (!this.state.get('enabled')) {\n return;\n }\n\n const customUnlockPage = this.settings.get('helpLinks.unlock');\n\n if (customUnlockPage) {\n Util.redirect(customUnlockPage);\n } else {\n this.options.appState.trigger('navigate', 'signin/unlock');\n }\n },\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 hbs from 'handlebars-inline-precompile';\nimport FooterSignout from './FooterSignout';\n\nexport default FooterSignout.extend({\n template: hbs(\n '\\\n {{#if hasFactorPageCustomLink}}\\\n \\\n {{factorPageCustomLinkText}}\\\n \\\n {{/if}}\\\n {{#if showLink}}\\\n \\\n {{linkText}}\\\n \\\n {{/if}}\\\n '\n ),\n className: 'auth-footer clearfix',\n getTemplateData: function() {\n const signoutTemplateData = FooterSignout.prototype.getTemplateData.apply(this, arguments);\n const factorPageCustomLinkHref = this.settings.get('helpLinks.factorPage.href');\n const factorPageCustomLinkText = this.settings.get('helpLinks.factorPage.text');\n const showLink = !this.settings.get('features.hideSignOutLinkInMFA') &&\n !this.settings.get('features.mfaOnlyFlow');\n return Object.assign({}, signoutTemplateData, {\n hasFactorPageCustomLink: factorPageCustomLinkText && factorPageCustomLinkHref,\n factorPageCustomLinkHref,\n factorPageCustomLinkText,\n showLink,\n });\n },\n});\n","/*!\n * Copyright (c) 2016-2017, 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 { View, loc } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nexport default View.extend({\n template: hbs(\n '\\\n
      \\\n {{label}}\\\n {{text}}\\\n
      \\\n '\n ),\n className: 'registration-container',\n\n events: {\n 'click a.registration-link': 'handleClickEvent',\n },\n\n handleClickEvent: function(e) {\n e.preventDefault();\n const clickHandler = this.settings.get('registration.click');\n\n if (clickHandler) {\n clickHandler();\n } else if (this.options.appState.get('isIdxStateToken')) {\n this.options.appState.trigger('navigate', 'signin/enroll-user');\n } else {\n this.options.appState.trigger('navigate', 'signin/register');\n }\n },\n\n getTemplateData: function() {\n const templateData = {\n label: loc('registration.signup.label', 'login'),\n text: loc('registration.signup.text', 'login'),\n };\n\n return templateData;\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { _, View, loc, internal } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Enums from 'util/Enums';\nconst { Util } = internal.util;\nexport default View.extend({\n template: hbs(\n '\\\n \\\n {{linkText}}\\\n \\\n '\n ),\n className: 'auth-footer clearfix',\n events: {\n 'click a[data-se=\"signout-link\"]': 'handleSignout',\n },\n handleSignout: function(e) {\n e.preventDefault();\n\n const appState = this.options.appState;\n appState.trigger('signOut');\n const isSMSPasswordRecovery = appState.get('isSMSPasswordRecovery');\n\n this.model\n .doTransaction(function(transaction) {\n return transaction.cancel();\n })\n .then(() => {\n if (this.settings.get('signOutLink') && !isSMSPasswordRecovery) {\n Util.redirect(this.settings.get('signOutLink'));\n } else {\n this.state.set('navigateDir', Enums.DIRECTION_BACK);\n appState.trigger('navigate', '');\n }\n });\n },\n getTemplateData: function() {\n return {\n linkClassName: _.isUndefined(this.options.linkClassName) ? 'goto' : this.options.linkClassName,\n linkText: this.options.linkText || loc('goback', 'login'),\n };\n },\n});\n","/*!\n * Copyright (c) 2019, 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 { View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Enums from 'util/Enums';\nexport default View.extend({\n template: hbs(\n '\\\n \\\n {{i18n code=\"goback\" bundle=\"login\"}}\\\n \\\n '\n ),\n className: 'auth-footer',\n events: {\n 'click .help': function(e) {\n e.preventDefault();\n this.back();\n },\n },\n back: function() {\n this.state.set('navigateDir', Enums.DIRECTION_BACK);\n this.options.appState.trigger('navigate', '');\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nexport default View.extend({\n template: hbs(\n '\\\n
      \\\n
      \\\n \\\n
      \\\n '\n ),\n\n equals: function(Beacon) {\n return Beacon && this instanceof Beacon;\n },\n});\n","/*!\n * Copyright (c) 2019, 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 { View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nexport default View.extend({\n className: 'piv-beacon',\n template: hbs(\n '\\\n
      \\\n
      \\\n
      \\\n
      \\\n \\\n
      \\\n '\n ),\n\n equals: function(Beacon) {\n return Beacon && this instanceof Beacon;\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport FactorUtil from 'util/FactorUtil';\nexport default View.extend({\n template: hbs`{{#if requirements}}\n
      \n {{i18n code=\"password.complexity.requirements.header\" bundle=\"login\"}}\n
      \n
        \n {{#each requirements}}
      • {{this}}
      • {{/each}}\n
      \n {{/if}}`,\n\n attributes: {\n 'data-se': 'password-requirements-html',\n },\n\n allRequirements: [],\n\n initialize: function(options) {\n const policy = options.policy;\n\n if (!policy) {\n return;\n }\n\n this.allRequirements = FactorUtil.getPasswordComplexityDescriptionForHtmlList(policy);\n },\n\n getTemplateData: function() {\n return {\n requirements: this.allRequirements,\n };\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { _, $, loc, View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Animations from 'util/Animations';\n\nfunction setBackgroundImage(el, appState) {\n const imgSrc = appState.get('securityImage');\n const imgDescription = appState.get('securityImageDescription');\n const isUndefinedUser = appState.get('isUndefinedUser');\n const isNewUser = appState.get('isNewUser');\n const isSecurityImage = !isUndefinedUser && !isNewUser;\n // NOTE: The imgSrc is returned by the server so that every\n // user has a unique image. However new and undefined user states\n // are hard coded into the css and the value returned by the server\n // is ignored.\n\n el.css('background-image', '');\n el.removeClass('new-user undefined-user');\n if (isNewUser) {\n el.addClass('new-user');\n return;\n }\n if (isUndefinedUser) {\n el.addClass('undefined-user');\n return;\n }\n if (isSecurityImage) {\n // TODO: Newer versions of qtip will remove aria-describedby on their own when destroy() is called.\n el.removeAttr('aria-describedby');\n el.find('.accessibility-text').text(imgDescription);\n el.css('background-image', 'url(' + _.escape(imgSrc) + ')');\n return;\n }\n}\n\nfunction antiPhishingMessage(image, host) {\n $(window).on(\n 'resize.securityBeaconQtip',\n _.debounce(function() {\n if (image.is(':visible')) {\n image.qtip('show');\n }\n }, 300)\n );\n\n // Show the message that the user has not logged in from this device before.\n image.qtip({\n prerender: true,\n content: {\n text: loc('primaryauth.newUser.tooltip', 'login', [_.escape(host)]),\n button: loc('primaryauth.newUser.tooltip.close', 'login'),\n },\n style: {\n classes: 'okta-security-image-tooltip security-image-qtip qtip-custom qtip-shadow qtip-rounded',\n tip: { height: 12, width: 16 },\n },\n position: {\n my: 'top center',\n at: 'center',\n target: $('.auth-beacon-security'),\n adjust: { method: 'flip', scroll: false, resize: true },\n effect: false,\n },\n hide: { event: false, fixed: true },\n show: { event: false, delay: 200 },\n events: {\n move: function(event, api) {\n if (!api.elements.target.is(':visible')) {\n // Have to hide it immediately, with no effect\n api.set('hide.effect', false);\n api.hide();\n api.set('hide.effect', true);\n }\n },\n },\n });\n\n // It is necessary to delay toggle to the next render cycle, since qtip internally defers some setup tasks.\n setTimeout(() => {\n image.qtip('toggle', image.is(':visible'));\n }, 0);\n}\n\nfunction destroyAntiPhishingMessage(image) {\n image.qtip('destroy');\n $(window).off('resize.securityBeaconQtip');\n}\n\nasync function updateSecurityImage($el, appState, animate) {\n const image = $el.find('.auth-beacon-security');\n const border = $el.find('.js-auth-beacon-border');\n const hasBorder = !appState.get('isUndefinedUser');\n const hasAntiPhishing = appState.get('isNewUser');\n const radialProgressBar = $el.find('.radial-progress-bar');\n const host = appState.get('baseUrl').match(/https?:\\/\\/(.[^/]+)/)[1];\n const duration = 200;\n\n if (!animate) {\n // Do not animate the security beacon\n // This occurs when initializing the form\n setBackgroundImage(image, appState);\n border.toggleClass('auth-beacon-border', hasBorder);\n return;\n }\n\n destroyAntiPhishingMessage(image);\n\n // Animate loading the security beacon\n if (!hasBorder) {\n // This occurs when appState username is blank\n // we do not yet know if the user is recognized\n image.fadeOut(duration, function() {\n setBackgroundImage(image, appState);\n border.removeClass('auth-beacon-border');\n image.fadeIn(duration);\n });\n } else {\n // Animate loading the security beacon with a loading bar for the border\n // This occurs when the username has been checked against Okta.\n border.removeClass('auth-beacon-border');\n await Animations.radialProgressBar({\n $el: radialProgressBar,\n swap() {\n image.fadeOut(duration, () => {\n setBackgroundImage(image, appState);\n image.fadeIn(duration);\n });\n },\n });\n border.addClass('auth-beacon-border');\n if (hasAntiPhishing) {\n antiPhishingMessage(image, host);\n }\n }\n}\n\nexport default View.extend({\n template: hbs(\n '\\\n
      \\\n
      \\\n
      \\\n
      \\\n
      \\\n
      \\\n
      \\\n \\\n \\\n
      \\\n '\n ),\n className: 'js-security-beacon',\n\n initialize: function(options) {\n this.update = _.partial(updateSecurityImage, this.$el, options.appState);\n this.listenTo(options.appState, 'change:securityImage', this.update);\n this.listenTo(options.appState, 'loading', function(isLoading) {\n this.$el.toggleClass('beacon-loading', isLoading);\n this.removeAntiPhishingMessage();\n });\n this.options.appState.set('beaconType', 'security');\n\n this.listenTo(options.appState, 'navigate', this.removeAntiPhishingMessage);\n },\n\n postRender: function() {\n this.update(false);\n },\n\n equals: function(Beacon) {\n return Beacon && this instanceof Beacon;\n },\n\n removeAntiPhishingMessage: function() {\n const image = this.$el.find('.auth-beacon-security');\n\n image.qtip('destroy');\n },\n});\n","import { loc, View } from 'okta';\nimport Enums from 'util/Enums';\n\nexport default View.extend({\n tagName: 'a',\n className: 'skip-to-content-link',\n attributes: { href: `#${Enums.WIDGET_CONTAINER_ID}` },\n initialize: function initialize() {\n this.$el.append(loc('skip.to.main.content', 'login'));\n }\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { View } from 'okta';\nexport default View.extend({\n className: 'okta-waiting-spinner',\n attributes: {\n 'data-se': 'o-form-okta-waiting-spinner',\n },\n modelEvents: {\n 'spinner:show': 'show',\n 'spinner:hide': 'hide',\n },\n\n initialize: function(options) {\n if (options && options.visible === false) {\n this.hide();\n }\n },\n\n show: function() {\n this.$el.removeClass('hide');\n },\n\n hide: function() {\n this.$el.addClass('hide');\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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//note: not including Okta here and explicitly including jquery and Handlebars\n//because we want to be explicit about which TextBox we are extending here\n//and want to avoid the cirucular dependency that occurs if we\n//include Okta\nimport { internal } from 'okta';\nimport 'qtip';\nimport BrowserFeatures from 'util/BrowserFeatures';\nconst { TextBox } = internal.views.forms.inputs;\nexport default TextBox.extend({\n postRender: function() {\n if (this.options.type === 'number') {\n const input = this.$('input');\n\n input.attr({\n pattern: '[0-9]*',\n inputmode: 'numeric',\n });\n }\n TextBox.prototype.postRender.apply(this, arguments);\n },\n // Override the focus() to ignore focus in IE. IE (8-11) has a known bug where\n // the placeholder text disappears when the input field is focused.\n focus: function() {\n if (BrowserFeatures.isIE()) {\n return;\n }\n return TextBox.prototype.focus.apply(this, arguments);\n },\n});\n","import hbs from 'handlebars-inline-precompile';\n\nconst consentLogoHeaderTemplate = hbs`{{#if clientURI}}\n \n{{/if}}\n{{#if customLogo}}\n \n{{/if}}\n

      \n {{{i18n code=\"consent.required.text\" bundle=\"login\" arguments=\"appName\"}}}\n {{#if issuer}}\n
      {{issuer}}
      \n {{/if}}\n

      `;\n\nexport default consentLogoHeaderTemplate;\n","import { _, $ } from 'okta';\nimport Errors from 'util/Errors';\nimport OAuth2Util from 'util/OAuth2Util';\n\nexport default function buildRenderOptions(widgetOptions = {}, options = {}) {\n const authParams = $.extend(true, {}, widgetOptions.authParams, _.pick(options, OAuth2Util.AUTH_PARAMS));\n const { el, clientId, redirectUri } = Object.assign({}, widgetOptions, options);\n const renderOptions = Object.assign({}, { el, clientId, redirectUri, authParams });\n\n if (!renderOptions.el) {\n throw new Errors.ConfigError('\"el\" is required');\n }\n\n if (!renderOptions.clientId) {\n throw new Errors.ConfigError('\"clientId\" is required');\n }\n\n if (!renderOptions.redirectUri) {\n throw new Errors.ConfigError('\"redirectUri\" is required');\n }\n\n return renderOptions;\n}","import { $ } from 'okta';\nimport Enums from 'util/Enums';\n\nexport default function createRouter(Router, widgetOptions, renderOptions, authClient, successFn, errorFn, hooks) {\n let resolve;\n let reject;\n const promise = new Promise((_resolve, _reject) => {\n resolve = _resolve;\n reject = _reject;\n });\n const routerOptions = $.extend(true, {}, widgetOptions, renderOptions, {\n authClient,\n hooks,\n globalSuccessFn: (res) => {\n successFn && successFn(res); // call success function if provided\n if (res && res.status === Enums.SUCCESS) {\n resolve(res);\n }\n },\n globalErrorFn: (error) => {\n errorFn && errorFn(error); // call error function if provided\n reject(error);\n }\n });\n const router = new Router(routerOptions);\n router.start();\n return {\n router,\n routerOptions,\n promise\n };\n}\n\n","/*!\n * Copyright (c) 2015-2016, 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 max-params: 0 */\nimport AccountUnlockedController from 'AccountUnlockedController';\nimport ActivateTotpController from 'ActivateTotpController';\nimport AdminConsentRequiredController from 'AdminConsentRequiredController';\nimport BarcodePushController from 'BarcodePushController';\nimport BarcodeTotpController from 'BarcodeTotpController';\nimport ConsentRequiredController from 'ConsentRequiredController';\nimport CustomPasswordExpiredController from 'CustomPasswordExpiredController';\nimport DeviceActivateController from './DeviceActivateController';\nimport DeviceActivateTerminalController from './DeviceActivateTerminalController';\nimport EnrollActivateCustomFactorController from 'EnrollActivateCustomFactorController';\nimport EnrollActivateEmailController from 'EnrollActivateEmailController';\nimport EnrollCallAndSmsController from 'EnrollCallAndSmsController';\nimport EnrollChoicesController from 'EnrollChoicesController';\nimport EnrollCustomFactorController from 'EnrollCustomFactorController';\nimport EnrollDuoController from 'EnrollDuoController';\nimport EnrollEmailController from 'EnrollEmailController';\nimport EnrollHotpController from 'EnrollHotpController';\nimport EnrollOnPremController from 'EnrollOnPremController';\nimport EnrollPasswordController from 'EnrollPasswordController';\nimport EnrollQuestionController from 'EnrollQuestionController';\nimport EnrollSymantecVipController from 'EnrollSymantecVipController';\nimport EnrollTotpController from 'EnrollTotpController';\nimport EnrollU2FController from 'EnrollU2FController';\nimport EnrollUserController from 'EnrollUserController';\nimport EnrollWebauthnController from 'EnrollWebauthnController';\nimport EnrollWindowsHelloController from 'EnrollWindowsHelloController';\nimport EnrollYubikeyController from 'EnrollYubikeyController';\nimport EnrollmentLinkSentController from 'EnrollmentLinkSentController';\nimport EnterPasscodePushFlowController from 'EnterPasscodePushFlowController';\nimport ForgotPasswordController from 'ForgotPasswordController';\nimport IDPDiscoveryController from 'IDPDiscoveryController';\nimport ForceIDPDiscoveryController from 'ForceIDPDiscoveryController';\nimport ManualSetupPushController from 'ManualSetupPushController';\nimport ManualSetupTotpController from 'ManualSetupTotpController';\nimport MfaVerifyController from 'MfaVerifyController';\nimport PasswordExpiredController from 'PasswordExpiredController';\nimport PasswordResetController from 'PasswordResetController';\nimport PollController from 'PollController';\nimport PrimaryAuthController from 'PrimaryAuthController';\nimport PwdResetEmailSentController from 'PwdResetEmailSentController';\nimport RecoveryChallengeController from 'RecoveryChallengeController';\nimport RecoveryLoadingController from 'RecoveryLoadingController';\nimport RecoveryQuestionController from 'RecoveryQuestionController';\nimport RefreshAuthStateController from 'RefreshAuthStateController';\nimport RegistrationCompleteController from 'RegistrationCompleteController';\nimport RegistrationController from 'RegistrationController';\nimport UnlockAccountController from 'UnlockAccountController';\nimport UnlockEmailSentController from 'UnlockEmailSentController';\nimport VerifyCustomFactorController from 'VerifyCustomFactorController';\nimport VerifyDuoController from 'VerifyDuoController';\nimport VerifyPIVController from 'VerifyPIVController';\nimport VerifyU2FController from 'VerifyU2FController';\nimport VerifyWebauthnController from 'VerifyWebauthnController';\nimport VerifyWindowsHelloController from 'VerifyWindowsHelloController';\nimport ErrorStateController from 'ErrorStateController';\nimport BaseLoginRouter from 'util/BaseLoginRouter';\nimport FactorBeacon from 'views/shared/FactorBeacon';\nimport PIVBeacon from 'views/shared/PIVBeacon';\nimport SecurityBeacon from 'views/shared/SecurityBeacon';\n\nimport Enums from 'util/Enums';\n\nexport default BaseLoginRouter.extend({\n routes: {\n '': 'defaultAuth',\n signin: 'primaryAuth',\n 'signin/verify/duo/web': 'verifyDuo',\n 'signin/verify/piv': 'verifyPIV',\n 'signin/poll': 'poll',\n 'signin/verify/fido/webauthn': 'verifyWebauthn',\n 'signin/verify/webauthn': 'verifyWebauthn',\n 'signin/verify/fido/u2f': 'verifyU2F',\n 'signin/verify/u2f': 'verifyU2F',\n 'signin/verify/generic_saml/assertion:saml2': 'verifySAMLFactor',\n 'signin/verify/generic_oidc/assertion:oidc': 'verifyOIDCFactor',\n 'signin/verify/custom/claims_provider': 'verifyClaimsFactor',\n 'signin/verify/:factorType': 'verifyNoProvider',\n 'signin/verify/:provider/:factorType(/:factorIndex)': 'verify',\n 'signin/enroll': 'enrollChoices',\n 'signin/enroll/duo/web': 'enrollDuo',\n 'signin/enroll/okta/question': 'enrollQuestion',\n 'signin/enroll/okta/password': 'enrollPassword',\n 'signin/enroll/okta/sms': 'enrollSms',\n 'signin/enroll/okta/call': 'enrollCall',\n 'signin/enroll/okta/email': 'enrollEmail',\n 'signin/enroll-activate/okta/sms': 'enrollSms',\n 'signin/enroll-activate/okta/call': 'enrollCall',\n 'signin/enroll/rsa/token': 'enrollRsa',\n 'signin/enroll/del_oath/token': 'enrollOnPrem',\n 'signin/enroll/symantec/token': 'enrollSymantecVip',\n 'signin/enroll/yubico/token:hardware': 'enrollYubikey',\n 'signin/enroll/fido/webauthn': 'enrollWebauthn',\n 'signin/enroll/fido/u2f': 'enrollU2F',\n 'signin/enroll/generic_saml/assertion:saml2': 'enrollSAMLFactor',\n 'signin/enroll/generic_oidc/assertion:oidc': 'enrollOIDCFactor',\n 'signin/enroll/custom/claims_provider': 'enrollClaimsFactor',\n 'signin/enroll/custom/token:hotp': 'enrollHotpFactor',\n 'signin/enroll/:provider/:factorType': 'enrollTotpFactor',\n 'signin/enroll-activate/okta/email': 'enrollActivateEmail',\n 'signin/enroll-activate/okta/push': 'scanBarcodePushFactor',\n 'signin/enroll-activate/okta/push/manual': 'manualSetupPushFactor',\n 'signin/enroll-activate/okta/push/sent': 'activationLinkSent',\n 'signin/enroll-activate/okta/token:software:totp/passcode': 'enterPasscodeInPushEnrollmentFlow',\n 'signin/enroll-activate/custom/claims_provider': 'enrollActivateClaimsFactor',\n 'signin/enroll-activate/:provider/:factorType': 'scanBarcodeTotpFactor',\n 'signin/enroll-activate/:provider/:factorType/activate': 'activateTotpFactor',\n 'signin/enroll-activate/:provider/:factorType/manual': 'manualSetupTotpFactor',\n 'signin/password-expired': 'passwordExpired',\n 'signin/custom-password-expired': 'customPasswordExpired',\n 'signin/forgot-password': 'forgotPassword',\n 'signin/recovery-challenge': 'recoveryChallenge',\n 'signin/recovery-emailed': 'recoveryEmailSent',\n 'signin/recovery-question': 'recoveryQuestion',\n 'signin/password-reset': 'passwordReset',\n 'signin/reset-password/:token': 'recoveryLoading',\n 'signin/user-unlock/:token': 'recoveryLoading',\n 'signin/recovery/:token': 'recoveryLoading',\n 'signin/unlock-emailed': 'unlockEmailSent',\n 'signin/unlock': 'unlockAccount',\n 'signin/account-unlocked': 'accountUnlocked',\n 'signin/refresh-auth-state(/:token)': 'refreshAuthState',\n 'signin/register': 'register',\n 'signin/register-complete': 'registerComplete',\n 'signin/error': 'errorState',\n 'signin/consent': 'consentRequired',\n 'signin/admin-consent': 'adminConsentRequired',\n 'signin/enroll-user': 'enrollUser',\n 'signin/device-activate-complete': 'deviceActivateComplete',\n 'signin/device-activate': 'deviceActivate',\n 'signin/idp-discovery-check': 'idpDiscoveryCheck',\n '*wildcard': 'defaultAuth',\n },\n\n // Route handlers that do not require a stateToken. If the page is refreshed,\n // these functions will not require a status call to refresh the stateToken.\n stateLessRouteHandlers: [\n 'defaultAuth',\n 'idpDiscovery',\n 'primaryAuth',\n 'forgotPassword',\n 'recoveryLoading',\n 'unlockAccount',\n 'refreshAuthState',\n 'register',\n 'registerComplete',\n 'errorState',\n 'verifyPIV',\n ],\n\n defaultAuth: function() {\n if (window.location.hash === `#${Enums.WIDGET_CONTAINER_ID}`) {\n document.getElementById(Enums.WIDGET_CONTAINER_ID).focus();\n return;\n }\n if (this.settings.get('features.idpDiscovery')) {\n this.idpDiscovery();\n } else {\n this.primaryAuth();\n }\n },\n\n idpDiscoveryCheck: function() {\n this.render(ForceIDPDiscoveryController, { Beacon: SecurityBeacon });\n },\n\n idpDiscovery: function() {\n this.render(IDPDiscoveryController, { Beacon: SecurityBeacon });\n },\n\n primaryAuth: function() {\n this.render(PrimaryAuthController, { Beacon: SecurityBeacon });\n },\n\n verifyDuo: function() {\n this.render(VerifyDuoController, {\n provider: 'DUO',\n factorType: 'web',\n Beacon: FactorBeacon,\n });\n },\n\n verifyPIV: function() {\n this.render(VerifyPIVController, { Beacon: PIVBeacon });\n },\n\n poll: function() {\n this.render(PollController);\n },\n\n verifyWebauthn: function() {\n if (this.settings.get('features.webauthn')) {\n this.render(VerifyWebauthnController, {\n provider: 'FIDO',\n factorType: 'webauthn',\n Beacon: FactorBeacon,\n });\n } else {\n this.render(VerifyWindowsHelloController, {\n provider: 'FIDO',\n factorType: 'webauthn',\n Beacon: FactorBeacon,\n });\n }\n },\n\n verifyU2F: function() {\n this.render(VerifyU2FController, {\n provider: 'FIDO',\n factorType: 'u2f',\n Beacon: FactorBeacon,\n });\n },\n\n verifySAMLFactor: function() {\n this.render(VerifyCustomFactorController, {\n provider: 'GENERIC_SAML',\n factorType: 'assertion:saml2',\n Beacon: FactorBeacon,\n });\n },\n\n verifyOIDCFactor: function() {\n this.render(VerifyCustomFactorController, {\n provider: 'GENERIC_OIDC',\n factorType: 'assertion:oidc',\n Beacon: FactorBeacon,\n });\n },\n\n verifyClaimsFactor: function() {\n this.render(VerifyCustomFactorController, {\n provider: 'CUSTOM',\n factorType: 'claims_provider',\n Beacon: FactorBeacon,\n });\n },\n\n verify: function(provider, factorType, factorIndex) {\n this.render(MfaVerifyController, {\n provider: provider.toUpperCase(),\n factorType: factorType,\n factorIndex: factorIndex,\n Beacon: FactorBeacon,\n });\n },\n\n verifyNoProvider: function(factorType) {\n this.render(MfaVerifyController, {\n factorType: factorType,\n Beacon: FactorBeacon,\n });\n },\n\n enrollChoices: function() {\n this.render(EnrollChoicesController, { Beacon: SecurityBeacon });\n },\n\n enrollDuo: function() {\n this.render(EnrollDuoController, {\n provider: 'DUO',\n factorType: 'web',\n Beacon: FactorBeacon,\n });\n },\n\n enrollQuestion: function() {\n this.render(EnrollQuestionController, {\n provider: 'OKTA',\n factorType: 'question',\n Beacon: FactorBeacon,\n });\n },\n\n enrollPassword: function() {\n this.render(EnrollPasswordController, {\n provider: 'OKTA',\n factorType: 'password',\n Beacon: FactorBeacon,\n });\n },\n\n enrollSms: function() {\n this.render(EnrollCallAndSmsController, {\n provider: 'OKTA',\n factorType: 'sms',\n Beacon: FactorBeacon,\n });\n },\n\n enrollCall: function() {\n this.render(EnrollCallAndSmsController, {\n provider: 'OKTA',\n factorType: 'call',\n Beacon: FactorBeacon,\n });\n },\n\n enrollEmail: function() {\n this.render(EnrollEmailController, {\n provider: 'OKTA',\n factorType: 'email',\n Beacon: FactorBeacon,\n });\n },\n\n enrollActivateEmail: function() {\n this.render(EnrollActivateEmailController, {\n provider: 'OKTA',\n factorType: 'email',\n Beacon: FactorBeacon,\n });\n },\n\n enrollRsa: function() {\n this.render(EnrollOnPremController, {\n provider: 'RSA',\n factorType: 'token',\n Beacon: FactorBeacon,\n });\n },\n\n enrollOnPrem: function() {\n this.render(EnrollOnPremController, {\n provider: 'DEL_OATH',\n factorType: 'token',\n Beacon: FactorBeacon,\n });\n },\n\n enrollSymantecVip: function() {\n this.render(EnrollSymantecVipController, {\n provider: 'SYMANTEC',\n factorType: 'token',\n Beacon: FactorBeacon,\n });\n },\n\n enrollYubikey: function() {\n this.render(EnrollYubikeyController, {\n provider: 'YUBICO',\n factorType: 'token:hardware',\n Beacon: FactorBeacon,\n });\n },\n\n enrollSAMLFactor: function() {\n this.render(EnrollCustomFactorController, {\n provider: 'GENERIC_SAML',\n factorType: 'assertion:saml2',\n Beacon: FactorBeacon,\n });\n },\n\n enrollOIDCFactor: function() {\n this.render(EnrollCustomFactorController, {\n provider: 'GENERIC_OIDC',\n factorType: 'assertion:oidc',\n Beacon: FactorBeacon,\n });\n },\n\n enrollClaimsFactor: function() {\n this.render(EnrollCustomFactorController, {\n provider: 'CUSTOM',\n factorType: 'claims_provider',\n Beacon: FactorBeacon,\n });\n },\n\n enrollActivateClaimsFactor: function() {\n this.render(EnrollActivateCustomFactorController, {\n provider: 'CUSTOM',\n factorType: 'claims_provider',\n Beacon: FactorBeacon,\n });\n },\n\n enrollTotpFactor: function(provider, factorType) {\n this.render(EnrollTotpController, {\n provider: provider.toUpperCase(),\n factorType: factorType,\n Beacon: FactorBeacon,\n });\n },\n\n enrollHotpFactor: function() {\n this.render(EnrollHotpController, {\n provider: 'CUSTOM',\n factorType: 'token:hotp',\n Beacon: FactorBeacon,\n });\n },\n\n enrollWebauthn: function() {\n if (this.settings.get('features.webauthn')) {\n this.render(EnrollWebauthnController, {\n provider: 'FIDO',\n factorType: 'webauthn',\n Beacon: FactorBeacon,\n });\n } else {\n this.render(EnrollWindowsHelloController, {\n provider: 'FIDO',\n factorType: 'webauthn',\n Beacon: FactorBeacon,\n });\n }\n },\n\n enrollU2F: function() {\n this.render(EnrollU2FController, {\n provider: 'FIDO',\n factorType: 'u2f',\n Beacon: FactorBeacon,\n });\n },\n\n scanBarcodeTotpFactor: function(provider, factorType) {\n this.render(BarcodeTotpController, {\n provider: provider.toUpperCase(),\n factorType: factorType,\n Beacon: FactorBeacon,\n });\n },\n\n scanBarcodePushFactor: function() {\n this.render(BarcodePushController, {\n provider: 'OKTA',\n factorType: 'push',\n Beacon: FactorBeacon,\n });\n },\n\n activateTotpFactor: function(provider, factorType) {\n this.render(ActivateTotpController, {\n provider: provider.toUpperCase(),\n factorType: factorType,\n Beacon: FactorBeacon,\n });\n },\n\n manualSetupTotpFactor: function(provider, factorType) {\n this.render(ManualSetupTotpController, {\n provider: provider.toUpperCase(),\n factorType: factorType,\n Beacon: FactorBeacon,\n });\n },\n\n manualSetupPushFactor: function() {\n this.render(ManualSetupPushController, {\n provider: 'OKTA',\n factorType: 'push',\n Beacon: FactorBeacon,\n });\n },\n\n activationLinkSent: function() {\n this.render(EnrollmentLinkSentController, {\n provider: 'OKTA',\n factorType: 'push',\n Beacon: FactorBeacon,\n });\n },\n\n enterPasscodeInPushEnrollmentFlow: function() {\n this.render(EnterPasscodePushFlowController, {\n provider: 'OKTA',\n factorType: 'token:software:totp',\n Beacon: FactorBeacon,\n });\n },\n\n passwordExpired: function() {\n this.render(PasswordExpiredController, { Beacon: SecurityBeacon });\n },\n\n customPasswordExpired: function() {\n this.render(CustomPasswordExpiredController, { Beacon: SecurityBeacon });\n },\n\n forgotPassword: function() {\n this.render(ForgotPasswordController);\n },\n\n recoveryChallenge: function() {\n this.render(RecoveryChallengeController, { Beacon: SecurityBeacon });\n },\n\n recoveryEmailSent: function() {\n this.render(PwdResetEmailSentController, { Beacon: SecurityBeacon });\n },\n\n unlockEmailSent: function() {\n this.render(UnlockEmailSentController, { Beacon: SecurityBeacon });\n },\n\n recoveryQuestion: function() {\n this.render(RecoveryQuestionController, { Beacon: SecurityBeacon });\n },\n\n passwordReset: function() {\n this.render(PasswordResetController, { Beacon: SecurityBeacon });\n },\n\n recoveryLoading: function(token) {\n this.render(RecoveryLoadingController, {\n token: token,\n Beacon: SecurityBeacon,\n });\n },\n\n unlockAccount: function() {\n this.render(UnlockAccountController);\n },\n\n accountUnlocked: function() {\n this.render(AccountUnlockedController, { Beacon: SecurityBeacon });\n },\n\n refreshAuthState: function(token) {\n this.render(RefreshAuthStateController, {\n token: token,\n Beacon: SecurityBeacon,\n });\n },\n\n register: function() {\n this.render(RegistrationController);\n },\n\n registerComplete: function() {\n this.render(RegistrationCompleteController);\n },\n\n errorState: function() {\n this.render(ErrorStateController, { Beacon: SecurityBeacon });\n },\n\n consentRequired: function() {\n this.render(ConsentRequiredController);\n },\n\n adminConsentRequired: function() {\n this.render(AdminConsentRequiredController);\n },\n\n enrollUser: function() {\n this.render(EnrollUserController);\n },\n\n deviceActivate: function() {\n this.render(DeviceActivateController);\n },\n deviceActivateComplete: function() {\n this.render(DeviceActivateTerminalController);\n },\n});\n","/*!\n * Copyright (c) 2015-2016, 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 { Model } from 'okta';\nimport { mergeHook } from 'util/Hooks';\nimport { HookDefinition, HooksOptions } from 'types';\n\nexport default class Hooks extends Model {\n\n mergeHook(formName: string, hookToMerge: HookDefinition): void {\n const hooks = this.get('hooks') || {};\n mergeHook(hooks, formName, hookToMerge);\n this.set('hooks', hooks);\n }\n\n getHook(formName: string): HookDefinition {\n const hooks: HooksOptions = this.get('hooks') || {};\n return hooks[formName]; // may be undefined\n }\n \n}\n","/* eslint max-statements: [2, 22], complexity: [2, 12] */\n\n/*!\n * Copyright (c) 2015-2016, 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 { _, Model, loc, internal, ModelProperty } from 'okta';\nimport config from 'config/config.json';\nimport hbs from 'handlebars-inline-precompile';\nimport Q from 'q';\nimport BrowserFeatures from 'util/BrowserFeatures';\nimport Errors from 'util/Errors';\nimport IDP from 'util/IDP';\nimport Logger from 'util/Logger';\nimport Util from 'util/Util';\nimport CountryUtil from 'util/CountryUtil';\nimport { OktaAuth } from '@okta/okta-auth-js';\nconst SharedUtil = internal.util.Util;\nconst ConfigError = Errors.ConfigError;\nconst UnsupportedBrowserError = Errors.UnsupportedBrowserError;\nconst assetBaseUrlTpl = hbs('https://global.oktacdn.com/okta-signin-widget/{{version}}');\n\nconst local: Record = {\n baseUrl: ['string', true],\n recoveryToken: ['string', false, undefined],\n stateToken: ['string', false, undefined],\n username: ['string', false],\n signOutLink: ['string', false],\n relayState: ['string', false],\n\n redirect: {\n type: 'string',\n values: ['never', 'always', 'auto'],\n value: 'auto',\n },\n\n // allows bootstrapping the Widget into a specific view such\n // as register or forgot password\n flow: ['string', false, 'default'],\n\n // Function to transform the username before passing it to the API\n // for Primary Auth, Forgot Password and Unlock Account.\n transformUsername: ['function', false],\n\n // CALLBACKS\n globalSuccessFn: 'function',\n globalErrorFn: 'function',\n processCreds: 'function',\n hooks: 'object',\n\n // IMAGES\n logo: 'string',\n logoText: ['string', false],\n helpSupportNumber: 'string',\n\n // \n // attribute to hold proxy (fake) idx response\n // to render static pages without initiating idx pipeline\n proxyIdxResponse: ['object', false],\n\n // \n // By default, state handle will be saved to session storage\n // and will be clear when terminal error or success redirect.\n // Set this flag to true if you want to override this behavior.\n // a.k.a dishonor the state handle stored in session storage.\n overrideExistingStateToken: ['boolean', false, false],\n\n // FEATURES\n 'features.router': ['boolean', true, false],\n 'features.securityImage': ['boolean', true, false],\n 'features.rememberMe': ['boolean', true, true],\n 'features.autoPush': ['boolean', true, false],\n 'features.smsRecovery': ['boolean', true, false],\n 'features.callRecovery': ['boolean', true, false],\n 'features.emailRecovery': ['boolean', false, true],\n 'features.webauthn': ['boolean', true, false],\n 'features.selfServiceUnlock': ['boolean', true, false],\n 'features.multiOptionalFactorEnroll': ['boolean', true, false],\n 'features.deviceFingerprinting': ['boolean', false, false],\n 'features.hideSignOutLinkInMFA': ['boolean', false, false],\n 'features.skipIdpFactorVerificationBtn': ['boolean', false, false],\n 'features.hideBackToSignInForReset': ['boolean', false, false],\n 'features.customExpiredPassword': ['boolean', true, false],\n 'features.registration': ['boolean', false, false],\n 'features.idpDiscovery': ['boolean', false, false],\n 'features.passwordlessAuth': ['boolean', false, false],\n 'features.showPasswordToggleOnSignInPage': ['boolean', false, false],\n 'features.trackTypingPattern': ['boolean', false, false],\n 'features.redirectByFormSubmit': ['boolean', false, false],\n 'features.useDeviceFingerprintForSecurityImage': ['boolean', false, true],\n 'features.showPasswordRequirementsAsHtmlList': ['boolean', false, false],\n 'features.mfaOnlyFlow': ['boolean', false, false],\n 'features.scrollOnError': ['boolean', false, true],\n 'features.showKeepMeSignedIn': ['boolean', false, true],\n 'features.showIdentifier': ['boolean', false, true],\n 'features.autoFocus': ['boolean', false, true],\n 'features.rememberMyUsernameOnOIE': ['boolean', false, false],\n \n defaultCountryCode: ['string', false, 'US'],\n\n // I18N\n language: ['any', false], // Can be a string or a function\n i18n: ['object', false],\n\n // ASSETS\n 'assets.baseUrl': ['string', false],\n 'assets.rewrite': {\n type: 'function',\n value: _.identity,\n },\n 'assets.languages': ['array', false],\n\n // OAUTH2\n issuer: 'string',\n clientId: 'string',\n redirectUri: 'string',\n state: 'string',\n scopes: 'array',\n codeChallenge: 'string',\n codeChallengeMethod: ['string', false],\n oAuthTimeout: ['number', false],\n\n authScheme: ['string', false, 'OAUTH2'],\n\n // External IdPs\n idps: ['array', false, []],\n idpDisplay: {\n type: 'string',\n values: ['PRIMARY', 'SECONDARY'],\n value: 'SECONDARY',\n },\n\n // HELP LINKS\n 'helpLinks.help': 'string',\n 'helpLinks.forgotPassword': 'string',\n 'helpLinks.unlock': 'string',\n 'helpLinks.custom': 'array',\n 'helpLinks.factorPage.href': 'string',\n 'helpLinks.factorPage.text': 'string',\n\n //Custom Buttons\n customButtons: ['array', false, []],\n\n //Registration\n policyId: 'string',\n 'registration.click': 'function',\n 'registration.parseSchema': 'function',\n 'registration.preSubmit': 'function',\n 'registration.postSubmit': 'function',\n\n //Consent\n 'consent.cancel': 'function',\n\n //IDP Discovery\n 'idpDiscovery.requestContext': 'string',\n\n //Colors\n 'colors.brand': 'string',\n\n //Descriptions\n brandName: 'string',\n\n //PIV\n piv: ['object', false, {}],\n\n //Email verify callback\n otp: 'string',\n};\n\nconst derived: Record = {\n showPasswordToggle: {\n deps: ['features.showPasswordToggleOnSignInPage'],\n fn: function() {\n // showPasswordToggle is for OIE only.\n // Used to default showPasswordToggleOnSignInPage to true.\n const defaultValue = true;\n const customizedValue = this.options?.features?.showPasswordToggleOnSignInPage ??\n this.options?.['features.showPasswordToggleOnSignInPage'];\n return customizedValue ?? defaultValue;\n },\n cache: true,\n },\n redirectUtilFn: {\n deps: ['features.redirectByFormSubmit'],\n fn: function(redirectByFormSubmit) {\n return redirectByFormSubmit ? Util.redirectWithFormGet.bind(Util) : SharedUtil.redirect.bind(SharedUtil);\n },\n cache: true,\n },\n supportedLanguages: {\n deps: ['i18n', 'language', 'assets.languages'],\n fn: function(i18n, language, hostedLanguages) {\n // By default, the language be automatically detected from the browser\n // Developers can specify the language. It will be added to the supportedLanguages list.\n // Developers can also provide a list of languages with hosted assets, these replace the default list\n const supportedLanguages = hostedLanguages || config.supportedLanguages;\n return _.union(\n supportedLanguages, \n _.keys(i18n), \n _.isString(language) ? [language] : []\n );\n },\n cache: true,\n },\n languageCode: {\n deps: ['language', 'supportedLanguages'],\n fn: function(language, supportedLanguages) {\n const userLanguages = BrowserFeatures.getUserLanguages();\n\n const preferred = _.clone(userLanguages);\n\n const supportedLowerCase = Util.toLower(supportedLanguages);\n\n // Any developer defined \"language\" takes highest priority:\n // As a string, i.e. 'en', 'ja', 'zh-CN'\n if (_.isString(language)) {\n preferred.unshift(language);\n } else if (_.isFunction(language)) {\n // As a callback function, which is passed the list of supported\n // languages and detected user languages. This function must return\n // a languageCode, i.e. 'en', 'ja', 'zh-CN'\n preferred.unshift(language(supportedLanguages, userLanguages));\n }\n\n // Add default language, and expand to include any language\n // codes that do not include region, dialect, etc.\n preferred.push(config.defaultLanguage);\n const expanded = Util.toLower(Util.expandLanguages(preferred));\n\n // Perform a case insensitive search - this is necessary in the case\n // of browsers like Safari\n let i;\n let supportedPos;\n\n for (i = 0; i < expanded.length; i++) {\n supportedPos = supportedLowerCase.indexOf(expanded[i]);\n if (supportedPos > -1) {\n return supportedLanguages[supportedPos];\n }\n }\n },\n },\n countryCode: {\n deps: ['defaultCountryCode'],\n fn: function(defaultCountryCode) {\n const countries = CountryUtil.getCountries();\n return Object.keys(countries).includes(defaultCountryCode)\n ? defaultCountryCode : 'US';\n },\n },\n mode: {\n deps: ['useInteractionCodeFlow', 'codeChallenge'],\n fn: function(useInteractionCodeFlow, codeChallenge) {\n if (useInteractionCodeFlow && codeChallenge) {\n return 'remediation';\n }\n return 'relying-party';\n }\n },\n oauth2Enabled: {\n deps: ['clientId', 'authScheme'],\n fn: function(clientId, authScheme) {\n return (!!clientId) && authScheme.toLowerCase() === 'oauth2';\n },\n cache: true,\n },\n oieEnabled: {\n deps: ['stateToken', 'proxyIdxResponse', 'useInteractionCodeFlow'],\n fn: function(stateToken, proxyIdxResponse, useInteractionCodeFlow) {\n return stateToken || proxyIdxResponse || useInteractionCodeFlow;\n },\n cache: true,\n },\n // Redirect Uri to provide in the oauth API\n oauthRedirectUri: {\n deps: ['redirectUri'],\n fn: function(redirectUri) {\n if (redirectUri) {\n return redirectUri;\n }\n\n let origin = window.location.origin;\n\n // IE8\n if (!origin) {\n const href = window.location.href;\n const path = window.location.pathname;\n\n if (path !== '') {\n origin = href.substring(0, href.lastIndexOf(path));\n }\n }\n\n return encodeURI(origin);\n },\n },\n // Adjusts the idps passed into the widget based on if they get explicit support\n configuredSocialIdps: {\n deps: ['idps'],\n fn: function(idps) {\n return _.map(idps, function(idpConfig) {\n const idp = _.clone(idpConfig);\n\n let type = idp.type && idp.type.toLowerCase();\n\n if (!(type && _.contains(IDP.SUPPORTED_SOCIAL_IDPS, type))) {\n type = 'general-idp';\n idp.text = idp.text || '{ Please provide a text value }';\n }\n\n idp.className = [\n 'social-auth-button',\n 'social-auth-' + type + '-button ',\n idp.className ? idp.className : '',\n ].join(' ');\n idp.dataAttr = 'social-auth-' + type + '-button';\n idp.i18nKey = 'socialauth.' + type + '.label';\n return idp;\n });\n },\n cache: true,\n },\n // Can support piv authentication\n hasPivCard: {\n deps: ['piv'],\n fn: function(piv) {\n return piv && piv.certAuthUrl;\n },\n cache: true,\n },\n // social auth buttons order - 'above'/'below' the primary auth form (boolean)\n socialAuthPositionTop: {\n deps: ['configuredSocialIdps', 'hasPivCard', 'idpDisplay'],\n fn: function(configuredSocialIdps, hasPivCard, idpDisplay) {\n return (!_.isEmpty(configuredSocialIdps) || hasPivCard) && idpDisplay.toUpperCase() === 'PRIMARY';\n },\n cache: true,\n },\n hasConfiguredButtons: {\n deps: ['configuredSocialIdps', 'customButtons', 'hasPivCard'],\n fn: function(configuredSocialIdps, customButtons, hasPivCard) {\n return !_.isEmpty(configuredSocialIdps) || !_.isEmpty(customButtons) || hasPivCard;\n },\n cache: true,\n }\n};\n\ntype SettingsProps = typeof local & typeof derived;\n\nexport default class Settings extends Model {\n authClient:OktaAuth;\n\n get>(attributeName: A): any {\n return Model.prototype.get.call(this, attributeName);\n }\n\n preinitialize(...args) {\n this.local = local;\n this.derived = derived;\n Model.prototype.preinitialize.apply(this, args);\n }\n\n initialize(options) {\n const { colors } = options;\n let { baseUrl } = options;\n if (!baseUrl) {\n // infer baseUrl from the issuer\n const { authClient } = options;\n if (authClient) {\n baseUrl = authClient.getIssuerOrigin();\n } else {\n // issuer can be passed at top-level or in authParams\n const { authParams } = options;\n let { issuer } = options;\n issuer = issuer || authParams?.issuer;\n baseUrl = issuer?.split('/oauth2/')[0];\n }\n this.set('baseUrl', baseUrl);\n }\n\n if (!baseUrl) {\n this.callGlobalError(new ConfigError(loc('error.required.baseUrl')));\n } else if (colors && _.isString(colors.brand) && !colors.brand.match(/^#[0-9A-Fa-f]{6}$/)) {\n this.callGlobalError(new ConfigError(loc('error.invalid.colors.brand')));\n } else if (BrowserFeatures.corsIsNotSupported()) {\n this.callGlobalError(new UnsupportedBrowserError(loc('error.unsupported.cors')));\n }\n }\n\n setAcceptLanguageHeader(authClient) {\n if (authClient) {\n authClient.http.setRequestHeader('Accept-Language', this.get('languageCode'));\n }\n }\n\n setAuthClient(authClient) {\n this.setAcceptLanguageHeader(authClient);\n this.authClient = authClient;\n }\n\n getAuthClient() {\n return this.authClient;\n }\n\n set(...args: any[]) {\n try {\n return Model.prototype.set.apply(this, args);\n } catch (e) {\n const message = e.message ? e.message : e;\n\n this.callGlobalError(new ConfigError(message));\n }\n }\n\n // Invokes the global success function. This should only be called on a\n // terminal part of the code (i.e. authStatus SUCCESS or after sending\n // a recovery email)\n callGlobalSuccess(status, data) {\n const res = _.extend(data, { status: status });\n // Defer this to ensure that our functions have rendered completely\n // before invoking their function\n\n _.defer(_.partial(this.get('globalSuccessFn'), res));\n }\n\n // Invokes the global error function. This should only be called on non\n // recoverable errors (i.e. configuration errors, browser unsupported\n // errors, etc)\n callGlobalError(err) {\n const globalErrorFn = this.get('globalErrorFn') || this.options.globalErrorFn;\n // Note: Must use \"this.options.globalErrorFn\" when they've passed invalid\n // arguments - globalErrorFn will not have been set yet\n\n if (globalErrorFn) {\n globalErrorFn(err);\n } else {\n // Only throw the error if they have not registered a globalErrorFn\n throw err;\n }\n }\n\n // Get the username by applying the transform function if it exists.\n transformUsername(username, operation) {\n const transformFn = this.get('transformUsername');\n\n if (transformFn && _.isFunction(transformFn)) {\n return transformFn(username, operation);\n }\n return username;\n }\n\n processCreds(creds) {\n const processCreds = this.get('processCreds');\n\n return Q.Promise(function(resolve) {\n if (!_.isFunction(processCreds)) {\n resolve();\n } else if (processCreds.length === 2) {\n processCreds(creds, resolve);\n } else {\n processCreds(creds);\n resolve();\n }\n });\n }\n\n parseRegistrationSchema(schema, onSuccess, onFailure) {\n const parseSchema = this.get('registration.parseSchema');\n\n //check for parseSchema callback\n if (_.isFunction(parseSchema)) {\n parseSchema(\n schema,\n function(schema) {\n onSuccess(schema);\n },\n function(error) {\n error = error || { errorSummary: loc('registration.default.callbackhook.error') };\n error['callback'] = 'parseSchema';\n onFailure(error);\n }\n );\n } else {\n //no callback\n onSuccess(schema);\n }\n }\n\n preRegistrationSubmit(postData, onSuccess, onFailure) {\n const preSubmit = this.get('registration.preSubmit');\n\n //check for preSubmit callback\n if (_.isFunction(preSubmit)) {\n preSubmit(\n postData,\n function(postData) {\n onSuccess(postData);\n },\n function(error) {\n error = error || { errorSummary: loc('registration.default.callbackhook.error') };\n error['callback'] = 'preSubmit';\n onFailure(error);\n }\n );\n } else {\n //no callback\n onSuccess(postData);\n }\n }\n\n postRegistrationSubmit(response, onSuccess, onFailure) {\n const postSubmit = this.get('registration.postSubmit');\n\n //check for postSubmit callback\n if (_.isFunction(postSubmit)) {\n postSubmit(\n response,\n function(response) {\n onSuccess(response);\n },\n function(error) {\n error = error || { errorSummary: loc('registration.default.callbackhook.error') };\n error['callback'] = 'postSubmit';\n onFailure(error);\n }\n );\n } else {\n //no callback\n onSuccess(response);\n }\n }\n\n // Use the parse function to transform config options to the standard\n // settings we currently support. This is a good place to deprecate old\n // option formats.\n parse(options) {\n if (options.labels || options.country) {\n Logger.deprecate('Use \"i18n\" instead of \"labels\" and \"country\"');\n const overrides = options.labels || {};\n\n _.each(options.country, function(val, key) {\n overrides['country.' + key] = val;\n });\n // Old behavior is to treat the override as a global override, so we\n // need to add these overrides to each language\n options.i18n = {};\n _.each(config.supportedLanguages, function(language) {\n options.i18n[language] = overrides;\n });\n delete options.labels;\n delete options.country;\n }\n\n // Default the assets.baseUrl to the cdn, or remove any trailing slashes\n if (!options.assets) {\n options.assets = {};\n }\n const abu = options.assets.baseUrl;\n\n if (!abu) {\n options.assets.baseUrl = assetBaseUrlTpl({ version: config.version });\n } else if (abu[abu.length - 1] === '/') {\n options.assets.baseUrl = abu.substring(0, abu.length - 1);\n }\n\n return options;\n }\n\n isDsTheme() {\n return false;\n }\n\n}\n","/*!\n * Copyright (c) 2015-2016, 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\nconst fn: Record any> = {};\nconst hasFullCorsSupport = 'withCredentials' in new window.XMLHttpRequest();\nconst hasXDomainRequest = typeof window.XDomainRequest !== 'undefined';\n\nfn.corsIsNotSupported = function() {\n return !(hasFullCorsSupport || hasXDomainRequest);\n};\n\nfn.corsIsNotEnabled = function(jqXhr) {\n // Not a definitive check, but it's the best we've got.\n // Note: This will change when OktaAuth is updated\n return jqXhr.status === 0;\n};\n\n// This is currently not being used, but we'll keep it around for when we\n// want a fallback mechanism - i.e. use localStorage if it exists, else fall\n// back to cookies.\nfn.localStorageIsNotSupported = function() {\n const test = 'test';\n\n try {\n localStorage.setItem(test, test);\n localStorage.removeItem(test);\n return false;\n } catch (e) {\n return true;\n }\n};\n\nfn.supportsPushState = function(win) {\n win = win || window;\n return !!(win.history && win.history.pushState);\n};\n\nfn.isIE = function() {\n return /(msie|trident)/i.test(navigator.userAgent);\n};\n\nfn.isFirefox = function() {\n return navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n};\n\nfn.isEdge = function() {\n // This is to just check for windows edge. Mac edge - chromium based's UA is 'edg'.\n return navigator.userAgent.toLowerCase().indexOf('edge') > -1;\n};\n\nfn.isSafari = function() {\n // Chrome has safari in its useragent string so adding this extra check.\n return (\n navigator.userAgent.toLowerCase().indexOf('safari') > -1 &&\n navigator.userAgent.toLowerCase().indexOf('chrome') === -1\n );\n};\n\nfn.isMac = function() {\n return navigator.platform.toUpperCase().indexOf('MAC') >= 0;\n};\n\n\nfn.isAndroid = function() {\n // Windows Phone also contains \"Android\"\n return /android/i.test(navigator.userAgent) &&\n !/windows phone/i.test(navigator.userAgent);\n};\n\nfn.isIOS = function() {\n // iOS detection from: http://stackoverflow.com/a/9039885/177710\n return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n};\n\n// Returns a list of languages the user has configured for their browser, in\n// order of preference.\nfn.getUserLanguages = function() {\n // Chrome, Firefox\n if (navigator.languages) {\n return navigator.languages;\n }\n\n const languages = [];\n const properties = [\n 'language', // Safari, IE11\n 'userLanguage', // IE\n 'browserLanguage', // IE\n 'systemLanguage' // IE\n ];\n\n properties.forEach(function(property) {\n if (navigator[property]) {\n languages.push(navigator[property]);\n }\n });\n\n return languages;\n};\n\n\nexport default fn;\n","/*!\n * Copyright (c) 2015-2016, 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 config from 'config/config.json';\nimport fetch from 'cross-fetch';\nimport country from 'nls/country.json';\nimport login from 'nls/login.json';\nimport Q from 'q';\nimport _ from 'underscore';\nimport BrowserFeatures from 'util/BrowserFeatures';\nimport Logger from 'util/Logger';\nconst STORAGE_KEY = 'osw.languages';\n\ndeclare type i18nOptions = {\n [localeOrCountry: string]: {\n [i18nKey: string]: string;\n }\n}\n\ndeclare type Assets = {\n baseUrl: string;\n rewrite(origPath: string): string;\n}\n\n/**\n * Converts options to our internal format, which distinguishes between\n * login and country bundles.\n *\n * Example options.i18n passed in by the developer:\n * {\n * 'en': {\n * 'needhelp': 'need help override',\n * 'primaryauth.title': 'new sign in text',\n * 'country.JP' = 'Japan, Japan'\n * }\n * }\n *\n * Parsed:\n * {\n * 'en': {\n * 'login': {\n * 'needhelp': 'need help override',\n * 'primaryauth.title': 'new sign in text',\n * },\n * 'country': {\n * 'JP': 'Japan, Japan'\n * }\n * }\n * }\n */\nfunction parseOverrides(i18n) {\n if (!i18n) {\n return {};\n }\n\n const i18nWithLowerCaseKeys = {};\n\n _.each(_.keys(i18n), function(key) {\n i18nWithLowerCaseKeys[key.toLowerCase()] = i18n[key];\n });\n\n return _.mapObject(i18nWithLowerCaseKeys, function(props) {\n const mapped = { login: {}, country: {} };\n\n if (!_.isObject(props)) {\n throw new Error('Invalid format for \"i18n\"');\n }\n _.each(props, function(val, key) {\n const split = key.split(/^country\\./);\n\n if (split.length > 1) {\n mapped.country[split[1]] = val;\n } else {\n mapped.login[split[0]] = val;\n }\n });\n return mapped;\n });\n}\n\n// Caching: We only bundle English by default in the Sign-In Widget. Other\n// languages are loaded on demand and cached in localStorage. These languages\n// are tied to the version of the widget - when it bumps, we reset the cache.\n\nfunction getCachedLanguages() {\n let storage = JSON.parse(localStorage.getItem(STORAGE_KEY));\n\n if (!storage || storage.version !== config.version) {\n storage = {\n version: config.version,\n };\n }\n return storage;\n}\n\nfunction addLanguageToCache(language, loginJson, countryJson) {\n const current = getCachedLanguages();\n\n current[language] = {\n login: loginJson,\n country: countryJson,\n };\n localStorage.setItem(STORAGE_KEY, JSON.stringify(current));\n}\n\n// By default, the assets.bundleUrl is tied to the Okta CDN.\n//\n// There are two overrides available for modifying where we load the asset\n// bundles from:\n//\n// 1. assets.baseUrl\n//\n// This is the base path the OSW pulls assets from, which in this case is\n// the Okta CDN. Override this config option if you want to host the\n// files on your own domain, or if you're using a new version of the\n// widget whose language files haven't been published to the CDN yet.\n//\n// 2. assets.rewrite\n//\n// This is a function that can be used to modify the path + fileName of\n// the bundle we're loading, relative to the baseUrl. When called, it\n// will pass the current path, and expect the new path to be returned.\n// This is useful, for example, if your build process has an extra\n// cachebusting step, i.e:\n//\n// function rewrite(file) {\n// // file: /labels/json/login_ja.json\n// return file.replace('.json', '.' + md5file(file) + '.json');\n// }\n//\n// Note: Most developers will not need to use these overrides - the default\n// is to use the Okta CDN and to use the same path + file structure the\n// widget module publishes by default.\nfunction fetchJson(bundle, language, assets) {\n // Our bundles use _ to separate country and region, i.e:\n // zh-CN -> zh_CN\n const languageCode = language.replace('-', '_');\n\n const path = assets.rewrite(encodeURI(`/labels/json/${bundle}_${languageCode}.json`));\n\n const headers = {\n Accept: 'application/json',\n 'Content-Type': 'text/plain',\n };\n\n const mode = 'no-cors';\n\n return fetch(assets.baseUrl + path, {\n method: 'GET',\n headers,\n mode,\n })\n .then(res => res.text())\n .then(txt => JSON.parse(txt));\n}\n\nfunction getBundles(language, assets, supportedLanguages) {\n // Two special cases:\n // 1. Default language is already bundled with the widget\n // 2. If the language is not in our config file, it means that they've\n // probably defined it on their own.\n if (language === config.defaultLanguage || !_.contains(supportedLanguages, language)) {\n return Q({});\n }\n\n //local storage does not work correctly with android web views (embeded browers)\n //so skip the caching and just make the request to get the local info\n const localStorageIsSupported = !BrowserFeatures.localStorageIsNotSupported();\n\n if (localStorageIsSupported) {\n const cached = getCachedLanguages();\n\n if (cached[language]) {\n return Q(cached[language]);\n }\n }\n\n return Q.all([fetchJson('login', language, assets), fetchJson('country', language, assets)])\n .spread(function(loginJson, countryJson) {\n if (localStorageIsSupported) {\n addLanguageToCache(language, loginJson, countryJson);\n }\n return { login: loginJson, country: countryJson };\n })\n .catch(function() {\n // If there is an error, this will default to the bundled language and\n // we will no longer try to load the language this session.\n Logger.warn('Unable to load language: ' + language);\n return {};\n });\n}\n\nexport default {\n login: login,\n country: country,\n // Courage components within the sign in widget point to courage bundle to look\n // up i18nkeys. Since we dont have courage.properties inside the sign in widget\n // we are pointing courage bundle to login.\n courage: login,\n\n currentLanguage: null,\n\n isLoaded: function(language: string): boolean {\n return this.currentLanguage === language;\n },\n\n remove: function(): void {\n this.currentLanguage = null;\n },\n\n loadLanguage: function(language: string, overrides: i18nOptions, assets: Assets, supportedLanguages: string[]): Q.Promise {\n const parsedOverrides = parseOverrides(overrides);\n const lowerCaseLanguage = language.toLowerCase();\n return getBundles(language, assets, supportedLanguages).then(bundles => {\n // Always extend from the built in defaults in the event that some\n // properties are not translated\n this.login = _.extend({}, login, bundles.login);\n this.country = _.extend({}, country, bundles.country);\n this.courage = _.extend({}, login, bundles.login);\n if (parsedOverrides[lowerCaseLanguage]) {\n _.extend(this.login, parsedOverrides[lowerCaseLanguage]['login']);\n _.extend(this.country, parsedOverrides[lowerCaseLanguage]['country']);\n _.extend(this.courage, parsedOverrides[lowerCaseLanguage]['login']);\n }\n this.currentLanguage = language;\n });\n },\n};\n","/* eslint max-depth: [1,4] */\n/*!\n * Copyright (c) 2020, 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// BaseLoginRouter contains the more complicated router logic - rendering/\n// transition, etc. Most router changes should happen in LoginRouter (which is\n// responsible for adding new routes)\nimport { _, $, Backbone, Router, loc, BaseRouterOptions } from 'okta';\nimport Settings from 'models/Settings';\nimport Bundles from 'util/Bundles';\nimport BrowserFeatures from 'util/BrowserFeatures';\nimport ColorsUtil from 'util/ColorsUtil';\nimport Enums from 'util/Enums';\nimport Errors from 'util/Errors';\nimport Logger from 'util/Logger';\nimport LanguageUtil from 'util/LanguageUtil';\nimport AuthContainer from 'views/shared/AuthContainer';\nimport Header from 'views/shared/Header';\nimport AppState from './models/AppState';\nimport sessionStorageHelper from './client/sessionStorageHelper';\nimport {\n startLoginFlow,\n interactionCodeFlow,\n handleConfiguredFlow,\n} from './client';\n\nimport transformIdxResponse from './ion/transformIdxResponse';\nimport { FORMS } from './ion/RemediationConstants';\nimport CookieUtil from 'util/CookieUtil';\nimport { formatError, LegacyIdxError, StandardApiError } from './client/formatError';\nimport { RenderError, RenderResult } from 'types';\nimport { OktaAuth, IdxResponse } from '@okta/okta-auth-js';\nimport Hooks from 'models/Hooks';\n\nexport interface BaseLoginRouterOptions extends BaseRouterOptions, Backbone.RouterOptions {\n globalSuccessFn?: (res: RenderResult) => void;\n globalErrorFn?: (res: RenderError) => void;\n authClient?: OktaAuth;\n hooks: Hooks\n}\n\nclass BaseLoginRouter extends Router {\n Events: Backbone.Events = Backbone.Events; // also set on prototype\n hasControllerRendered = false;\n settings: Settings;\n appState: AppState;\n hooks: Hooks;\n header: Header;\n\n constructor(options: BaseLoginRouterOptions) {\n super(options);\n\n // Create a default success and/or error handler if\n // one is not provided.\n if (!options.globalSuccessFn) {\n options.globalSuccessFn = function() { /* dummy function */ };\n }\n if (!options.globalErrorFn) {\n options.globalErrorFn = function(err) {\n Logger.error(err);\n };\n }\n\n this.settings = new Settings(_.omit(options, 'el', 'authClient', 'hooks'), { parse: true });\n this.settings.setAuthClient(options.authClient);\n\n if (!options.el) {\n this.settings.callGlobalError(new Errors.ConfigError(loc('error.required.el')));\n }\n\n $('body > div').on('click', function() {\n // OKTA-69769 Tooltip wont close on iPhone/iPad\n // Registering a click handler on the first div\n // allows a tap that falls outside the tooltip\n // to be registered as a tap by iOS\n // and then the open tooltip will lose focus and close.\n });\n\n this.hooks = options.hooks;\n this.appState = new AppState();\n\n const wrapper = new AuthContainer({ appState: this.appState });\n\n $(options.el).append(wrapper.render().$el);\n this.el = `#${Enums.WIDGET_CONTAINER_ID}`;\n this.header = new Header({\n el: this.el,\n appState: this.appState,\n settings: this.settings,\n });\n\n // Hide until unitial render\n this.hide();\n\n this.listenTo(this.appState, 'change:deviceFingerprint', this.updateDeviceFingerprint);\n this.listenTo(this.appState, 'error', this.handleError);\n this.listenTo(this.appState, 'updateAppState', this.handleUpdateAppState);\n this.listenTo(this.appState, 'remediationError', this.handleIdxResponseFailure);\n this.listenTo(this.appState, 'restartLoginFlow', this.restartLoginFlow);\n }\n\n updateDeviceFingerprint() {\n const authClient = this.settings.getAuthClient();\n const fingerprint = this.appState.get('deviceFingerprint');\n if (fingerprint) {\n authClient.http.setRequestHeader('X-Device-Fingerprint', fingerprint);\n }\n }\n\n async handleUpdateAppState(idxResponse: IdxResponse): Promise {\n // Only update the cookie when the user has successfully authenticated themselves \n // to avoid incorrect/unnecessary updates.\n if (this.hasAuthenticationSucceeded(idxResponse) \n && this.settings.get('features.rememberMyUsernameOnOIE')) {\n this.updateIdentifierCookie(idxResponse);\n } \n\n const lastResponse = this.appState.get('idx');\n const useInteractionCodeFlow = this.settings.get('useInteractionCodeFlow');\n if (useInteractionCodeFlow) {\n if (idxResponse.interactionCode) {\n // Although session.stateHandle isn't used by interation flow,\n // it's better to clean up at the end of the flow.\n sessionStorageHelper.removeStateHandle();\n // This is the end of the IDX flow, now entering OAuth\n return interactionCodeFlow(this.settings, idxResponse);\n } \n } else {\n // Do not save state handle for the first page loads.\n // Because there shall be no difference between following behavior\n // 1. bootstrap widget\n // -> save state handle to session storage\n // -> refresh page\n // -> introspect using sessionStorage.stateHandle\n // 2. bootstrap widget\n // -> do not save state handle to session storage\n // -> refresh page\n // -> introspect using options.stateHandle\n if (lastResponse) {\n sessionStorageHelper.setStateHandle(idxResponse?.context?.stateHandle);\n }\n // Login flows that mimic step up (moving forward in login pipeline) via internal api calls,\n // need to clear stored stateHandles.\n // This way the flow can maintain the latest state handle. For eg. Device probe calls\n if (this.appState.get('currentFormName') === FORMS.CANCEL_TRANSACTION) {\n sessionStorageHelper.removeStateHandle();\n }\n }\n\n // transform response\n const ionResponse = transformIdxResponse(this.settings, idxResponse, lastResponse);\n\n await this.appState.setIonResponse(ionResponse, this.hooks);\n }\n\n handleIdxResponseFailure(error: LegacyIdxError = { error: 'unknown', details: undefined }) {\n // IDX errors will not call the global error handler\n error = formatError(error);\n this.handleUpdateAppState(error.details);\n }\n\n // Generic error handler for all exceptions\n handleError(error: LegacyIdxError | StandardApiError | Error = { error: 'unknown', details: undefined }) {\n // Show error message and notify listeners\n const originalError = error;\n const formattedError = formatError({...error}); // format the error to resemble an IDX response\n this.handleUpdateAppState(formattedError.details);\n this.settings.callGlobalError(originalError);\n\n // -- TODO: OKTA-244631 How to surface up the CORS error in IDX?\n // -- The `err` object from idx.js doesn't have XHR object\n // Global error handling for CORS enabled errors\n // if (err.xhr && BrowserFeatures.corsIsNotEnabled(err.xhr)) {\n // this.settings.callGlobalError(new Errors.UnsupportedBrowserError(loc('error.enabled.cors')));\n // return;\n // }\n }\n\n /* eslint max-statements: [2, 28], complexity: [2, 11] */\n async render(Controller, options = {}) {\n // If url changes then widget assumes that user's intention was to initiate a new login flow,\n // so clear stored token to use the latest token.\n if (sessionStorageHelper.getLastInitiatedLoginUrl() !== window.location.href) {\n sessionStorageHelper.removeStateHandle();\n }\n // Since we have a wrapper view, render our wrapper and use its content\n // element as our new el.\n // Note: Render it here because we know dom is ready at this point\n if (!this.header.rendered()) {\n this.el = this.header.render().getContentEl();\n }\n\n // If we need to load a language (or apply custom i18n overrides), do\n // this now and re-run render after it's finished.\n if (!Bundles.isLoaded(this.settings.get('languageCode'))) {\n await LanguageUtil.loadLanguage(this.appState, this.settings);\n }\n\n // introspect stateToken when widget is bootstrap with state token\n // and remove it from `settings` afterwards as IDX response always has\n // state token (which will be set into AppState)\n if (this.settings.get('oieEnabled')) {\n try {\n let idxResp = await startLoginFlow(this.settings);\n if (idxResp.error) {\n this.appState.trigger('remediationError', idxResp.error);\n } else {\n if (this.settings.get('flow') && !this.hasControllerRendered) {\n idxResp = await handleConfiguredFlow(idxResp, this.settings);\n }\n this.appState.trigger('updateAppState', idxResp);\n }\n } catch (exception) {\n this.appState.trigger('error', exception);\n } finally {\n // These settings should only be used one time, for initial render\n this.settings.unset('stateToken');\n this.settings.unset('proxyIdxResponse');\n }\n }\n\n // Load the custom colors only on the first render\n if (this.settings.get('colors.brand') && !ColorsUtil.isLoaded()) {\n const colors = {\n brand: this.settings.get('colors.brand'),\n };\n\n ColorsUtil.addStyle(colors);\n }\n\n // Show before initial render\n this.show();\n\n // render Controller\n this.unload();\n const controllerOptions = _.extend({\n el: this.el,\n settings: this.settings,\n appState: this.appState\n }, options);\n this.controller = new Controller(controllerOptions);\n\n // Bubble up all controller events\n this.listenTo(this.controller, 'all', this.trigger);\n\n this.controller.render();\n\n this.hasControllerRendered = true;\n }\n\n /**\n * When \"Remember My Username\" is enabled, we save the identifier in a cookie\n * so that the next time the user visits the SIW, the identifier field can be \n * pre-filled with this value.\n */\n updateIdentifierCookie(idxResponse: IdxResponse) {\n if (this.settings.get('features.rememberMe')) {\n // Update the cookie with the identifier\n const user = idxResponse?.context?.user;\n const { identifier } = user?.value || {};\n if (identifier) {\n CookieUtil.setUsernameCookie(identifier);\n }\n } else {\n // We remove the cookie explicitly if this feature is disabled.\n CookieUtil.removeUsernameCookie();\n } \n }\n\n hasAuthenticationSucceeded(idxResponse: IdxResponse) {\n // Check whether authentication has succeeded. This is done by checking the server response\n // and seeing if either the 'success' or 'successWithInteractionCode' objects are present.\n return idxResponse?.rawIdxState?.success || idxResponse?.rawIdxState?.successWithInteractionCode;\n }\n\n restartLoginFlow() {\n // clear all transaction data and saved IDX response\n this.settings.getAuthClient().transactionManager.clear();\n this.appState.set('idx', undefined);\n\n // Clear the recoveryToken, if any\n const authClient = this.settings.getAuthClient();\n delete authClient.options['recoveryToken'];\n this.settings.unset('recoveryToken');\n\n // Re-render the widget\n this.render(this.controller.constructor);\n }\n\n start() {\n const pushState = BrowserFeatures.supportsPushState();\n Router.prototype.start.call(this, { pushState: pushState });\n }\n\n hide() {\n this.header.$el.hide();\n }\n\n show() {\n this.header.$el.show();\n }\n\n remove() {\n this.unload();\n this.header.$el.remove();\n this.stopListening(this.appState);\n this.stopListening(this.settings);\n Bundles.remove();\n Backbone.history.stop();\n }\n}\n\n// Add \"Events\" to prototype for compatibility with existing code\nBaseLoginRouter.prototype.Events = Backbone.Events;\n\nexport default BaseLoginRouter;","/*!\n * Copyright (c) 2020, 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 BaseLoginRouter, { BaseLoginRouterOptions } from './BaseLoginRouter';\nimport FormController from './controllers/FormController';\n\nconst routes = {\n '': 'defaultAuth',\n '*wildcard': 'defaultAuth',\n};\n\nexport default class WidgetRouter extends BaseLoginRouter {\n constructor(options: BaseLoginRouterOptions) {\n super({ routes, ...options });\n }\n\n defaultAuth() {\n this.render(FormController);\n }\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 { ProceedOptions } from '@okta/okta-auth-js';\n\nexport async function emailVerifyCallback(settings) {\n const authClient = settings.getAuthClient();\n const idxOptions: ProceedOptions = {\n exchangeCodeForTokens: false, // we handle this in interactionCodeFlow.js\n shouldProceedWithEmailAuthenticator: false, // do not auto-select email authenticator\n };\n const meta = await authClient.idx.getSavedTransactionMeta(); // meta can load in another tab using state if it matches\n if (!meta || !meta.interactionHandle) {\n // Flow can not continue in this tab. Create a synthetic server response and use it to display a message to the user\n const messages = {\n type: 'array',\n value: [\n // terminal-return-otp-only-no-location.json\n {\n 'message': 'Enter the OTP in your original browser or device.',\n 'i18n': {\n 'key': 'idx.enter.otp.in.original.tab'\n },\n 'class': 'INFO'\n }\n ]\n };\n\n const resp = {\n neededToProceed: [],\n // OKTA-382410 so bad that has to leverage rawIdxState\n rawIdxState: {\n messages,\n },\n context: {\n messages,\n }\n };\n return resp;\n }\n \n // Proceed using the OTP code\n const otp = settings.get('otp');\n const idxResponse = await authClient.idx.proceed({\n ...idxOptions,\n otp\n });\n return idxResponse;\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 {\n IdxContext,\n IdxMessages,\n IdxResponse,\n RawIdxResponse\n} from '@okta/okta-auth-js';\nimport { loc } from 'okta';\n\nexport interface LegacyIdxError {\n error: string;\n details: IdxResponse\n}\n\nexport interface StandardApiError {\n error: string;\n error_description: string;\n}\n\nexport function isInvalidRecoveryTokenError(error): error is StandardApiError {\n // special case: error from interact when passing an (invalid) recovery token\n return (error?.error === 'invalid_request' && error.error_description === 'The recovery token is invalid');\n}\n\nexport function formatInvalidRecoveryTokenError(error: StandardApiError) {\n // This error comes from `oauth2/interact` so is not an IDX error.\n // simulate an IDX-JS error response\n const idxError = formatIDXError(error);\n const { details } = idxError;\n const messages: IdxMessages = {\n type: 'array',\n value: [\n {\n message: error.error_description,\n i18n: {\n key: 'oie.invalid.recovery.token'\n },\n class: 'ERROR'\n }\n ],\n };\n details.rawIdxState.messages = messages;\n details.context.messages = messages;\n return idxError;\n}\n\nexport function isOIENotEnabledError(error): error is StandardApiError {\n // special case: error from interact. `useInteractionCodeFlow` is true but the Org does not have OIE enabled\n // The response is not in IDX format. See playground/mocks/data/oauth2/error-feature-not-enabled.json\n return (error?.error === 'access_denied' && error.error_description);\n}\n\nexport function formatOIENotEnabledError(error: StandardApiError) {\n // This error comes from `oauth2/interact` so the error is in OAuth format\n // simulate an IDX-JS error response\n const idxError = formatIDXError(error);\n const { details } = idxError;\n const messages: IdxMessages = {\n type: 'array',\n value: [\n {\n message: error.error_description,\n i18n: {\n key: 'oie.feature.disabled'\n },\n class: 'ERROR'\n }\n ],\n };\n details.rawIdxState.messages = messages;\n details.context.messages = messages;\n return error;\n}\n\nexport function isOIEConfigurationError(error): error is StandardApiError {\n return (error?.error && error.error_description);\n}\n\nexport function formatOIEConfigurationError(error) {\n // This error comes from `oauth2/interact` so the error is in OAuth format\n // simulate an IDX-JS error response\n const idxError = formatIDXError(error);\n const { details } = idxError;\n const messages: IdxMessages = {\n type: 'array',\n value: [\n {\n message: loc('oie.configuration.error', 'login'),\n class: 'ERROR',\n i18n: undefined\n }\n ],\n };\n details.rawIdxState.messages = messages;\n details.context.messages = messages;\n return error;\n}\n\nexport function formatIDXError(error: LegacyIdxError | StandardApiError | Error): LegacyIdxError {\n // Make the error object resemble an IDX response\n const idxError = error as LegacyIdxError;\n idxError.details = idxError.details || {} as IdxResponse;\n const { details } = idxError;\n details.rawIdxState = details.rawIdxState || {} as RawIdxResponse;\n details.context = details.context || {} as IdxContext;\n details.neededToProceed = details.neededToProceed || [];\n\n // Populate generic error message if there isn't any.\n if (!details.rawIdxState.messages) {\n const idxMessage: IdxMessages = {\n type: 'array',\n value: [\n {\n message: loc('oform.error.unexpected', 'login'),\n class: 'ERROR',\n i18n: undefined\n }\n ]\n };\n details.rawIdxState.messages = idxMessage;\n details.context.messages = idxMessage;\n }\n\n return idxError;\n}\n\nexport function formatError(error: string | Error | LegacyIdxError | StandardApiError) {\n // If the error is a string, wrap it in an Error object\n if (typeof error === 'string') {\n error = new Error(error);\n }\n\n // special case error handling\n\n // invalid reccovery token\n if (isInvalidRecoveryTokenError(error)) {\n return formatInvalidRecoveryTokenError(error);\n }\n\n // OIE is not enabled\n if (isOIENotEnabledError(error)) {\n return formatOIENotEnabledError(error);\n }\n\n // Other errors from /interact in OAuth format\n if (isOIEConfigurationError(error)) {\n return formatOIEConfigurationError(error);\n }\n\n error = formatIDXError(error);\n return error;\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 Errors from 'util/Errors';\nimport { emailVerifyCallback } from './emailVerifyCallback';\nimport sessionStorageHelper from './sessionStorageHelper';\nimport { CONFIGURED_FLOW } from './constants';\nimport { IdxTransactionMeta, ProceedOptions } from '@okta/okta-auth-js';\n\nconst handleProxyIdxResponse = async (settings) => {\n return Promise.resolve({\n rawIdxState: settings.get('proxyIdxResponse'),\n context: settings.get('proxyIdxResponse'),\n neededToProceed: [],\n });\n};\n\n/* eslint max-depth: [2, 3] */\n// eslint-disable-next-line complexity, max-statements\nexport async function startLoginFlow(settings) {\n const authClient = settings.getAuthClient();\n const idxOptions: ProceedOptions = {\n exchangeCodeForTokens: false, // we handle this in interactionCodeFlow.js\n shouldProceedWithEmailAuthenticator: false, // do not auto-select email authenticator\n };\n\n // Return a preset response\n if (settings.get('proxyIdxResponse')) {\n return handleProxyIdxResponse(settings);\n }\n\n if (settings.get('overrideExistingStateToken')) {\n sessionStorageHelper.removeStateHandle();\n }\n\n if (settings.get('otp')) {\n return emailVerifyCallback(settings);\n }\n\n if (settings.get('useInteractionCodeFlow')) {\n const meta: IdxTransactionMeta = await authClient.idx.getSavedTransactionMeta();\n if (!meta) {\n // no saved transaction\n // if the configured flow is set to `proceed`, the SIW should only continue an existing idx transaction\n // if the SIW loads from a fresh state (there is no current transaction), throw an error\n const flow = authClient.idx.getFlow();\n if (flow && flow === CONFIGURED_FLOW.PROCEED) {\n throw new Errors.ConfiguredFlowError(\n 'Unable to proceed: saved transaction could not be loaded', flow\n );\n }\n // start new transaction\n return authClient.idx.start(idxOptions); // calls interact\n }\n\n // continue saved transaction\n return authClient.idx.proceed(idxOptions); // calls introspect\n }\n\n // Use stateToken from session storage if exists\n // See more details at ./docs/use-session-token-prior-to-settings.png\n const stateHandleFromSession = sessionStorageHelper.getStateHandle();\n if (stateHandleFromSession) {\n try {\n const idxResp = await authClient.idx.start({\n ...idxOptions,\n stateHandle: stateHandleFromSession\n });\n const hasError = idxResp.context?.messages?.value.length > 0;\n if (hasError) {\n throw new Error('saved stateToken is invalid'); // will be caught in this function\n }\n\n // 1. abandon the settings.stateHandle given session.stateHandle is still valid\n settings.set('stateToken', stateHandleFromSession);\n // 2. chain the idxResp to next handler\n return idxResp;\n } catch {\n // 1. remove session.stateHandle\n sessionStorageHelper.removeStateHandle();\n // 2. start the login again in order to introspect on settings.stateHandle\n return startLoginFlow(settings);\n }\n }\n\n // Use stateToken from options\n const stateHandle = settings.get('stateToken');\n if (stateHandle) {\n return authClient.idx.start({\n ...idxOptions,\n stateHandle\n });\n }\n\n throw new Errors.ConfigError('Set \"useInteractionCodeFlow\" to true in configuration to enable the ' +\n 'interaction_code\" flow for self-hosted widget.');\n}\n","/*!\n * Copyright (c) 2020, 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 */\nimport { _, Controller, loc } from 'okta';\nimport ViewFactory from '../view-builder/ViewFactory';\nimport IonResponseHelper from '../ion/IonResponseHelper';\nimport { getV1ClassName } from '../ion/ViewClassNamesFactory';\nimport { FORMS, TERMINAL_FORMS, FORM_NAME_TO_OPERATION_MAP } from '../ion/RemediationConstants';\nimport Util from '../../util/Util';\nimport sessionStorageHelper from '../client/sessionStorageHelper';\nimport { HttpResponse, IdxStatus, IdxOptions, ProceedOptions } from '@okta/okta-auth-js';\nimport { EventErrorContext } from 'types/events';\nimport { CONFIGURED_FLOW } from '../client/constants';\nimport Errors from 'util/Errors';\nexport interface ContextData {\n controller: string;\n formName: string;\n authenticatorKey?: string;\n methodType?: string;\n}\n\nexport interface ErrorContextData {\n xhr: HttpResponse;\n errorSummary?: string;\n}\n\nexport default Controller.extend({\n className: 'form-controller',\n\n appStateEvents: {\n 'change:currentFormName': 'handleFormNameChange',\n 'afterError': 'handleAfterError',\n 'invokeAction': 'handleInvokeAction',\n 'saveForm': 'handleSaveForm',\n 'switchForm': 'handleSwitchForm',\n },\n\n preRender() {\n this.removeChildren();\n },\n\n postRender() {\n const currentViewState = this.options.appState.getCurrentViewState();\n // TODO: add comments regarding when `currentViewState` would be null?\n if (!currentViewState) {\n return;\n }\n\n this.clearMetadata();\n\n let formName = currentViewState.name;\n if (formName === 'identify' && this.options.settings.get('flow') === CONFIGURED_FLOW.RESET_PASSWORD) {\n formName = 'identify-recovery';\n }\n const TheView = ViewFactory.create(\n formName,\n this.options.appState.get('authenticatorKey'),\n );\n try {\n this.formView = this.add(TheView, {\n options: {\n currentViewState,\n }\n }).last();\n } catch (error) {\n // This is the place where runtime error (NPE) happens at most of time.\n // It has been swallowed by Q.js hence add try/catch to surface up errors.\n this.options.settings.callGlobalError(error);\n return;\n }\n\n this.triggerAfterRenderEvent();\n },\n\n clearMetadata() {\n const formName = this.options.appState.get('currentFormName');\n // TODO: OKTA-392835 shall not clear state handle at terminal page\n if (TERMINAL_FORMS.includes(formName)) {\n sessionStorageHelper.removeStateHandle();\n }\n },\n\n triggerAfterRenderEvent() {\n const contextData = this.createAfterEventContext();\n this.trigger('afterRender', contextData);\n },\n\n handleFormNameChange() {\n this.render();\n },\n\n handleAfterError(error: HttpResponse) {\n const contextData = this.createAfterEventContext();\n const errorContextData: EventErrorContext = {\n xhr: error,\n errorSummary: error.responseJSON && error.responseJSON.errorSummary,\n };\n // TODO: need some enhancement after https://github.com/okta/okta-idx-js/pull/27\n // OKTA-318062\n this.trigger('afterError', contextData, errorContextData);\n },\n\n createAfterEventContext(): ContextData {\n const formName = this.options.appState.get('currentFormName');\n const authenticatorKey = this.options.appState.get('authenticatorKey');\n const methodType = this.options.appState.get('authenticatorMethodType');\n const isPasswordRecoveryFlow = this.options.appState.get('isPasswordRecoveryFlow');\n\n const v1ControllerClassName = getV1ClassName(\n formName,\n authenticatorKey,\n methodType,\n isPasswordRecoveryFlow,\n );\n\n const eventData: ContextData = {\n controller: v1ControllerClassName,\n formName,\n };\n\n if (authenticatorKey) {\n eventData.authenticatorKey = authenticatorKey;\n }\n if (methodType) {\n eventData.methodType = methodType;\n }\n\n return eventData;\n },\n\n handleSwitchForm(formName) {\n // trigger formName change to change view\n if (this.options.appState.get('messages')) {\n // Clear messages before calling switch form.\n // If a form has errors sent form API inside messages\n // and user hits back to factors list which triggers switchForm,\n // those error will show up on another screen that gets rendered after switchForm\n this.options.appState.unset('messages');\n }\n this.options.appState.set('currentFormName', formName);\n },\n\n // eslint-disable-next-line max-statements\n handleInvokeAction(actionPath = '', actionParams = {}) {\n const { appState, settings } = this.options;\n const idx = appState.get('idx');\n const { stateHandle } = idx.context;\n let invokeOptions: ProceedOptions = {\n exchangeCodeForTokens: false, // we handle this in interactionCodeFlow.js\n shouldProceedWithEmailAuthenticator: false, // do not auto-select email authenticator\n stateHandle\n };\n let error;\n\n // Cancel action is executes synchronously\n if (actionPath === 'cancel') {\n // TODO: resolve race conditions caused by event pattern: OKTA-490220\n settings.getAuthClient().transactionManager.clear({ clearIdxResponse: false });\n sessionStorageHelper.removeStateHandle();\n appState.clearAppStateCache();\n\n if (settings.get('useInteractionCodeFlow')) {\n // In this case we need to restart login flow and recreate transaction meta\n // that will be used in interactionCodeFlow function\n appState.trigger('restartLoginFlow');\n return;\n }\n }\n\n // Build options to invoke or throw error for invalid action\n if (idx['neededToProceed'].find(item => item.name === actionPath)) {\n invokeOptions = { ...invokeOptions, step: actionPath };\n } else if (_.isFunction(idx['actions'][actionPath])) {\n invokeOptions = {\n ...invokeOptions,\n actions: [{\n name: actionPath,\n params: actionParams\n }]\n };\n } else {\n error = new Errors.ConfigError(`Invalid action selected: ${actionPath}`);\n this.options.settings.callGlobalError(error);\n this.showFormErrors(this.formView.model, error, this.formView.form);\n return;\n }\n\n // action will be executed asynchronously\n this.invokeAction(invokeOptions);\n },\n\n async invokeAction(invokeOptions) {\n const authClient = this.options.settings.getAuthClient();\n let resp;\n let error;\n try {\n resp = await authClient.idx.proceed(invokeOptions);\n if (resp.requestDidSucceed === false) {\n error = resp;\n }\n } catch (e) {\n error = e;\n }\n\n // if request did not succeed, show error on the current form\n if (error) {\n this.showFormErrors(this.formView.model, error, this.formView.form);\n return;\n }\n\n // process response, may render a new form\n this.handleIdxResponse(resp);\n },\n\n // eslint-disable-next-line max-statements, complexity\n async handleSaveForm(model) {\n const formName = model.get('formName');\n\n // Toggle Form saving status (e.g. disabling save button, etc)\n this.toggleFormButtonState(true);\n model.trigger('request');\n\n // Use full page redirection if necessary\n if (model.get('useRedirect')) {\n // Clear when navigates away from SIW page, e.g. success, IdP Authenticator.\n // Because SIW sort of finished its current /transaction/\n sessionStorageHelper.removeStateHandle();\n\n const currentViewState = this.options.appState.getCurrentViewState();\n Util.redirectWithFormGet(currentViewState.href);\n return;\n }\n\n // Run hook: transform the user name (a.k.a identifier)\n const values = this.transformIdentifier(formName, model);\n\n // Error out when this is not a remediation form. Unexpected Exception.\n if (!this.options.appState.hasRemediationObject(formName)) {\n this.options.settings.callGlobalError(`Cannot find http action for \"${formName}\".`);\n this.showFormErrors(this.formView.model, 'Cannot find action to proceed.', this.formView.form);\n return;\n }\n\n // Reset password in identity-first flow needs some help to auto-select password and begin the reset flow\n if (formName === 'identify' && this.options.settings.get('flow') === CONFIGURED_FLOW.RESET_PASSWORD) {\n values.authenticator = 'okta_password';\n }\n\n // Submit request to idx endpoint\n const authClient = this.options.settings.getAuthClient();\n const idxOptions: ProceedOptions = {\n exchangeCodeForTokens: false, // we handle this in interactionCodeFlow.js\n shouldProceedWithEmailAuthenticator: false, // do not auto-select email authenticator\n };\n try {\n const idx = this.options.appState.get('idx');\n const { stateHandle } = idx.context;\n const resp = await authClient.idx.proceed({\n ...idxOptions,\n step: formName,\n stateHandle,\n ...values\n });\n\n if (resp.status === IdxStatus.FAILURE) {\n throw resp.error; // caught and handled in this function\n }\n // If the last request did not succeed, show errors on the current form\n // Special case: 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 // we need to return an idx object so that\n // the SIW can proceed to the next step without showing error\n if (resp.requestDidSucceed === false && !resp.stepUp) {\n this.showFormErrors(model, resp, this.formView.form);\n return;\n }\n const onSuccess = this.handleIdxResponse.bind(this, resp);\n if (formName === FORMS.ENROLL_PROFILE) {\n // call registration (aka enroll profile) hook\n this.settings.postRegistrationSubmit(values?.userProfile?.email, onSuccess, (error) => {\n model.trigger('error', model, {\n responseJSON: error,\n });\n });\n } else {\n onSuccess();\n }\n } catch(error) {\n this.showFormErrors(model, error, this.formView.form);\n } finally {\n this.toggleFormButtonState(false);\n }\n },\n\n transformIdentifier(formName, model) {\n const modelJSON = model.toJSON();\n if (Object.prototype.hasOwnProperty.call(modelJSON, 'identifier')) {\n // The callback function is passed two arguments:\n // 1) username: The name entered by the user\n // 2) operation: The type of operation the user is trying to perform:\n // - PRIMARY_AUTH\n // - FORGOT_PASSWORD\n // - UNLOCK_ACCOUNT\n const operation = FORM_NAME_TO_OPERATION_MAP[formName];\n modelJSON.identifier = this.settings.transformUsername(modelJSON.identifier, operation);\n }\n return modelJSON;\n },\n\n /**\n * @param model current form model\n * @param error any errors after user action\n * @param form current form\n * Handle errors that get displayed right after any user action. After such form errors widget doesn't\n * reload or re-render, but updates the AppSate with latest remediation.\n */\n showFormErrors(model, error, form) {\n /* eslint max-statements: [2, 30] */\n let errorObj;\n let idxStateError;\n let showErrorBanner = true;\n model.trigger('clearFormError');\n\n if (!error) {\n error = 'FormController - unknown error found';\n this.options.settings.callGlobalError(error);\n }\n\n if(error?.rawIdxState) {\n idxStateError = error;\n error = error.rawIdxState;\n }\n\n if (IonResponseHelper.isIonErrorResponse(error)) {\n errorObj = IonResponseHelper.convertFormErrors(error);\n } else if (error.errorSummary) {\n errorObj = { responseJSON: error };\n } else {\n Util.logConsoleError(error);\n errorObj = { responseJSON: { errorSummary: loc('error.unsupported.response', 'login')}};\n }\n\n if(_.isFunction(form?.showCustomFormErrorCallout)) {\n showErrorBanner = !form.showCustomFormErrorCallout(errorObj);\n }\n\n // show error before updating app state.\n model.trigger('error', model, errorObj, showErrorBanner);\n idxStateError = Object.assign({}, idxStateError, {hasFormError: true});\n\n // TODO OKTA-408410: Widget should update the state on every new response. It should NOT do selective update.\n // For eg 429 rate-limit errors, we have to skip updating idx state, because error response is not an idx response.\n if (Array.isArray(idxStateError?.neededToProceed) && idxStateError?.neededToProceed.length) {\n this.handleIdxResponse(idxStateError);\n }\n\n // 'idx.session.expired' requires special handling, otherwise the widget can lock up into an unrecoverable state\n if (IonResponseHelper.isIdxSessionExpiredError(idxStateError)) {\n const authClient = this.settings.getAuthClient();\n authClient.transactionManager.clear();\n }\n },\n\n handleIdxResponse: function(idxResp) {\n this.options.appState.trigger('updateAppState', idxResp);\n },\n\n /**\n * SignIn widget has its own (hacky) way to customize the button disabled state:\n * adding `link-button-disabled` despite the name was intend only to disable\n * `link-button`.\n * Instead of doing decent refactor, we want to follow the convention for now.\n *\n * @param {boolean} disabled whether add extra disable CSS class.\n */\n toggleFormButtonState: function(disabled) {\n const button = this.$el.find('.o-form-button-bar .button');\n button.toggleClass('link-button-disabled', disabled);\n },\n});\n","import { _ } from 'okta';\n\ndeclare module 'okta' {\n interface OktaUnderscore {\n nestedOmit(obj: Record, names): Record\n }\n}\n\n_.mixin({\n nestedOmit: function(obj, names) {\n let result = _.omit(obj, names);\n\n if (names.includes(result.name)) {\n result = _.omit(result, 'value');\n }\n\n _.each(result, function(val, key) {\n if (Array.isArray(val)) {\n result[key] = val.map((v) => {\n return _.nestedOmit(v, names);\n });\n } else if (typeof val === 'object') {\n result[key] = _.nestedOmit(val, names);\n }\n });\n return result;\n },\n});\n\nexport { _ };\n","/*!\n * Copyright (c) 2020, 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 { Model, ModelProperty } from 'okta';\nimport Logger from 'util/Logger';\nimport {\n FORMS_WITHOUT_SIGNOUT,\n FORMS_WITH_STATIC_BACK_LINK,\n FORMS_FOR_VERIFICATION,\n AUTHENTICATOR_KEY,\n} from '../ion/RemediationConstants';\nimport { createOVOptions } from '../ion/ui-schema/ion-object-handler';\nimport { _ } from '../mixins/mixins';\nimport { executeHooksBefore, executeHooksAfter } from 'util/Hooks';\n\n/**\n * Keep track of stateMachine with this special model. Similar to `src/models/AppState.js`\n */\n\nconst local: Record = {\n user: 'object', // optional\n currentFormName: 'string',\n idx: 'object',\n remediations: 'array',\n dynamicRefreshInterval: 'number',\n deviceFingerprint: 'string',\n hooks: 'object' // instance of models/Hooks\n};\n\nconst derived: Record = {\n authenticatorProfile: {\n deps: ['currentAuthenticator', 'currentAuthenticatorEnrollment'],\n fn(currentAuthenticator = { profile: undefined }, currentAuthenticatorEnrollment = { profile: undefined }) {\n return currentAuthenticator.profile\n || currentAuthenticatorEnrollment.profile\n || {};\n },\n },\n authenticatorKey: {\n deps: ['currentAuthenticator', 'currentAuthenticatorEnrollment'],\n fn(currentAuthenticator = { key: undefined }, currentAuthenticatorEnrollment = { key: undefined }) {\n return currentAuthenticator.key\n || currentAuthenticatorEnrollment.key\n || '';\n },\n },\n authenticatorMethodType: {\n deps: ['currentAuthenticator', 'currentAuthenticatorEnrollment'],\n fn(currentAuthenticator = { methods: undefined }, currentAuthenticatorEnrollment = { methods: undefined }) {\n return currentAuthenticator.methods && currentAuthenticator.methods[0].type\n || currentAuthenticatorEnrollment.methods && currentAuthenticatorEnrollment.methods[0].type\n || '';\n },\n },\n isPasswordRecovery: {\n deps: ['recoveryAuthenticator'],\n fn: function(recoveryAuthenticator = { type: undefined }) {\n return recoveryAuthenticator?.type === 'password';\n }\n }\n};\n\nexport type AppStateProps = typeof local & typeof derived;\n\nexport default class AppState extends Model {\n\n get>(attributeName: A): any {\n return Model.prototype.get.call(this, attributeName);\n }\n\n preinitialize(...args) {\n this.local = local;\n this.derived = derived;\n Model.prototype.preinitialize.apply(this, args);\n }\n\n isIdentifierOnlyView() {\n return !this.get('remediations')?.find(({ name }) => name === 'identify')\n ?.uiSchema?.find(({ name }) => name === 'credentials.passcode');\n }\n\n hasRemediationObject(formName) {\n return this.get('idx').neededToProceed.find((remediation) => remediation.name === formName);\n }\n\n hasActionObject(actionName) {\n return !!this.get('idx')?.actions?.[actionName];\n }\n\n getRemediationAuthenticationOptions(formName) {\n const form = this.hasRemediationObject(formName);\n if (!form) {\n return [];\n }\n const authenticator = form.value.find((value) => value.name === 'authenticator');\n let authenticatorOptions = authenticator?.options || [];\n // OV is a special case, so process OV options\n authenticatorOptions = [...authenticatorOptions]; //clone it since we are changing it for OV\n createOVOptions(authenticatorOptions);\n return authenticatorOptions;\n }\n\n getActionByPath(actionPath) {\n const paths = actionPath.split('.');\n let targetObject;\n if (paths.length === 1) {\n targetObject = this.get('idx').actions;\n } else {\n targetObject = this.get(paths.shift());\n }\n // Limitation\n // At the time of writting, action only lives in first level of state objects.\n const actionName = paths.shift();\n if (targetObject && _.isFunction(targetObject[actionName])) {\n return targetObject[actionName];\n } else {\n return null;\n }\n }\n\n getCurrentViewState() {\n const currentFormName = this.get('currentFormName');\n\n if (!currentFormName) {\n return;\n }\n\n // didn't expect `remediations` is empty. See `setIonResponse`.\n const currentViewState = this.get('remediations').filter(r => r.name === currentFormName)[0];\n\n if (!currentViewState) {\n Logger.error('Panic!!');\n Logger.error(`\\tCannot find view state for form ${currentFormName}.`);\n const allFormNames = this.get('remediations').map(r => r.name);\n Logger.error(`\\tAll available form names: ${allFormNames}`);\n }\n\n return currentViewState;\n }\n\n /**\n * Returns ui schema of the form field from current view state\n * @param {string} fieldName\n * @returns {}\n */\n getSchemaByName(fieldName) {\n const currentViewState = this.getCurrentViewState();\n if(currentViewState) {\n const uiSchema = currentViewState.uiSchema;\n return uiSchema.find(({ name }) => name === fieldName);\n }\n }\n\n /**\n * Returns the displayName of the authenticator\n * @returns {string}\n */\n getAuthenticatorDisplayName() {\n const currentAuthenticator = this.get('currentAuthenticator') || {};\n const currentAuthenticatorEnrollment = this.get('currentAuthenticatorEnrollment') || {};\n\n // For enrollment and certain verification flows, the currentAuthenticator object will be present.\n // If not, we're likely in a traditional verify/challenge flow.\n return currentAuthenticator.displayName || currentAuthenticatorEnrollment.displayName;\n }\n\n /**\n * Checks to see if we're in an authenticator challenge flow.\n * @returns {boolean}\n */\n isAuthenticatorChallenge() {\n const currentFormName = this.get('currentFormName');\n return FORMS_FOR_VERIFICATION.includes(currentFormName);\n }\n\n shouldReRenderView(transformedResponse) {\n if (transformedResponse?.idx?.hasFormError) {\n return false;\n }\n\n const previousRawState = this.has('idx') ? this.get('idx').rawIdxState : null;\n\n const identicalResponse = _.isEqual(\n _.nestedOmit(transformedResponse.idx.rawIdxState, ['expiresAt', 'refresh', 'stateHandle', 'headers']),\n _.nestedOmit(previousRawState, ['expiresAt', 'refresh', 'stateHandle', 'headers']));\n\n if (identicalResponse) {\n this.set('dynamicRefreshInterval', this.getRefreshInterval(transformedResponse));\n }\n\n return this._isReRenderRequired(identicalResponse, transformedResponse, previousRawState);\n }\n\n getRefreshInterval(transformedResponse) {\n // Only polling refresh interval has changed in the response,\n // make sure to update the correct poll view's refresh value\n const currentFormName = this.get('currentFormName');\n const currentViewState = transformedResponse.remediations.filter(r => r.name === currentFormName)[0];\n // Get new refresh interval for either: remediations, authenticator, or authenticator enrollment\n return currentViewState.refresh ||\n transformedResponse.currentAuthenticatorEnrollment?.poll?.refresh ||\n transformedResponse.currentAuthenticator?.poll?.refresh;\n }\n\n // Sign Out link will be displayed in the footer of a form, unless:\n // - widget configuration set hideSignOutLinkInMFA or mfaOnlyFlow to true\n // - cancel remediation form is not present in the response\n // - form is part of our list FORMS_WITHOUT_SIGNOUT\n shouldShowSignOutLinkInCurrentForm(hideSignOutLinkInMFA) {\n const idxActions = this.get('idx') && this.get('idx').actions;\n const currentFormName = this.get('currentFormName');\n\n return !hideSignOutLinkInMFA\n && _.isFunction(idxActions?.cancel)\n && !FORMS_WITHOUT_SIGNOUT.includes(currentFormName);\n }\n\n containsMessageWithI18nKey(keys) {\n if (!Array.isArray(keys)) {\n keys = [keys];\n }\n const messagesObjs = this.get('messages');\n return messagesObjs && Array.isArray(messagesObjs.value)\n && messagesObjs.value.some(messagesObj => _.contains(keys, messagesObj.i18n?.key));\n }\n\n containsMessageStartingWithI18nKey(keySubStr) {\n const messagesObjs = this.get('messages');\n return messagesObjs && Array.isArray(messagesObjs.value)\n && messagesObjs.value.some(messagesObj => messagesObj.i18n?.key.startsWith(keySubStr));\n }\n\n clearAppStateCache() {\n // clear appState before setting new values\n const attrs = {};\n for (const key in this.attributes) {\n if (key !== 'currentFormName') {\n attrs[key] = void 0;\n }\n }\n this.set(attrs, Object.assign({}, { unset: true, silent: true }));\n // clear cache for derived props.\n this.trigger('cache:clear');\n }\n\n async setIonResponse(transformedResponse, hooks) {\n const doRerender = this.shouldReRenderView(transformedResponse);\n this.clearAppStateCache();\n // set new app state properties\n this.set(transformedResponse);\n\n if (doRerender) {\n // `currentFormName` is default to first form of remediations or nothing.\n let currentFormName = null;\n if (!_.isEmpty(transformedResponse.remediations)) {\n currentFormName = transformedResponse.remediations[0].name;\n } else {\n Logger.error('Panic!!');\n Logger.error('\\tNo remediation found.');\n Logger.error('\\tHere is the entire response');\n Logger.error(JSON.stringify(transformedResponse, null, 2));\n }\n\n const hook = hooks?.getHook(currentFormName); // may be undefined\n await executeHooksBefore(hook);\n \n this.unset('currentFormName', { silent: true });\n // make sure change `currentFormName` is last step.\n // change `currentFormName` will re-render FormController,\n // which may depend on other derived properties hence\n // those derived properties must be re-computed before\n // re-rendering controller.\n this.set({ currentFormName });\n\n await executeHooksAfter(hook);\n }\n }\n\n getUser() {\n return this.get('user');\n }\n\n _isReRenderRequired(identicalResponse, transformedResponse, previousRawState) {\n let reRender = true;\n\n const isPreviousStateError = this.get('idx')?.hasFormError;\n if (isPreviousStateError && this._isChallengeAuthenticatorPoll(transformedResponse, previousRawState)) {\n reRender = false;\n }\n\n if (identicalResponse) {\n /**\n * returns false: When new response is same as last.\n * usually happens during polling when pipeline doesn't proceed to next step.\n * expiresAt will be different for each response, hence compare objects without that property\n */\n reRender = false;\n }\n\n if (identicalResponse && this.get('currentFormName') === 'poll') {\n /**\n * returns true: We want to force reRender when currentForm is poll because request has to reinitiate\n * based on new refresh and UI has to reflect new timer.\n * We dont technical poll here we just make a request after the specified refresh time each time\n * we get a new response.\n */\n reRender = true;\n }\n\n if (identicalResponse && FORMS_WITH_STATIC_BACK_LINK.includes(this.get('currentFormName'))) {\n /**\n * returns true: We want to force reRender if you go back to selection screen from challenge or enroll screen\n * and re-select the same authenticator for challenge. In this case also new response will be identical\n * to the old response.\n */\n reRender = true;\n }\n return reRender;\n }\n\n /**\n * This is to account for the edge case introduced by this issue: OKTA-419210. With the current idx remediations,\n * there's no good way to generalize this as the backend handles the authenticators for phone, sms and \n * email differently. Although not ideal, we have to keep this check in for now until we find a better solution.\n */\n _isChallengeAuthenticatorPoll(transformedResponse, previousRawState) {\n const isSameExceptMessages = _.isEqual(\n _.nestedOmit(transformedResponse.idx.rawIdxState, ['expiresAt', 'refresh', 'stateHandle', 'headers']),\n _.nestedOmit(previousRawState, ['expiresAt', 'refresh', 'stateHandle', 'messages', 'headers']));\n\n const isChallengeAuthenticator = this.get('currentFormName') === 'challenge-authenticator';\n const isCurrentAuthenticatorEmail = this.get('currentAuthenticatorEnrollment')?.key === AUTHENTICATOR_KEY.EMAIL;\n\n return isSameExceptMessages && isChallengeAuthenticator && isCurrentAuthenticatorEmail;\n }\n}\n","import Logger from 'util/Logger';\nimport { AUTHENTICATOR_KEY, FORMS as RemediationForms } from '../ion/RemediationConstants';\nimport { BaseView } from './internals';\n\n// Identify\nimport IdentifierView from './views/IdentifierView';\nimport RedirectIdPView from './views/RedirectIdPView';\nimport IdentifyRecoveryView from './views/IdentifyRecoveryView';\n\n// Terminal & Auto-Redirect\nimport TerminalView from './views/TerminalView';\nimport AutoRedirectView from './views/AutoRedirectView';\n\n// safe mode poll view\nimport PollView from './views/PollView';\n\n// consent\nimport AdminConsentView from './views/consent/AdminConsentView';\nimport EnduserConsentView from './views/consent/EnduserConsentView';\nimport EnduserEmailConsentView from './views/consent/EnduserEmailConsentView';\n\n// Device (Okta Verify)\nimport DeviceChallengePollView from './views/device/DeviceChallengePollView';\nimport SSOExtensionView from './views/device/SSOExtensionView';\nimport SignInDeviceView from './views/device/SignInDeviceView';\nimport DeviceEnrollmentTerminalView from './views/device/DeviceEnrollmentTerminalView';\n\n// registration\nimport EnrollProfileView from './views/EnrollProfileView';\n\n// registration update\nimport EnrollProfileUpdateView from './views/EnrollProfileUpdateView';\n\n// Email Activation\nimport RequestActivationEmail from './views/activation/RequestActivationEmailView';\n\n// authenticator list\nimport SelectAuthenticatorEnrollView from './views/SelectAuthenticatorEnrollView';\nimport SelectAuthenticatorVerifyView from './views/SelectAuthenticatorVerifyView';\nimport SelectAuthenticatorUnlockAccountView from './views/authenticator/SelectAuthenticatorUnlockAccountView';\n\n// password\nimport EnrollAuthenticatorPasswordView from './views/password/EnrollAuthenticatorPasswordView';\nimport ChallengeAuthenticatorPasswordView from './views/password/ChallengeAuthenticatorPasswordView';\nimport ReEnrollAuthenticatorPasswordView from './views/password/ReEnrollAuthenticatorPasswordView';\nimport ReEnrollAuthenticatorWarningPasswordView from './views/password/ReEnrollAuthenticatorWarningPasswordView';\nimport ResetAuthenticatorPasswordView from './views/password/ResetAuthenticatorPasswordView';\n\n// phone\nimport EnrollAuthenticatorPhoneView from './views/phone/EnrollAuthenticatorPhoneView';\nimport EnrollAuthenticatorDataPhoneView from './views/phone/EnrollAuthenticatorDataPhoneView';\nimport ChallengeAuthenticatorPhoneView from './views/phone/ChallengeAuthenticatorPhoneView';\nimport ChallengeAuthenticatorDataPhoneView from './views/phone/ChallengeAuthenticatorDataPhoneView';\n\n// security question\nimport EnrollAuthenticatorSecurityQuestion from './views/security-question/EnrollAuthenticatorSecurityQuestionView';\nimport ChallengeAuthenticatorSecurityQuestion from './views/security-question/ChallengeAuthenticatorSecurityQuestion';\n\n//webauthn\nimport EnrollWebauthnView from './views/webauthn/EnrollWebauthnView';\nimport ChallengeWebauthnView from './views/webauthn/ChallengeWebauthnView';\n\n// email\nimport EnrollAuthenticatorEmailView from './views/email/EnrollAuthenticatorEmailView';\nimport ChallengeAuthenticatorEmailView from './views/email/ChallengeAuthenticatorEmailView';\nimport ChallengeAuthenticatorDataEmailView from './views/email/ChallengeAuthenticatorDataEmailView';\n\n// app (okta verify)\nimport EnrollPollOktaVerifyView from './views/ov/EnrollPollOktaVerifyView';\nimport SelectEnrollmentChannelOktaVerifyView from './views/ov/SelectEnrollmentChannelOktaVerifyView';\nimport EnrollementChannelDataOktaVerifyView from './views/ov/EnrollementChannelDataOktaVerifyView';\nimport ChallengeOktaVerifyView from './views/ov/ChallengeOktaVerifyView';\nimport ChallengeOktaVerifyTotpView from './views/ov/ChallengeOktaVerifyTotpView';\nimport ChallengeOktaVerifyResendPushView from './views/ov/ChallengeOktaVerifyResendPushView';\nimport ChallengeAuthenticatorDataOktaVerifyView from './views/ov/ChallengeAuthenticatorDataOktaVerifyView';\nimport ChallengeOktaVerifySSOExtensionView from './views/ov/ChallengeOktaVerifySSOExtensionView';\n\n// app (google authenticator)\nimport EnrollAuthenticatorGoogleAuthenticatorView\n from './views/google-authenticator/EnrollAuthenticatorGoogleAuthenticatorView';\nimport ChallengeGoogleAuthenticatorView from './views/google-authenticator/ChallengeGoogleAuthenticatorView';\n\n// on-prem mfa\nimport EnrollAuthenticatorOnPremView from './views/on-prem/EnrollAuthenticatorOnPremView';\nimport ChallengeAuthenticatorOnPremView from './views/on-prem/ChallengeAuthenticatorOnPremView';\n\n// duo mfa\nimport EnrollDuoAuthenticatorView from './views/duo/EnrollDuoAuthenticatorView';\nimport ChallengeDuoAuthenticatorView from './views/duo/ChallengeDuoAuthenticatorView';\n\n// idp authenticator\nimport AuthenticatorIdPVerifyView from './views/idp/AuthenticatorIdPVerifyView';\nimport AuthenticatorIdPEnrollView from './views/idp/AuthenticatorIdPEnrollView';\n\n// custom otp\nimport ChallengeCustomOTPAuthenticatorView from './views/custom-otp/ChallengeCustomOTPAuthenticatorView';\n\n// Symantec VIP authenticator\nimport AuthenticatorSymantecView from './views/symantec/AuthenticatorSymantecView';\n\n// Device code activate view\nimport DeviceCodeActivateView from './views/device/DeviceCodeActivateView';\n\n// X509 PIV view\nimport ChallengePIVView from './views/piv/ChallengePIVView';\n\n// YubiKey\nimport AuthenticatorYubiKeyView from './views/yubikey/AuthenticatorYubiKeyView';\n\n// custom app\nimport ChallengePushView from './views/shared/ChallengePushView';\nimport ChallengeCustomAppResendPushView from './views/custom-app/ChallengeCustomAppResendPushView'; \n\nconst DEFAULT = '_';\n\nconst VIEWS_MAPPING = {\n [RemediationForms.IDENTIFY]: {\n [DEFAULT]: IdentifierView,\n },\n [RemediationForms.IDENTIFY_RECOVERY]: {\n [DEFAULT]: IdentifyRecoveryView,\n },\n [RemediationForms.DEVICE_CHALLENGE_POLL]: {\n [DEFAULT]: DeviceChallengePollView,\n },\n [RemediationForms.LAUNCH_AUTHENTICATOR]: {\n [DEFAULT]: SignInDeviceView,\n },\n [RemediationForms.DEVICE_APPLE_SSO_EXTENSION]: {\n [DEFAULT]: SSOExtensionView,\n [AUTHENTICATOR_KEY.OV]: ChallengeOktaVerifySSOExtensionView,\n },\n [RemediationForms.CANCEL_TRANSACTION]: {\n [DEFAULT]: SSOExtensionView,\n },\n [RemediationForms.ENROLL_PROFILE]: {\n [DEFAULT]: EnrollProfileView,\n },\n [RemediationForms.ENROLL_PROFILE_UPDATE]: {\n [DEFAULT]: EnrollProfileUpdateView,\n },\n [RemediationForms.POLL]: {\n [DEFAULT]: PollView\n },\n [RemediationForms.REQUEST_ACTIVATION]: {\n [DEFAULT]: RequestActivationEmail\n },\n [RemediationForms.SELECT_AUTHENTICATOR_ENROLL]: {\n [DEFAULT]: SelectAuthenticatorEnrollView,\n },\n [RemediationForms.AUTHENTICATOR_ENROLLMENT_DATA]: {\n [AUTHENTICATOR_KEY.PHONE]: EnrollAuthenticatorDataPhoneView,\n },\n [RemediationForms.CONSENT_ADMIN]: {\n [DEFAULT]: AdminConsentView\n },\n [RemediationForms.CONSENT_ENDUSER]: {\n [DEFAULT]: EnduserConsentView\n },\n [RemediationForms.CONSENT_EMAIL_CHALLENGE]: {\n [DEFAULT]: EnduserEmailConsentView,\n },\n [RemediationForms.ENROLL_AUTHENTICATOR]: {\n [AUTHENTICATOR_KEY.DUO]: EnrollDuoAuthenticatorView,\n [AUTHENTICATOR_KEY.EMAIL]: EnrollAuthenticatorEmailView,\n [AUTHENTICATOR_KEY.GOOGLE_OTP]: EnrollAuthenticatorGoogleAuthenticatorView,\n [AUTHENTICATOR_KEY.IDP]: AuthenticatorIdPEnrollView,\n [AUTHENTICATOR_KEY.ON_PREM]: EnrollAuthenticatorOnPremView,\n [AUTHENTICATOR_KEY.PASSWORD]: EnrollAuthenticatorPasswordView,\n [AUTHENTICATOR_KEY.PHONE]: EnrollAuthenticatorPhoneView,\n [AUTHENTICATOR_KEY.RSA]: EnrollAuthenticatorOnPremView,\n [AUTHENTICATOR_KEY.SECURITY_QUESTION]: EnrollAuthenticatorSecurityQuestion,\n [AUTHENTICATOR_KEY.SYMANTEC_VIP]: AuthenticatorSymantecView,\n [AUTHENTICATOR_KEY.WEBAUTHN]: EnrollWebauthnView,\n [AUTHENTICATOR_KEY.YUBIKEY]: AuthenticatorYubiKeyView,\n },\n [RemediationForms.CHALLENGE_AUTHENTICATOR]: {\n [AUTHENTICATOR_KEY.CUSTOM_OTP]: ChallengeCustomOTPAuthenticatorView,\n [AUTHENTICATOR_KEY.DUO]: ChallengeDuoAuthenticatorView,\n [AUTHENTICATOR_KEY.EMAIL]: ChallengeAuthenticatorEmailView,\n [AUTHENTICATOR_KEY.GOOGLE_OTP]: ChallengeGoogleAuthenticatorView,\n [AUTHENTICATOR_KEY.IDP]: AuthenticatorIdPVerifyView,\n [AUTHENTICATOR_KEY.ON_PREM]: ChallengeAuthenticatorOnPremView,\n [AUTHENTICATOR_KEY.OV]: ChallengeOktaVerifyTotpView,\n [AUTHENTICATOR_KEY.PASSWORD]: ChallengeAuthenticatorPasswordView,\n [AUTHENTICATOR_KEY.PHONE]: ChallengeAuthenticatorPhoneView,\n [AUTHENTICATOR_KEY.RSA]: ChallengeAuthenticatorOnPremView,\n [AUTHENTICATOR_KEY.SECURITY_QUESTION]: ChallengeAuthenticatorSecurityQuestion,\n [AUTHENTICATOR_KEY.SYMANTEC_VIP]: AuthenticatorSymantecView,\n [AUTHENTICATOR_KEY.WEBAUTHN]: ChallengeWebauthnView,\n [AUTHENTICATOR_KEY.YUBIKEY]: AuthenticatorYubiKeyView,\n },\n [RemediationForms.ENROLL_POLL]: {\n [AUTHENTICATOR_KEY.OV]: EnrollPollOktaVerifyView,\n },\n [RemediationForms.SELECT_ENROLLMENT_CHANNEL]: {\n [AUTHENTICATOR_KEY.OV]: SelectEnrollmentChannelOktaVerifyView,\n },\n [RemediationForms.ENROLLMENT_CHANNEL_DATA]: {\n [AUTHENTICATOR_KEY.OV]: EnrollementChannelDataOktaVerifyView,\n },\n // Expired scenarios for authenticators..\n [RemediationForms.REENROLL_AUTHENTICATOR]: {\n // Password expired scenario..\n [AUTHENTICATOR_KEY.PASSWORD]: ReEnrollAuthenticatorPasswordView,\n },\n // Will expire soon warnings for authenticators..\n [RemediationForms.REENROLL_AUTHENTICATOR_WARNING]: {\n // Password will expire soon scenario..\n [AUTHENTICATOR_KEY.PASSWORD]: ReEnrollAuthenticatorWarningPasswordView,\n },\n // Reset forms for authenticators..\n [RemediationForms.RESET_AUTHENTICATOR]: {\n // Admin driven password reset..\n [AUTHENTICATOR_KEY.PASSWORD]: ResetAuthenticatorPasswordView,\n },\n [RemediationForms.SELECT_AUTHENTICATOR_AUTHENTICATE]: {\n [DEFAULT]: SelectAuthenticatorVerifyView,\n },\n [RemediationForms.SELECT_AUTHENTICATOR_UNLOCK]: {\n [DEFAULT]: SelectAuthenticatorUnlockAccountView,\n },\n [RemediationForms.CHALLENGE_POLL]: {\n [AUTHENTICATOR_KEY.OV]: ChallengeOktaVerifyView,\n [AUTHENTICATOR_KEY.CUSTOM_APP]: ChallengePushView,\n },\n [RemediationForms.RESEND]: {\n [AUTHENTICATOR_KEY.OV]: ChallengeOktaVerifyResendPushView,\n [AUTHENTICATOR_KEY.CUSTOM_APP]: ChallengeCustomAppResendPushView,\n },\n [RemediationForms.AUTHENTICATOR_VERIFICATION_DATA]: {\n [AUTHENTICATOR_KEY.PHONE]: ChallengeAuthenticatorDataPhoneView,\n [AUTHENTICATOR_KEY.OV]: ChallengeAuthenticatorDataOktaVerifyView,\n [AUTHENTICATOR_KEY.EMAIL]: ChallengeAuthenticatorDataEmailView,\n },\n [RemediationForms.FAILURE_REDIRECT]: {\n [DEFAULT]: AutoRedirectView,\n },\n [RemediationForms.SUCCESS_REDIRECT]: {\n [DEFAULT]: AutoRedirectView,\n },\n [RemediationForms.REDIRECT_IDP]: {\n [DEFAULT]: RedirectIdPView,\n },\n [RemediationForms.PIV_IDP]: {\n [DEFAULT]: ChallengePIVView,\n },\n [RemediationForms.DEVICE_ENROLLMENT_TERMINAL]: {\n [DEFAULT]: DeviceEnrollmentTerminalView,\n },\n [RemediationForms.USER_CODE] : {\n [DEFAULT] : DeviceCodeActivateView\n },\n [RemediationForms.TERMINAL]: {\n [DEFAULT]: TerminalView,\n },\n};\n\nexport default {\n create(formName, authenticatorKey = DEFAULT) {\n const config = VIEWS_MAPPING[formName];\n if (!config) {\n Logger.warn(`Cannot find customized View for ${formName}.`);\n return BaseView;\n }\n const View = config[authenticatorKey] || config[DEFAULT];\n if (!View) {\n Logger.warn(`Cannot find customized View for ${formName} + ${authenticatorKey}.`);\n return BaseView;\n }\n\n return View;\n }\n};\n","import hbs from 'handlebars-inline-precompile';\n\nimport { _, Form, loc, internal, createCallout, View } from 'okta';\nimport * as FormInputFactory from './FormInputFactory';\n\nconst { FormUtil } = internal.views.forms.helpers;\nconst INFO_MESSAGE_CLASS = 'INFO';\n\nexport default Form.extend({\n\n layout: 'o-form-theme',\n className: 'ion-form',\n hasSavingState: true,\n autoSave: false,\n noCancelButton: true,\n\n title() {\n return loc('oform.title.authenticate', 'login');\n },\n\n save() {\n return loc('oform.next', 'login');\n },\n\n modelEvents: {\n 'clearFormError': 'handleClearFormError',\n 'error': 'triggerAfterError',\n },\n\n initialize() {\n const uiSchemas = this.getUISchema();\n const inputOptions = uiSchemas.map(FormInputFactory.create);\n\n //should be used before adding any other input components\n this.showMessages();\n\n // Render CAPTCHA if one of the form fields requires us to.\n this.listenTo(this.options.appState, 'onCaptchaLoaded', (captchaObject) => {\n this.captchaObject = captchaObject;\n });\n\n inputOptions.forEach(input => {\n this.addInputOrView(input);\n });\n\n this.listenTo(this, 'save', this.saveForm);\n this.listenTo(this, 'cancel', this.cancelForm);\n },\n\n focus(...args) {\n if (this.settings.get('features.autoFocus')) {\n Form.prototype.focus.apply(this, args);\n }\n },\n\n handleClearFormError() {\n const formErrorContainer = this.$('.o-form-error-container');\n formErrorContainer.empty();\n if (formErrorContainer.hasClass('o-form-has-errors')) {\n this.clearErrors();\n }\n },\n\n triggerAfterError(model, error) {\n this.options.appState.trigger('afterError', error);\n },\n\n saveForm(model) {\n //remove any existing warnings or messages before saving form\n this.$el.find('.o-form-error-container').empty();\n\n // Execute Captcha if enabled for this form.\n if (this.captchaObject) {\n this.captchaObject.execute();\n } else {\n this.options.appState.trigger('saveForm', model);\n }\n },\n\n postRender() {\n /**\n * Widget would use infoContainer to display interactive messages that should be persisted during\n * invalid form submissions. For eg resend-warning callout should not be cleared upon invalid form submit.\n * Rerender would clear infoContainer or views classes can clear it explicitly.\n */\n const infoContainer= '
      ';\n this.$el.find('.o-form-error-container').before(infoContainer);\n\n this.addIdentifier();\n },\n\n /**\n * Render user identifier below title, or if no title, render below message.\n */\n addIdentifier() {\n const { identifier } = this.options.appState.get('user') || {};\n if (!identifier) {\n return;\n } else if (!this.settings.get('features.showIdentifier')) {\n return;\n }\n\n const header = this.$el.find('[data-se=\"o-form-head\"]');\n const identifierHTMLString = hbs('
      \\\n {{identifier}}\\\n
      ')({identifier});\n\n if (header.length) {\n header.after(identifierHTMLString);\n } else {\n this.$el.find('.o-form-error-container').after(identifierHTMLString);\n }\n },\n\n cancelForm() {\n this.options.appState.trigger('invokeAction', 'cancel');\n },\n\n getUISchema() {\n if (Array.isArray(this.options.currentViewState.uiSchema)) {\n return this.options.currentViewState.uiSchema;\n } else {\n return [];\n }\n },\n\n addInputOrView(input) {\n if (input.visible === false || input.mutable === false) {\n return;\n }\n if (input.View) {\n this.add(input.View, _.omit(input, 'View', 'showWhen'));\n if (input.showWhen) {\n FormUtil.applyShowWhen(this.last(), input.showWhen);\n }\n } else {\n this.addInput(input);\n }\n\n if (Array.isArray(input.optionsUiSchemas)) {\n if (this.options.optionUiSchemaConfig[input.name]) {\n const optionUiSchemaIndex = Number(this.options.optionUiSchemaConfig[input.name]);\n const optionUiSchemas = input.optionsUiSchemas[optionUiSchemaIndex] || [];\n optionUiSchemas.forEach(this.addInputOrView.bind(this));\n }\n }\n },\n\n /*\n * Views should override this function to render custom error callouts for invalid form actions.\n * Should return true when callout is customized\n */\n showCustomFormErrorCallout: null,\n\n /*\n * Renders the contents of messages object (if any, on error) during initialize\n * This function is called during Form.initialize, and will display\n * messages when the form reloads.\n * Note: Any user action related form errors handled by FormController.showFormErrors\n */\n showMessages(options) {\n const messages = this.options.appState.get('messages') || {};\n const errContainer = '.o-form-error-container';\n if (Array.isArray(messages.value) && !(options instanceof View)) {\n this.add('
      ', errContainer);\n messages.value.forEach(obj => {\n if(!obj?.class || obj.class === INFO_MESSAGE_CLASS) {\n // add message as plain text\n this.add(`

      ${obj.message}

      `, '.ion-messages-container');\n } else {\n const errorObj = {\n class: obj?.class ?? '',\n message: obj?.message,\n title: '',\n ...options\n };\n this.add(createCallout({\n content: errorObj.message,\n type: errorObj.class.toLowerCase(),\n title: errorObj.title\n }), errContainer);\n options = null; // prevent repeating first error message\n }\n });\n } else if (options instanceof View) {\n // if callee is showCustomFormErrorCallout. show custom error views\n this.add(options, errContainer);\n }\n },\n});","import { Collection, _, loc, createButton, ButtonOptions } from 'okta';\n\nimport AuthenticatorEnrollOptions from '../components/AuthenticatorEnrollOptions';\nimport AuthenticatorVerifyOptions from '../components/AuthenticatorVerifyOptions';\nimport { getAuthenticatorDataForEnroll, getAuthenticatorDataForVerification } from '../utils/AuthenticatorUtil';\nimport { AUTHENTICATOR_KEY, FORMS as RemediationForms } from '../../ion/RemediationConstants';\nimport IDP from '../../../util/IDP';\nimport AdminScopeList from '../../../views/admin-consent/ScopeList';\nimport EnduserScopeList from '../../../views/consent/ScopeList';\nimport CaptchaView from '../views/captcha/CaptchaView';\n\n// TODO: remove ambient declaration patch after courage type has been updated: OKTA-488758\ndeclare module 'okta' {\n interface ButtonOptions {\n attributes?: Record | undefined;\n className?: string | undefined;\n }\n}\n\nconst isTextOverflowing = (text, maxWidth) => {\n // Create a temporary element and attach it to the document so we can compare the client width to the \n // max width allowed.\n const elem = document.createElement('div');\n elem.style.position = 'absolute';\n elem.style.left = '-9999px';\n elem.style.whiteSpace = 'nowrap';\n elem.innerHTML = text;\n\n document.body.appendChild(elem);\n const result = elem.clientWidth;\n document.body.removeChild(elem);\n\n return result > maxWidth;\n};\n\nconst createAuthenticatorEnrollSelectView = (opt) => {\n const optionItems = (opt.options || [])\n .map(opt => {\n return Object.assign({}, opt, getAuthenticatorDataForEnroll(opt));\n });\n return {\n View: AuthenticatorEnrollOptions,\n options: {\n name: opt.name,\n collection: new Collection(optionItems),\n }\n };\n};\n\nconst createAuthenticatorVerifySelectView = (opt) => {\n let optionItems = (opt.options || []);\n // If webauthn enrollments > 1 just show one entry with a generic namne (first) so user doesnt have to select which\n // one to pick. eg) If there is yubikey5 and another unknown u2f key, user cannot identify that easily. We need to\n // do this at least until users can give authenticator enrollments custom names.\n let hasSecurityKey = false;\n optionItems = optionItems.filter(opt => {\n if (opt.authenticatorKey === AUTHENTICATOR_KEY.WEBAUTHN) {\n if (!hasSecurityKey) {\n hasSecurityKey = true;\n return true;\n } else {\n return false;\n }\n }\n return true;\n });\n optionItems = optionItems.map(opt => {\n return Object.assign({}, opt, getAuthenticatorDataForVerification(opt));\n });\n return {\n View: AuthenticatorVerifyOptions,\n options: {\n name: opt.name,\n collection: new Collection(optionItems),\n }\n };\n};\n\nconst createAdminScopesView = () => {\n return {\n View: AdminScopeList,\n };\n};\nconst createEnduserScopesView = () => {\n return {\n View: EnduserScopeList,\n };\n};\n\nconst createCaptchaView = (opt) => {\n return {\n View: CaptchaView,\n options: {\n name: opt.name,\n } \n };\n};\n\nconst inputCreationStrategy = {\n authenticatorEnrollSelect: createAuthenticatorEnrollSelectView,\n authenticatorVerifySelect: createAuthenticatorVerifySelectView,\n ['admin-consent']: createAdminScopesView,\n ['consent']: createEnduserScopesView,\n ['captcha']: createCaptchaView,\n};\n\n// TODO: move logic to uiSchemaTransformer\nconst create = function(uiSchemaObj) {\n const strategyFn = inputCreationStrategy[uiSchemaObj.type] || _.identity;\n return strategyFn(uiSchemaObj);\n};\n\nconst createPIVButton = (settings, appState) => {\n const pivIdp =\n appState.get('remediations').filter(idp => idp.name === RemediationForms.PIV_IDP);\n if (pivIdp.length < 1) {\n return [];\n }\n const pivConfig = settings.get('piv');\n const className = pivConfig.className || '';\n return [{\n attributes: {\n 'data-se': 'piv-card-button',\n },\n className: className + ' piv-button',\n title: pivConfig.text || loc('piv.cac.card', 'login'),\n click: (e) => {\n e.preventDefault();\n appState.trigger('switchForm', RemediationForms.PIV_IDP);\n },\n }];\n};\n\n/**\n * Example of `redirect-idp` remediation.\n * {\n * \"name\": \"redirect-idp\",\n * \"type\": \"MICROSOFT\",\n * \"idp\": {\n * \"id\": \"0oa2szc1K1YPgz1pe0g4\",\n * \"name\": \"Microsoft IDP\"\n * },\n * \"href\": \"http://localhost:3000/sso/idps/0oa2szc1K1YPgz1pe0g4?stateToken=BB...AA\",\n * \"method\": \"GET\"\n * }\n *\n */\nconst createIdpButtons = ({ settings, appState }) => {\n // This is the max allowable text width that we can display for IDP buttons.\n // Generated by taking the 316px width of button minus padding-left (90 px) and padding-right (50px)\n const MAX_IDP_BUTTON_WIDTH = 186;\n\n const redirectIdpRemediations =\n appState.get('remediations').filter(idp => idp.name === RemediationForms.REDIRECT_IDP);\n\n if (!Array.isArray(redirectIdpRemediations)) {\n return [];\n }\n\n // create piv button\n const pivButton = createPIVButton(settings, appState);\n\n //add buttons from idp object\n const idpButtons = redirectIdpRemediations.map(idpObject => {\n let type = idpObject.type?.toLowerCase();\n let displayName;\n\n if (!_.contains(IDP.SUPPORTED_SOCIAL_IDPS, type)) {\n type = 'general-idp';\n // OKTA-396684 - makes sure that custom idps always have a name\n displayName = loc('customauth.sign.in.with.label', 'login', [idpObject.idp?.name]);\n } else {\n displayName = loc(`socialauth.${type}.label`, 'login');\n }\n\n const classNames = [\n 'social-auth-button',\n `social-auth-${type}-button`,\n ];\n\n if (type === 'general-idp') {\n classNames.push('no-translate');\n }\n\n if (idpObject.idp.className) {\n classNames.push(idpObject.idp.className);\n }\n\n const button: ButtonOptions = {\n attributes: {\n 'data-se': `social-auth-${type}-button`,\n },\n className: classNames.join(' '),\n title: displayName,\n href: idpObject.href,\n };\n\n if (isTextOverflowing(displayName, MAX_IDP_BUTTON_WIDTH)) {\n // We add a tooltip in case the name gets truncated if too long\n button.attributes.title = displayName;\n }\n\n return button;\n });\n\n return [...pivButton, ...idpButtons];\n};\n\nconst createCustomButtons = (settings) => {\n const customButtons = settings.get('customButtons');\n return customButtons.map(customButton => {\n const button = {\n attributes: {\n 'data-se': customButton.dataAttr\n },\n className: customButton.className + ' default-custom-button',\n title: customButton.title || loc(customButton.i18nKey, 'login'),\n click: customButton.click\n };\n return button;\n });\n};\n\nconst addCustomButton = (customButtonSettings) => {\n return createButton({\n ...customButtonSettings,\n className: `${customButtonSettings.className} default-custom-button button-primary`,\n });\n};\n\nexport {\n create,\n createIdpButtons,\n createCustomButtons,\n addCustomButton,\n isTextOverflowing\n};\n","/*!\n * Copyright (c) 2015-2016, 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 { View } from 'okta';\nimport hbs from 'handlebars-inline-precompile';\nimport Animations from 'util/Animations';\nimport LoadingBeacon from 'views/shared/LoadingBeacon';\nconst NO_BEACON_CLS = 'no-beacon';\nconst LOADING_BEACON_CLS = 'beacon-small beacon-loading';\n\nfunction isLoadingBeacon(beacon) {\n return beacon && beacon.equals(LoadingBeacon);\n}\n\nfunction removeBeacon(view) {\n // There are some timing issues with removing beacons (i.e. the case of\n // transitioning from loadingBeacon -> loadingBeacon)\n if (!view.currentBeacon) {\n return;\n }\n view.currentBeacon.remove();\n view.currentBeacon = null;\n}\n\nfunction addBeacon(view, NextBeacon, selector, options) {\n view.add(NextBeacon, {\n selector: selector,\n options: options,\n });\n view.currentBeacon = view.first();\n}\n\nfunction typeOfTransition(currentBeacon, NextBeacon, options) {\n if (!currentBeacon && !NextBeacon) {\n return 'none';\n }\n // Show Loading beacon\n if (!currentBeacon && options.loading) {\n return 'load';\n }\n // Swap/Hide Loading beacon\n if (currentBeacon && isLoadingBeacon(currentBeacon)) {\n return NextBeacon ? 'swap' : 'unload';\n }\n if (currentBeacon && currentBeacon.equals(NextBeacon, options)) {\n return 'same';\n }\n if (!currentBeacon && NextBeacon) {\n return 'add';\n }\n if (currentBeacon && !NextBeacon) {\n return 'remove';\n }\n if (currentBeacon instanceof NextBeacon) {\n return 'fade';\n }\n // If none of the above\n // then we are changing the type of beacon\n // ex. from SecurityBeacon to FactorBeacon\n return 'swap';\n}\n\nexport default class Header extends View {\n currentBeacon;\n \n preinitialize(...args) {\n this.currentBeacon = null;\n /* eslint-disable @okta/okta/no-unlocalized-text-in-templates */\n this.template = hbs(\n '\\\n \\\n
      \\\n '\n );\n /* eslint-enable @okta/okta/no-unlocalized-text-in-templates */\n View.prototype.preinitialize.apply(this, args);\n }\n\n\n // Attach a 'no-beacon' class if the security image feature\n // is not passed in to prevent the beacon from jumping.\n initialize(options) {\n if (!options.settings.get('features.securityImage')) {\n this.$el.addClass(NO_BEACON_CLS);\n // To show/hide the spinner when there is no security image,\n // listen to the appState's loading/removeLoading events.\n this.listenTo(options.appState, 'loading', this.setLoadingBeacon);\n this.listenTo(options.appState, 'removeLoading', this.removeLoadingBeacon);\n }\n }\n\n /* eslint complexity: 0 */\n setBeacon(NextBeacon, options) {\n const selector = '[data-type=\"beacon-container\"]';\n const container = this.$(selector);\n const transition = typeOfTransition(this.currentBeacon, NextBeacon, options);\n\n switch (transition) {\n case 'none':\n this.$el.addClass(NO_BEACON_CLS);\n return;\n case 'same':\n return;\n case 'add':\n this.$el.removeClass(NO_BEACON_CLS);\n addBeacon(this, NextBeacon, selector, options);\n return Animations.explode(container);\n case 'remove':\n this.$el.addClass(NO_BEACON_CLS);\n return Animations.implode(container)\n .then(() => {\n removeBeacon(this);\n })\n .done(); // TODO: can this be removed if Animations.implode returns standard ES6 Promise?\n case 'fade':\n // Other transitions are performed on the beacon container,\n // but this transition is on the content inside the beacon.\n // For a SecurityBeacon the username change will update the\n // AppState and trigger an transition to a new Becon\n // Since there is no url change this method is not called.\n // For a FactorBeacon a page refresh has occurred\n // so we execute the beacon's own transition method.\n if (!this.currentBeacon.fadeOut) {\n throw new Error('The current beacon is missing the \"fadeOut\" method');\n }\n options.animate = true;\n return this.currentBeacon\n .fadeOut()\n .then(() => {\n removeBeacon(this);\n addBeacon(this, NextBeacon, selector, options);\n })\n .done(); // TODO: can this be removed if fadeOut returns standard ES6 Promise?\n case 'swap':\n return Animations.swapBeacons({\n $el: container,\n swap: () => {\n const isLoading = isLoadingBeacon(this.currentBeacon);\n\n // Order of these calls is important for -\n // loader --> security/factor beacon swap.\n removeBeacon(this);\n if (isLoading) {\n container.removeClass(LOADING_BEACON_CLS);\n this.$el.removeClass(NO_BEACON_CLS);\n }\n addBeacon(this, NextBeacon, selector, options);\n },\n }).done(); // TODO: can this be removed if Animations.swapBeacons returns standard ES6 Promise?\n case 'load':\n // Show the loading beacon. Add a couple of classes\n // before triggering the add beacon code.\n container.addClass(LOADING_BEACON_CLS);\n addBeacon(this, NextBeacon, selector, options);\n return Animations.explode(container);\n case 'unload':\n // Hide the loading beacon.\n return this.removeLoadingBeacon();\n default:\n throw new Error('the \"' + transition + '\" is not recognized');\n }\n }\n\n // Show the loading beacon when the security image feature is not enabled.\n setLoadingBeacon(isLoading) {\n if (!isLoading || isLoadingBeacon(this.currentBeacon)) {\n return;\n }\n this.setBeacon(LoadingBeacon, { loading: true });\n }\n\n // Hide the beacon on primary auth failure. On primary auth success, setBeacon does this job.\n removeLoadingBeacon() {\n const container = this.$('[data-type=\"beacon-container\"]');\n\n return Animations.implode(container)\n .then(() => {\n removeBeacon(this);\n container.removeClass(LOADING_BEACON_CLS);\n })\n .done(); // TODO: can this be removed if Animations.implode returns standard ES6 Promise?\n }\n\n getTemplateData() {\n return this.settings.toJSON({ verbose: true });\n }\n\n getContentEl() {\n return this.$('.auth-content-inner');\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport Errors from 'util/Errors';\nimport Util from 'util/Util';\nimport Logger from 'util/Logger';\nimport getAuthClient from 'widget/getAuthClient';\nimport buildRenderOptions from 'widget/buildRenderOptions';\nimport createRouter from 'widget/createRouter';\nimport V1Router from 'LoginRouter';\nimport V2Router from 'v2/WidgetRouter';\nimport Hooks from 'models/Hooks';\nimport {\n WidgetOptions,\n OktaSignInAPI,\n RenderSuccessCallback,\n RenderErrorCallback,\n RenderResult,\n RenderOptions,\n HookFunction,\n RenderResultSuccess,\n EventCallback,\n EventCallbackWithError,\n EventName\n} from '../types';\nimport { OktaAuth, Tokens } from '@okta/okta-auth-js';\n\ndeclare type AbstractRouter = typeof V1Router | typeof V2Router;\n\nconst EVENTS_LIST = ['ready', 'afterError', 'afterRender'];\n\nexport default class OktaSignIn implements OktaSignInAPI {\n Router: AbstractRouter;\n options: WidgetOptions;\n hooks: Hooks;\n router: AbstractRouter;\n authClient: OktaAuth;\n\n constructor(options: WidgetOptions) {\n Util.debugMessage(`\n The Okta Sign-In Widget is running in development mode.\n When you are ready to publish your app, embed the minified version to turn on production mode.\n See: https://developer.okta.com/code/javascript/okta_sign-in_widget#cdn\n `);\n\n this.options = options;\n this.authClient = getAuthClient(options);\n\n // validate authClient configuration against widget options\n if (options.useInteractionCodeFlow && this.authClient.isPKCE() === false) {\n throw new Errors.ConfigError(\n 'The \"useInteractionCodeFlow\" option requires PKCE to be enabled on the authClient.'\n );\n }\n\n // Hooks can be modified before or after render\n this.hooks = new Hooks({\n hooks: options.hooks\n });\n\n let Router: AbstractRouter;\n if ((options.stateToken && !Util.isV1StateToken(options.stateToken)) \n // Self hosted widget can use `useInteractionCodeFlow` to use V2Router\n || options.useInteractionCodeFlow \n || options.proxyIdxResponse) {\n Router = V2Router;\n } else {\n Router = V1Router;\n }\n this.Router = Router;\n\n // Triggers the event up the chain so it is available to the consumers of the widget.\n this.Router.prototype.Events.listenTo.call(this, Router.prototype, 'all', this.trigger);\n\n // On the first afterRender event (usually when the Widget is ready) - emit a 'ready' event\n this.once('afterRender', function(context) {\n this.trigger('ready', context);\n });\n }\n\n /**\n * Render the sign in widget to an element. Returns a promise that will resolve on success or reject on error.\n * @param options - options for the signin widget.\n * Must have an el or $el property to render the widget to.\n * @param success - success callback function\n * @param error - error callback function\n */\n renderEl(renderOptions: RenderOptions, successFn?: RenderSuccessCallback, errorFn?: RenderErrorCallback): Promise {\n if (this.router) {\n throw new Error('An instance of the widget has already been rendered. Call remove() first.');\n }\n\n const res = createRouter(this.Router, this.options, renderOptions, this.authClient, successFn, errorFn, this.hooks);\n this.router = res.router;\n return res.promise;\n }\n\n \n hide(): void {\n if (this.router) {\n this.router.hide();\n }\n }\n\n show(): void {\n if (this.router) {\n this.router.show();\n }\n }\n\n remove(): void {\n if (this.router) {\n this.router.remove();\n this.router = undefined;\n }\n }\n\n /**\n * Renders the Widget and returns a promise that resolves to OAuth tokens\n * @param options - options for the signin widget\n */\n showSignInToGetTokens(options?: RenderOptions): Promise {\n const renderOptions = Object.assign(buildRenderOptions(this.options, options), {\n redirect: 'never'\n });\n const promise = this.renderEl(renderOptions).then(res => {\n return (res as RenderResultSuccess).tokens;\n });\n const authClient = this.router.settings.getAuthClient();\n if (authClient.isAuthorizationCodeFlow() && !authClient.isPKCE()) {\n throw new Errors.ConfigError('\"showSignInToGetTokens()\" should not be used for authorization_code flow. ' + \n 'Use \"showSignInAndRedirect()\" instead');\n }\n return promise;\n }\n\n /**\n * Renders the widget and redirects to the OAuth callback\n * @param options - options for the signin widget\n */\n showSignInAndRedirect(options?: RenderOptions): Promise {\n const renderOptions = Object.assign(buildRenderOptions(this.options, options), {\n redirect: 'always'\n });\n return this.renderEl(renderOptions).then(() => {\n // This method should never return, it will either redirect or reject with error\n return;\n });\n }\n\n /**\n * Renders the widget. Either resolves the returned promise, or redirects.\n * @param options - options for the signin widget\n */\n showSignIn(options?: RenderOptions): Promise {\n const renderOptions = Object.assign(buildRenderOptions(this.options, options));\n return this.renderEl(renderOptions);\n }\n\n // Hook convenience functions\n before(formName: string, callbackFn: HookFunction): void {\n this.hooks.mergeHook(formName, {\n before: [\n callbackFn\n ]\n });\n }\n\n after(formName: string, callbackFn: HookFunction): void {\n this.hooks.mergeHook(formName, {\n after: [\n callbackFn\n ]\n });\n }\n\n getUser(): any {\n return this.router?.appState?.getUser();\n }\n \n // Events API\n\n on(event: EventName, callback: EventCallback | EventCallbackWithError): void {\n // custom events listener on widget instance to trap third-party callback errors\n if (EVENTS_LIST.includes(event)) {\n const origCallback = callback;\n callback = function(...callbackArgs) {\n try {\n origCallback.apply(this, callbackArgs);\n } catch (err) {\n Logger.error(`[okta-signin-widget] \"${event}\" event handler error:`, err);\n }\n };\n }\n this.Router.prototype.Events.on.call(this, event, callback);\n }\n\n off(event?: EventName, callback?: EventCallback | EventCallbackWithError): void {\n this.Router.prototype.Events.off.call(this, event, callback);\n }\n\n once(event: EventName, callback: EventCallback): void {\n this.Router.prototype.Events.once.call(this, event, callback);\n }\n\n stopListening(event?: EventName, callback?: EventCallback): void {\n this.Router.prototype.Events.stopListening.call(this, event, callback);\n }\n\n listenTo(object: any, event: EventName, callback: EventCallback): void {\n this.Router.prototype.Events.listenTo.call(this, object, event, callback);\n }\n\n trigger(event: EventName, ...args: any[]): void {\n this.Router.prototype.Events.trigger.apply(this, [event, ...args]);\n }\n\n}\n","import { OktaAuth } from '@okta/okta-auth-js';\nimport Util from 'util/Util';\nimport config from 'config/config.json';\nimport { WidgetOptions } from 'types';\n\nexport default function(options: WidgetOptions = {}): OktaAuth {\n // if authClient is set, authParams are disregarded\n let { authClient, authParams } = options;\n\n if (!authClient) {\n // Create an authClient using widget options and optional authParams\n const {\n issuer,\n clientId,\n redirectUri,\n state,\n scopes,\n flow,\n codeChallenge,\n codeChallengeMethod,\n recoveryToken\n } = options;\n authParams = {\n issuer,\n clientId,\n redirectUri,\n state,\n scopes,\n flow,\n codeChallenge,\n codeChallengeMethod,\n transformErrorXHR: Util.transformErrorXHR,\n recoveryToken,\n ...authParams\n };\n\n if (!authParams.issuer) {\n authParams.issuer = options.baseUrl + '/oauth2/default';\n }\n\n authClient = new OktaAuth(authParams);\n }\n\n // Add widget version to extended user agent header\n if (!authClient._oktaUserAgent) {\n // TODO: this block handles OKTA UA for passed in authClient, error should be thrown in the next major version\n // For now, do nothing here to preserve the current behavior\n // JIRA: https://oktainc.atlassian.net/browse/OKTA-433378\n // throw new Errors.ConfigError('The passed in authClient should be version 5.4.0 or above.');\n } else {\n authClient._oktaUserAgent.addEnvironment(`okta-signin-widget-${config.version}`);\n }\n\n return authClient;\n}\n","function _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++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;","function _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\nmodule.exports = _assertThisInitialized;","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\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _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\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","function _defineProperty(obj, key, value) {\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\n return obj;\n}\n\nmodule.exports = _defineProperty;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","var setPrototypeOf = require(\"./setPrototypeOf\");\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\nmodule.exports = _inherits;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","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\nmodule.exports = _nonIterableRest;","function _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\nmodule.exports = _nonIterableSpread;","var _typeof = require(\"../helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\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\nmodule.exports = _possibleConstructorReturn;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n module.exports = _typeof = function _typeof(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\nmodule.exports = _typeof;","var arrayLikeToArray = require(\"./arrayLikeToArray\");\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\nmodule.exports = _unsupportedIterableToArray;","/**\n * Copyright (c) 2014-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\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","module.exports = require(\"regenerator-runtime\");\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"OktaAuth\"] = factory();\n\telse\n\t\troot[\"OktaAuth\"] = factory();\n})(self, function() {\nreturn ","function _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\nmodule.exports = _assertThisInitialized;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\n\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n module.exports = _construct = Reflect.construct;\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n } else {\n module.exports = _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 module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _construct.apply(null, arguments);\n}\n\nmodule.exports = _construct;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\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\nmodule.exports = _inherits;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nmodule.exports = _isNativeFunction;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _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\nmodule.exports = _isNativeReflectConstruct;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var _typeof = require(\"@babel/runtime/helpers/typeof\")[\"default\"];\n\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\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\nmodule.exports = _possibleConstructorReturn;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\n\nvar setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nvar isNativeFunction = require(\"./isNativeFunction.js\");\n\nvar construct = require(\"./construct.js\");\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n module.exports = _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 module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _wrapNativeSuper(Class);\n}\n\nmodule.exports = _wrapNativeSuper;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","module.exports = require(\"regenerator-runtime\");\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 { AuthState, AuthStateLogOptions } from './types';\nimport { OktaAuth } from '.';\nimport { getConsole } from './util';\nimport { EVENT_ADDED, EVENT_REMOVED } from './TokenManager';\nimport PromiseQueue from './PromiseQueue';\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 _sdk: OktaAuth;\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: OktaAuth) {\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/* 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","/*!\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 './base64';\nimport { ActivationData, ChallengeData, IdxAuthenticator } from '../idx/types';\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","/*! js-cookie v3.0.1 | 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 (key, 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 key = encodeURIComponent(key)\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 key + '=' + converter.write(value, key) + stringifiedAttributes)\n }\n\n function get (key) {\n if (typeof document === 'undefined' || (arguments.length && !key)) {\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 foundKey = decodeURIComponent(parts[0]);\n jar[foundKey] = converter.read(value, foundKey);\n\n if (key === foundKey) {\n break\n }\n } catch (e) {}\n }\n\n return key ? jar[key] : jar\n }\n\n return Object.create(\n {\n set: set,\n get: get,\n remove: function (key, attributes) {\n set(\n key,\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 default api;\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 StorageProvider,\n StorageOptions,\n PKCEStorage,\n CookieOptions,\n SimpleStorage,\n StorageType,\n BrowserStorageUtil,\n CookieStorage\n} from '../types';\nimport { warn } from '../util';\n\n// Building this as an object allows us to mock the functions in our tests\nvar storageUtil: BrowserStorageUtil = {\n\n // These are shimmed in `OktaAuthBase.ts`\n getHttpCache(): StorageProvider {\n return null as never as StorageProvider;\n },\n\n getPKCEStorage(): PKCEStorage {\n return null as never as PKCEStorage;\n },\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 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","/**\n * returns true if the given object is a promise\n */\nexport function isPromise(obj) {\n if (obj && typeof obj.then === 'function') {\n return true;\n } else {\n return false;\n }\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 * https://stackoverflow.com/a/8084248\n */\n\nexport function randomToken() {\n return Math.random().toString(36).substring(2);\n}\nvar lastMs = 0;\nvar additional = 0;\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 */\n\nexport function microSeconds() {\n var ms = new Date().getTime();\n\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 * copied from the 'detect-node' npm module\n * We cannot use the module directly because it causes problems with rollup\n * @link https://github.com/iliakan/detect-node/blob/master/index.js\n */\n\nexport var isNode = Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';","import { microSeconds as micro, isNode, PROMISE_RESOLVED_VOID } from '../util';\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\n state.bc.onmessage = function (msg) {\n if (state.messagesCallback) {\n state.messagesCallback(msg.data);\n }\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 /**\n * in the electron-renderer, isNode will be true even if we are in browser-context\n * so we also check if window is undefined\n */\n if (isNode && typeof window === 'undefined') return false;\n\n if (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\n return true;\n } else return false;\n}\nexport function averageResponseTime() {\n return 150;\n}\nexport default {\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 * 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 */\nvar ObliviousSet = /** @class */ (function () {\n function ObliviousSet(ttl) {\n this.ttl = ttl;\n this.set = new Set();\n this.timeMap = new Map();\n }\n ObliviousSet.prototype.has = function (value) {\n return this.set.has(value);\n };\n ObliviousSet.prototype.add = function (value) {\n var _this = this;\n this.timeMap.set(value, now());\n this.set.add(value);\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 setTimeout(function () {\n removeTooOldValues(_this);\n }, 0);\n };\n ObliviousSet.prototype.clear = function () {\n this.set.clear();\n this.timeMap.clear();\n };\n return ObliviousSet;\n}());\nexport { ObliviousSet };\n/**\n * Removes all entries from the set\n * where the TTL has expired\n */\nexport function removeTooOldValues(obliviousSet) {\n var olderThen = now() - obliviousSet.ttl;\n var iterator = obliviousSet.set[Symbol.iterator]();\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 var value = iterator.next().value;\n if (!value) {\n return; // no more elements\n }\n var time = obliviousSet.timeMap.get(value);\n if (time < olderThen) {\n obliviousSet.timeMap.delete(value);\n obliviousSet.set.delete(value);\n }\n else {\n // We reached a value that is not old enough\n return;\n }\n }\n}\nexport function now() {\n return new Date().getTime();\n}\n//# sourceMappingURL=index.js.map","export function fillOptionsWithDefaults() {\n var originalOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var options = JSON.parse(JSON.stringify(originalOptions)); // main\n\n if (typeof options.webWorkerSupport === 'undefined') options.webWorkerSupport = true; // indexed-db\n\n if (!options.idb) options.idb = {}; // after this time the messages get deleted\n\n if (!options.idb.ttl) options.idb.ttl = 1000 * 45;\n if (!options.idb.fallbackInterval) options.idb.fallbackInterval = 150; // handles abrupt db onclose events.\n\n if (originalOptions.idb && typeof originalOptions.idb.onclose === 'function') options.idb.onclose = originalOptions.idb.onclose; // localstorage\n\n if (!options.localstorage) options.localstorage = {};\n if (!options.localstorage.removeTimeout) options.localstorage.removeTimeout = 1000 * 60; // custom methods\n\n if (originalOptions.methods) options.methods = originalOptions.methods; // node\n\n if (!options.node) options.node = {};\n if (!options.node.ttl) options.node.ttl = 1000 * 60 * 2; // 2 minutes;\n\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\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 */\nimport { sleep, randomInt, randomToken, microSeconds as micro, isNode, PROMISE_RESOLVED_VOID } from '../util.js';\nexport var microSeconds = micro;\nimport { ObliviousSet } from 'oblivious-set';\nimport { fillOptionsWithDefaults } from '../options';\nvar DB_PREFIX = 'pubkey.broadcast-channel-0-';\nvar OBJECT_STORE_ID = 'messages';\nexport var type = 'idb';\nexport function getIdb() {\n if (typeof indexedDB !== 'undefined') return indexedDB;\n\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\n return false;\n}\nexport function createDatabase(channelName) {\n var IndexedDB = getIdb(); // create table\n\n var dbName = DB_PREFIX + channelName;\n var openRequest = IndexedDB.open(dbName, 1);\n\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\n var dbPromise = new Promise(function (res, rej) {\n openRequest.onerror = function (ev) {\n return rej(ev);\n };\n\n openRequest.onsuccess = function () {\n res(openRequest.result);\n };\n });\n return dbPromise;\n}\n/**\n * writes the new message to the database\n * so other readers can find it\n */\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 transaction = db.transaction([OBJECT_STORE_ID], 'readwrite');\n return new Promise(function (res, rej) {\n transaction.oncomplete = function () {\n return res();\n };\n\n transaction.onerror = function (ev) {\n return rej(ev);\n };\n\n var objectStore = transaction.objectStore(OBJECT_STORE_ID);\n objectStore.add(writeObject);\n });\n}\nexport function getAllMessages(db) {\n var objectStore = db.transaction(OBJECT_STORE_ID).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\n if (cursor) {\n ret.push(cursor.value); //alert(\"Name for SSN \" + cursor.key + \" is \" + cursor.value.name);\n\n cursor[\"continue\"]();\n } else {\n res(ret);\n }\n };\n });\n}\nexport function getMessagesHigherThan(db, lastCursorId) {\n var objectStore = db.transaction(OBJECT_STORE_ID).objectStore(OBJECT_STORE_ID);\n var ret = [];\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 var keyRangeValue = IDBKeyRange.bound(lastCursorId + 1, Infinity);\n return objectStore.openCursor(keyRangeValue);\n } catch (e) {\n return objectStore.openCursor();\n }\n }\n\n return new Promise(function (res) {\n openCursor().onsuccess = function (ev) {\n var cursor = ev.target.result;\n\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 res(ret);\n }\n };\n });\n}\nexport function removeMessageById(db, id) {\n var request = db.transaction([OBJECT_STORE_ID], 'readwrite').objectStore(OBJECT_STORE_ID)[\"delete\"](id);\n return new Promise(function (res) {\n request.onsuccess = function () {\n return res();\n };\n });\n}\nexport function getOldMessages(db, ttl) {\n var olderThen = new Date().getTime() - ttl;\n var objectStore = db.transaction(OBJECT_STORE_ID).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\n if (cursor) {\n var msgObk = cursor.value;\n\n if (msgObk.time < olderThen) {\n ret.push(msgObk); //alert(\"Name for SSN \" + cursor.key + \" is \" + cursor.value.name);\n\n cursor[\"continue\"]();\n } else {\n // no more old messages,\n res(ret);\n return;\n }\n } else {\n res(ret);\n }\n };\n });\n}\nexport function cleanOldMessages(db, ttl) {\n return getOldMessages(db, ttl).then(function (tooOld) {\n return Promise.all(tooOld.map(function (msgObj) {\n return removeMessageById(db, msgObj.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 /**\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 parrallel\n writeBlockPromise: PROMISE_RESOLVED_VOID,\n messagesCallback: null,\n readQueuePromises: [],\n db: db\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\n db.onclose = function () {\n state.closed = true;\n if (options.idb.onclose) options.idb.onclose();\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\n\n _readLoop(state);\n\n return state;\n });\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}\n\nfunction _filterMessage(msgObj, state) {\n if (msgObj.uuid === state.uuid) return false; // send by own\n\n if (state.eMIs.has(msgObj.id)) return false; // already emitted\n\n if (msgObj.data.time < state.messagesCallbackTime) return false; // older then onMessageCallback\n\n return true;\n}\n/**\n * reads all new messages from the database and emits them\n */\n\n\nfunction readNewMessages(state) {\n // channel already closed\n if (state.closed) return PROMISE_RESOLVED_VOID; // if no one is listening, we do not need to scan for new messages\n\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 some times\n * so we filter them out\n * @link https://github.com/pubkey/broadcast-channel/issues/19\n */\n .filter(function (msgObj) {\n return !!msgObj;\n }).map(function (msgObj) {\n if (msgObj.id > state.lastCursorId) {\n state.lastCursorId = msgObj.id;\n }\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\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}\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.db, channelState.options.idb.ttl);\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 if (isNode) return false;\n var idb = getIdb();\n if (!idb) return false;\n return true;\n}\nexport function averageResponseTime(options) {\n return options.idb.fallbackInterval * 2;\n}\nexport default {\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 of webworkers because they have no access to locastorage\n * This is basically implemented to support IE9 or your grandmothers toaster.\n * @link https://caniuse.com/#feat=namevalue-storage\n * @link https://caniuse.com/#feat=indexeddb\n */\nimport { ObliviousSet } from 'oblivious-set';\nimport { fillOptionsWithDefaults } from '../options';\nimport { sleep, randomToken, microSeconds as micro, isNode } from '../util';\nexport var microSeconds = micro;\nvar KEY_PREFIX = 'pubkey.broadcastChannel-';\nexport var type = 'localstorage';\n/**\n * copied from crosstab\n * @link https://github.com/tejacques/crosstab/blob/master/src/crosstab.js#L32\n */\n\nexport function getLocalStorage() {\n var localStorage;\n if (typeof window === 'undefined') return null;\n\n try {\n localStorage = window.localStorage;\n localStorage = window['ie8-eventlistener/storage'] || window.localStorage;\n } catch (e) {// 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\n return localStorage;\n}\nexport function storageKey(channelName) {\n return KEY_PREFIX + channelName;\n}\n/**\n* writes the new message to the storage\n* and fires the storage-event so other readers can find it\n*/\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 * 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\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\n var listener = function listener(ev) {\n if (ev.key === key) {\n fn(JSON.parse(ev.newValue));\n }\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\n if (!canBeUsed()) {\n throw new Error('BroadcastChannel: localstorage cannot be used');\n }\n\n var uuid = randomToken();\n /**\n * eMIs\n * contains all messages that have been emitted before\n * @type {ObliviousSet}\n */\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\n if (msgObj.uuid === uuid) return; // own message\n\n if (!msgObj.token || eMIs.has(msgObj.token)) return; // already emitted\n\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 if (isNode) return false;\n var ls = getLocalStorage();\n if (!ls) return false;\n\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\n return true;\n}\nexport function averageResponseTime() {\n var defaultTime = 120;\n var userAgent = navigator.userAgent.toLowerCase();\n\n if (userAgent.includes('safari') && !userAgent.includes('chrome')) {\n // safari is much slower so this time is higher\n return defaultTime * 2;\n }\n\n return defaultTime;\n}\nexport default {\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';\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 default {\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 IndexeDbMethod from './methods/indexed-db.js';\nimport LocalstorageMethod from './methods/localstorage.js';\nimport SimulateMethod from './methods/simulate.js'; // the line below will be removed from es5/browser builds\n\n\nimport { isNode } from './util'; // order is important\n\nvar METHODS = [NativeMethod, // fastest\nIndexeDbMethod, LocalstorageMethod];\nexport function chooseMethod(options) {\n var chooseMethods = [].concat(options.methods, METHODS).filter(Boolean); // the line below will be removed from es5/browser builds\n\n\n\n if (options.type) {\n if (options.type === 'simulate') {\n // only use simulate-method if directly chosen\n return SimulateMethod;\n }\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 * if no webworker support is needed,\n * remove idb from the list so that localstorage is been chosen\n */\n\n\n if (!options.webWorkerSupport && !isNode) {\n chooseMethods = chooseMethods.filter(function (m) {\n return m.type !== 'idb';\n });\n }\n\n var useMethod = chooseMethods.find(function (method) {\n return method.canBeUsed();\n });\n if (!useMethod) throw new Error(\"No useable method found in \" + JSON.stringify(METHODS.map(function (m) {\n return m.type;\n })));else return useMethod;\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 * Contains all open channels,\n * used in tests to ensure everything is closed.\n */\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\n if (ENFORCED_OPTIONS) {\n options = ENFORCED_OPTIONS;\n }\n\n this.options = fillOptionsWithDefaults(options);\n this.method = chooseMethod(this.options); // isListening\n\n this._iL = false;\n /**\n * _onMessageListener\n * setting onmessage twice,\n * will overwrite the first listener\n */\n\n this._onML = null;\n /**\n * _addEventListeners\n */\n\n this._addEL = {\n message: [],\n internal: []\n };\n /**\n * Unsend message promises\n * where the sending is still in progress\n * @type {Set}\n */\n\n this._uMP = new Set();\n /**\n * _beforeClose\n * array of promises that will be awaited\n * before the channel is closed\n */\n\n this._befC = [];\n /**\n * _preparePromise\n */\n\n this._prepP = null;\n\n _prepareChannel(this);\n}; // STATICS\n\n/**\n * used to identify if someone overwrites\n * window.BroadcastChannel with this\n * See methods/native.js\n */\n\nBroadcastChannel._pubkey = true;\n/**\n * clears the tmp-folder if is node\n * @return {Promise} true if has run, false if not node\n */\n\nexport function clearNodeFolder(options) {\n options = fillOptionsWithDefaults(options);\n var method = chooseMethod(options);\n\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 * if set, this method is enforced,\n * no mather what the options are\n */\n\nvar ENFORCED_OPTIONS;\nexport function enforceOptions(options) {\n ENFORCED_OPTIONS = options;\n} // PROTOTYPE\n\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 realy 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\n return _post(this, 'message', msg);\n },\n postInternal: function postInternal(msg) {\n return _post(this, 'internal', msg);\n },\n\n set onmessage(fn) {\n var time = this.method.microSeconds();\n var listenObj = {\n time: time,\n fn: fn\n };\n\n _removeListenerObject(this, 'message', this._onML);\n\n if (fn && typeof fn === 'function') {\n this._onML = listenObj;\n\n _addListenerObject(this, 'message', listenObj);\n } else {\n this._onML = null;\n }\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\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\n _removeListenerObject(this, type, obj);\n },\n close: function close() {\n var _this = this;\n\n if (this.closed) {\n return;\n }\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 // wait until all current sending are processed\n .then(function () {\n return Promise.all(Array.from(_this._uMP));\n }) // run before-close hooks\n .then(function () {\n return Promise.all(_this._befC.map(function (fn) {\n return fn();\n }));\n }) // close the channel\n .then(function () {\n return _this.method.close(_this._state);\n });\n },\n\n get type() {\n return this.method.type;\n },\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 */\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); // add/remove to unsend messages list\n\n broadcastChannel._uMP.add(sendPromise);\n\n sendPromise[\"catch\"]().then(function () {\n return broadcastChannel._uMP[\"delete\"](sendPromise);\n });\n return sendPromise;\n });\n}\n\nfunction _prepareChannel(channel) {\n var maybePromise = channel.method.create(channel.name, channel.options);\n\n if (isPromise(maybePromise)) {\n channel._prepP = maybePromise;\n maybePromise.then(function (s) {\n // used in tests to simulate slow runtime\n\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}\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}\n\nfunction _addListenerObject(channel, type, obj) {\n channel._addEL[type].push(obj);\n\n _startListening(channel);\n}\n\nfunction _removeListenerObject(channel, type, obj) {\n channel._addEL[type] = channel._addEL[type].filter(function (o) {\n return o !== obj;\n });\n\n _stopListening(channel);\n}\n\nfunction _startListening(channel) {\n if (!channel._iL && _hasMessageListeners(channel)) {\n // someone is listening, start subscribing\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 happend 'after' the listener\n * was added, we also listen to events that happended 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\n if (msgObj.time >= minMessageTime) {\n listenerObject.fn(msgObj.data);\n }\n });\n };\n\n var time = channel.method.microSeconds();\n\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}\n\nfunction _stopListening(channel) {\n if (channel._iL && !_hasMessageListeners(channel)) {\n // noone is listening, stop subscribing\n channel._iL = false;\n var time = channel.method.microSeconds();\n channel.method.onMessage(channel._state, null, time);\n }\n}","/* global WorkerGlobalScope */\nfunction add(fn) {\n if (typeof WorkerGlobalScope === 'function' && self instanceof WorkerGlobalScope) {// this is run inside of a webworker\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') return;\n /**\n * for normal browser-windows, we use the beforeunload-event\n */\n\n window.addEventListener('beforeunload', function () {\n fn();\n }, true);\n /**\n * for iframes, we have to use the unload-event\n * @link https://stackoverflow.com/q/47533670/3443137\n */\n\n window.addEventListener('unload', function () {\n fn();\n }, true);\n }\n /**\n * TODO add fallback for safari-mobile\n * @link https://stackoverflow.com/a/26193516/3443137\n */\n\n}\n\nexport default {\n add: add\n};","import isNode from 'detect-node';\nimport BrowserMethod from './browser.js';\nimport NodeMethod from './node.js';\nvar USE_METHOD = isNode ? NodeMethod : BrowserMethod;\nvar LISTENERS = new Set();\nvar startedListening = false;\n\nfunction startListening() {\n if (startedListening) return;\n startedListening = true;\n USE_METHOD.add(runAll);\n}\n\nexport function add(fn) {\n startListening();\n if (typeof fn !== 'function') throw new Error('Listener is no function');\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}","import { sleep, randomToken, PROMISE_RESOLVED_VOID, PROMISE_RESOLVED_TRUE } from './util.js';\nimport { add as unloadAdd } from 'unload';\n\nvar LeaderElection = function LeaderElection(broadcastChannel, options) {\n var _this = this;\n\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 * Apply Queue,\n * used to ensure we do not run applyOnce()\n * in parallel.\n */\n\n this._aplQ = PROMISE_RESOLVED_VOID; // amount of unfinished applyOnce() calls\n\n this._aplQC = 0; // things to clean up\n\n this._unl = []; // _unloads\n\n this._lstns = []; // _listeners\n\n this._dpL = function () {}; // onduplicate listener\n\n\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\n var hasLeaderListener = function hasLeaderListener(msg) {\n if (msg.context === 'leader') {\n if (msg.action === 'death') {\n _this.hasLeader = false;\n }\n\n if (msg.action === 'tell') {\n _this.hasLeader = true;\n }\n }\n };\n\n this.broadcastChannel.addEventListener('internal', hasLeaderListener);\n\n this._lstns.push(hasLeaderListener);\n};\n\nLeaderElection.prototype = {\n /**\n * Returns true if the instance is leader,\n * false if not.\n * @async\n */\n applyOnce: function applyOnce( // true if the applyOnce() call came from the fallbackInterval cycle\n isFromFallbackInterval) {\n var _this2 = this;\n\n if (this.isLeader) {\n return sleep(0, true);\n }\n\n if (this.isDead) {\n return sleep(0, false);\n }\n /**\n * Already applying more then once,\n * -> wait for the apply queue to be finished.\n */\n\n\n if (this._aplQC > 1) {\n return this._aplQ;\n }\n /**\n * Add a new apply-run\n */\n\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\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\n var stopCriteriaPromise = new Promise(function (res) {\n stopCriteriaPromiseResolve = function stopCriteriaPromiseResolve() {\n stopCriteria = true;\n res();\n };\n });\n var recieved = [];\n\n var handleMessage = function handleMessage(msg) {\n if (msg.context === 'leader' && msg.token != _this2.token) {\n recieved.push(msg);\n\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\n if (msg.action === 'tell') {\n // other is already leader\n stopCriteriaPromiseResolve();\n _this2.hasLeader = true;\n }\n }\n };\n\n _this2.broadcastChannel.addEventListener('internal', handleMessage);\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 intances\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\n\n var waitForAnswerTime = isFromFallbackInterval ? _this2._options.responseTime * 4 : _this2._options.responseTime;\n\n var applyPromise = _sendMessage(_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 }) // send again in case another instance was just created\n .then(function () {\n return _sendMessage(_this2, 'apply');\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\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 return applyPromise;\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 (\n /* _awaitLeadershipPromise */\n !this._aLP) {\n this._aLP = _awaitLeadershipOnce(this);\n }\n\n return this._aLP;\n },\n\n set onduplicate(fn) {\n this._dpL = fn;\n },\n\n die: function die() {\n var _this3 = this;\n\n this._lstns.forEach(function (listener) {\n return _this3.broadcastChannel.removeEventListener('internal', listener);\n });\n\n this._lstns = [];\n\n this._unl.forEach(function (uFn) {\n return uFn.remove();\n });\n\n this._unl = [];\n\n if (this.isLeader) {\n this.hasLeader = false;\n this.isLeader = false;\n }\n\n this.isDead = true;\n return _sendMessage(this, 'death');\n }\n};\n/**\n * @param leaderElector {LeaderElector}\n */\n\nfunction _awaitLeadershipOnce(leaderElector) {\n if (leaderElector.isLeader) {\n return PROMISE_RESOLVED_VOID;\n }\n\n return new Promise(function (res) {\n var resolved = false;\n\n function finish() {\n if (resolved) {\n return;\n }\n\n resolved = true;\n leaderElector.broadcastChannel.removeEventListener('internal', whenDeathListener);\n res(true);\n } // try once now\n\n\n leaderElector.applyOnce().then(function () {\n if (leaderElector.isLeader) {\n finish();\n }\n });\n /**\n * Try on fallbackInterval\n * @recursive\n */\n\n var tryOnFallBack = function tryOnFallBack() {\n return sleep(leaderElector._options.fallbackInterval).then(function () {\n if (leaderElector.isDead || resolved) {\n return;\n }\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\n tryOnFallBack(); // try when other leader dies\n\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\n leaderElector.broadcastChannel.addEventListener('internal', whenDeathListener);\n\n leaderElector._lstns.push(whenDeathListener);\n });\n}\n/**\n * sends and internal message over the broadcast-channel\n */\n\n\nfunction _sendMessage(leaderElector, action) {\n var msgJson = {\n context: 'leader',\n action: action,\n token: leaderElector.token\n };\n return leaderElector.broadcastChannel.postInternal(msgJson);\n}\n\nexport function beLeader(leaderElector) {\n leaderElector.isLeader = true;\n leaderElector.hasLeader = true;\n var unloadFn = unloadAdd(function () {\n return leaderElector.die();\n });\n\n leaderElector._unl.push(unloadFn);\n\n var isLeaderListener = function isLeaderListener(msg) {\n if (msg.context === 'leader' && msg.action === 'apply') {\n _sendMessage(leaderElector, 'tell');\n }\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\n leaderElector._dpL(); // message the lib user so the app can handle the problem\n\n\n _sendMessage(leaderElector, 'tell'); // ensure other leader also knows the problem\n\n }\n };\n\n leaderElector.broadcastChannel.addEventListener('internal', isLeaderListener);\n\n leaderElector._lstns.push(isLeaderListener);\n\n return _sendMessage(leaderElector, 'tell');\n}\n\nfunction fillOptionsWithDefaults(options, channel) {\n if (!options) options = {};\n options = JSON.parse(JSON.stringify(options));\n\n if (!options.fallbackInterval) {\n options.fallbackInterval = 3000;\n }\n\n if (!options.responseTime) {\n options.responseTime = channel.method.averageResponseTime(channel.options);\n }\n\n return options;\n}\n\nexport function createLeaderElection(channel, options) {\n if (channel._leaderElector) {\n throw new Error('BroadcastChannel already has a leader-elector');\n }\n\n options = fillOptionsWithDefaults(options, channel);\n var elector = new LeaderElection(channel, options);\n\n channel._befC.push(function () {\n return elector.die();\n });\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\n\nimport { TokenManager, EVENT_EXPIRED } from '../TokenManager';\nimport { AuthSdkError } from '../errors';\nimport { ServiceInterface, ServiceManagerOptions } from '../types';\nimport { isBrowser } from '../features';\n\nexport class AutoRenewService implements ServiceInterface {\n private tokenManager: TokenManager;\n private options: ServiceManagerOptions;\n private renewTimeQueue: Array;\n private started = false;\n\n constructor(tokenManager: TokenManager, 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 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);\n }\n\n start() {\n if (this.canStart()) {\n this.stop();\n this.tokenManager.on(EVENT_EXPIRED, this.onTokenExpiredHandler);\n this.started = true;\n }\n }\n\n 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 * 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 window */\nimport { TokenManager } from '../TokenManager';\nimport { isBrowser } from '../features';\nimport { ServiceManagerOptions, ServiceInterface } from '../types';\n\n\nexport class SyncStorageService implements ServiceInterface {\n private tokenManager: TokenManager;\n private options: ServiceManagerOptions;\n private syncTimeout: unknown;\n private started = false;\n\n constructor(tokenManager: TokenManager, options: ServiceManagerOptions = {}) {\n this.tokenManager = tokenManager;\n this.options = options;\n this.storageListener = this.storageListener.bind(this);\n }\n\n // Sync authState cross multiple tabs when localStorage is used as the storageProvider\n // A StorageEvent is sent to a window when a storage area it has access to is changed \n // within the context of another document.\n // https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent\n private storageListener({ key, newValue, oldValue }: StorageEvent) {\n const opts = this.tokenManager.getOptions();\n\n const handleCrossTabsStorageChange = () => {\n this.tokenManager.resetExpireEventTimeoutAll();\n this.tokenManager.emitEventsForCrossTabsStorageUpdate(newValue, oldValue);\n };\n\n // Skip if:\n // not from localStorage.clear (event.key is null)\n // event.key is not the storageKey\n // oldValue === newValue\n if (key && (key !== opts.storageKey || newValue === oldValue)) {\n return;\n }\n\n // LocalStorage cross tabs update is not synced in IE, set a 1s timer by default to read latest value\n // https://stackoverflow.com/questions/24077117/localstorage-in-win8-1-ie11-does-not-synchronize\n this.syncTimeout = setTimeout(() => handleCrossTabsStorageChange(), opts._storageEventDelay);\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();\n }\n\n start() {\n if (this.canStart()) {\n this.stop();\n window.addEventListener('storage', this.storageListener);\n this.started = true;\n }\n }\n\n stop() {\n if (this.started) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n window.removeEventListener('storage', this.storageListener!);\n clearTimeout(this.syncTimeout as any);\n this.started = false;\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 ServiceManagerInterface,\n ServiceInterface,\n ServiceManagerOptions\n} from './types';\nimport { OktaAuth } from '.';\nimport {\n BroadcastChannel,\n createLeaderElection,\n LeaderElector\n} from 'broadcast-channel';\nimport { AutoRenewService, SyncStorageService } from './services';\nimport { isBrowser } from './features';\n\nexport class ServiceManager implements ServiceManagerInterface {\n private sdk: OktaAuth;\n private options: ServiceManagerOptions;\n private services: Map;\n private channel?: BroadcastChannel;\n private elector?: LeaderElector;\n private started: boolean;\n\n private static knownServices = ['autoRenew', 'syncStorage'];\n\n private static defaultOptions = {\n autoRenew: true,\n autoRemove: true,\n syncStorage: true\n };\n\n constructor(sdk: OktaAuth, options: ServiceManagerOptions = {}) {\n this.sdk = sdk;\n\n // TODO: backwards compatibility, remove in next major version - OKTA-473815\n const { autoRenew, autoRemove, syncStorage } = sdk.tokenManager.getOptions();\n this.options = Object.assign({}, \n ServiceManager.defaultOptions,\n { autoRenew, autoRemove, syncStorage },\n options\n );\n\n this.started = false;\n this.services = new Map();\n this.onLeaderDuplicate = this.onLeaderDuplicate.bind(this);\n this.onLeader = this.onLeader.bind(this);\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 public static canUseLeaderElection() {\n return isBrowser();\n }\n\n private onLeader() {\n if (this.started) {\n // Start services that requires leadership\n this.startServices();\n }\n }\n\n private onLeaderDuplicate() {\n }\n\n isLeader() {\n return !!this.elector?.isLeader;\n }\n\n hasLeader() {\n return this.elector?.hasLeader;\n }\n\n isLeaderRequired() {\n return [...this.services.values()].some(srv => srv.requiresLeadership());\n }\n\n start() {\n if (this.started) {\n return; // noop if services have already started\n }\n // only start election if a leader is required\n if (this.isLeaderRequired()) {\n this.startElector();\n }\n this.startServices();\n this.started = true;\n }\n \n stop() {\n this.stopElector();\n this.stopServices();\n this.started = false;\n }\n\n getService(name: string): ServiceInterface | undefined {\n return this.services.get(name);\n }\n\n private startServices() {\n for (const srv of this.services.values()) {\n const canStart = srv.canStart() && !srv.isStarted() && (srv.requiresLeadership() ? this.isLeader() : true);\n if (canStart) {\n srv.start();\n }\n }\n }\n\n private stopServices() {\n for (const srv of this.services.values()) {\n srv.stop();\n }\n }\n\n private startElector() {\n this.stopElector();\n if (ServiceManager.canUseLeaderElection()) {\n if (!this.channel) {\n const { broadcastChannelName } = this.options;\n this.channel = new BroadcastChannel(broadcastChannelName as string);\n }\n if (!this.elector) {\n this.elector = createLeaderElection(this.channel);\n this.elector.onduplicate = this.onLeaderDuplicate;\n this.elector.awaitLeadership().then(this.onLeader);\n }\n }\n }\n\n private stopElector() {\n if (this.elector) {\n this.elector?.die();\n this.elector = undefined;\n this.channel?.close();\n this.channel = undefined;\n }\n }\n\n private createService(name: string): ServiceInterface {\n const tokenManager = this.sdk.tokenManager;\n\n let service: ServiceInterface | undefined;\n switch (name) {\n case 'autoRenew':\n service = new AutoRenewService(tokenManager, {...this.options});\n break;\n case 'syncStorage':\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\nimport { AuthSdkError } from '../errors';\nimport { isFingerprintSupported } from '../features';\nimport {\n addListener,\n removeListener\n} from '../oidc';\nimport { FingerprintOptions, OktaAuthInterface } from '../types';\n\nexport default function fingerprint(sdk: OktaAuthInterface, 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","/*!\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 AuthSdkError from './errors/AuthSdkError';\nimport { OktaAuthOptions } from './types';\n\n// TODO: use @okta/configuration-validation (move module to this monorepo?)\n// eslint-disable-next-line complexity\nfunction assertValidConfig(args: OktaAuthOptions) {\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 {\n assertValidConfig\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 '../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","/*!\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, OktaAuthOptions, StorageUtil } 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 const enableSharedStorage = true;\n\nexport function getCookieSettings(args: OktaAuthOptions = {}, 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 { removeTrailingSlash, removeNils } from '../util';\nimport { assertValidConfig } from '../builderUtil';\nimport { OktaAuthOptions } from '../types';\n\nimport fetchRequest from '../fetch/fetchRequest';\nimport { getStorage, STORAGE_MANAGER_OPTIONS, enableSharedStorage, getCookieSettings } from './node';\nimport { isHTTPS } from '../features';\n\nexport function getDefaultOptions(): OktaAuthOptions {\n\n \n const options = {\n devMode: false,\n httpRequestClient: fetchRequest,\n storageUtil: getStorage(),\n storageManager: STORAGE_MANAGER_OPTIONS,\n transactionManager: {\n enableSharedStorage\n }\n };\n return options;\n}\n\nfunction mergeOptions(options, args): OktaAuthOptions {\n return Object.assign({}, options, removeNils(args), {\n storageManager: Object.assign({}, options.storageManager, args.storageManager),\n transactionManager: Object.assign({}, options.transactionManager, args.transactionManager),\n });\n}\n\nexport function buildOptions(args: OktaAuthOptions = {}): OktaAuthOptions {\n assertValidConfig(args);\n args = mergeOptions(getDefaultOptions(), args);\n return removeNils({\n // OIDC configuration\n issuer: removeTrailingSlash(args.issuer),\n tokenUrl: removeTrailingSlash(args.tokenUrl),\n authorizeUrl: removeTrailingSlash(args.authorizeUrl),\n userinfoUrl: removeTrailingSlash(args.userinfoUrl),\n revokeUrl: removeTrailingSlash(args.revokeUrl),\n logoutUrl: removeTrailingSlash(args.logoutUrl),\n clientId: args.clientId,\n redirectUri: args.redirectUri,\n state: args.state,\n scopes: args.scopes,\n postLogoutRedirectUri: args.postLogoutRedirectUri,\n responseMode: args.responseMode,\n responseType: args.responseType,\n pkce: args.pkce === false ? false : true, // PKCE defaults to true\n useInteractionCodeFlow: args.useInteractionCodeFlow,\n\n // Internal options\n httpRequestClient: args.httpRequestClient,\n transformErrorXHR: args.transformErrorXHR,\n transformAuthState: args.transformAuthState,\n restoreOriginalUri: args.restoreOriginalUri,\n storageUtil: args.storageUtil,\n headers: args.headers,\n devMode: !!args.devMode,\n storageManager: args.storageManager,\n transactionManager: args.transactionManager,\n cookies: getCookieSettings(args, isHTTPS()),\n flow: args.flow,\n codeChallenge: args.codeChallenge,\n codeChallengeMethod: args.codeChallengeMethod,\n recoveryToken: args.recoveryToken,\n activationToken: args.activationToken,\n\n // Give the developer the ability to disable token signature validation.\n ignoreSignature: !!args.ignoreSignature,\n\n // Server-side web applications\n clientSecret: args.clientSecret\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 private environments: string[];\n\n constructor() {\n // add base sdk env\n this.environments = [`okta-auth-js/${SDK_VERSION}`];\n }\n\n addEnvironment(env: string) {\n this.environments.push(env);\n }\n\n getHttpHeader() {\n this.maybeAddNodeEnvironment();\n return { 'X-Okta-User-Agent-Extended': this.environments.join(' ') };\n }\n\n getVersion() {\n return SDK_VERSION;\n }\n\n private 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","/* 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/* global window */\n\nimport { \n DEFAULT_MAX_CLOCK_SKEW, \n REFERRER_PATH_STORAGE_KEY\n} from './constants';\nimport * as constants from './constants';\nimport {\n OktaAuthInterface,\n OktaAuthOptions, \n AccessToken, \n IDToken,\n RefreshToken,\n TokenAPI, \n FeaturesAPI, \n CryptoAPI,\n WebauthnAPI,\n SignoutAPI, \n FingerprintAPI,\n UserClaims, \n SigninWithRedirectOptions,\n SigninWithCredentialsOptions,\n SignoutOptions,\n Tokens,\n ForgotPasswordOptions,\n VerifyRecoveryTokenOptions,\n TransactionAPI,\n SessionAPI,\n SigninAPI,\n PkceAPI,\n SigninOptions,\n IdxAPI,\n SignoutRedirectUrlOptions,\n HttpAPI,\n FlowIdentifier,\n GetWithRedirectAPI,\n ParseFromUrlInterface,\n GetWithRedirectFunction,\n RequestOptions,\n IsAuthenticatedOptions,\n OAuthResponseType,\n} from './types';\nimport {\n transactionStatus,\n resumeTransaction,\n transactionExists,\n introspectAuthn,\n postToTransaction,\n AuthTransaction\n} from './tx';\nimport PKCE from './oidc/util/pkce';\nimport {\n closeSession,\n sessionExists,\n getSession,\n refreshSession,\n setCookieAndRedirect\n} from './session';\nimport {\n getOAuthUrls,\n getWithoutPrompt,\n getWithPopup,\n getWithRedirect,\n isLoginRedirect,\n parseFromUrl,\n decodeToken,\n revokeToken,\n renewToken,\n renewTokens,\n renewTokensWithRefresh,\n getUserInfo,\n verifyToken,\n prepareTokenParams,\n exchangeCodeForTokens,\n isInteractionRequiredError,\n isInteractionRequired,\n} from './oidc';\nimport { isBrowser } from './features';\nimport * as features from './features';\nimport * as crypto from './crypto';\nimport * as webauthn from './crypto/webauthn';\nimport browserStorage from './browser/browserStorage';\nimport { \n toQueryString, \n toAbsoluteUrl,\n clone,\n} from './util';\nimport { TokenManager } from './TokenManager';\nimport { ServiceManager } from './ServiceManager';\nimport { get, httpRequest, setRequestHeader } from './http';\nimport PromiseQueue from './PromiseQueue';\nimport fingerprint from './browser/fingerprint';\nimport { AuthStateManager } from './AuthStateManager';\nimport { StorageManager } from './StorageManager';\nimport TransactionManager from './TransactionManager';\nimport { buildOptions } from './options';\nimport {\n interact,\n introspect,\n authenticate,\n cancel,\n poll,\n proceed,\n register,\n recoverPassword,\n unlockAccount,\n startTransaction,\n handleInteractionCodeRedirect,\n canProceed,\n handleEmailVerifyCallback,\n isEmailVerifyCallback,\n parseEmailVerifyCallback,\n isEmailVerifyCallbackError\n} from './idx';\nimport { OktaUserAgent } from './OktaUserAgent';\nimport { parseOAuthResponseFromUrl } from './oidc/parseFromUrl';\nimport {\n getSavedTransactionMeta,\n createTransactionMeta,\n getTransactionMeta,\n saveTransactionMeta,\n clearTransactionMeta,\n isTransactionMetaValid\n} from './idx/transactionMeta';\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\nclass OktaAuth implements OktaAuthInterface, SigninAPI, SignoutAPI {\n options: OktaAuthOptions;\n storageManager: StorageManager;\n transactionManager: TransactionManager;\n tx: TransactionAPI;\n idx: IdxAPI;\n session: SessionAPI;\n pkce: PkceAPI;\n static features: FeaturesAPI = features;\n static crypto: CryptoAPI = crypto;\n static webauthn: WebauthnAPI = webauthn;\n features: FeaturesAPI = features;\n token: TokenAPI;\n _tokenQueue: PromiseQueue;\n emitter: any;\n tokenManager: TokenManager;\n authStateManager: AuthStateManager;\n serviceManager: ServiceManager;\n http: HttpAPI;\n fingerprint: FingerprintAPI;\n _oktaUserAgent: OktaUserAgent;\n _pending: { handleLogin: boolean };\n constructor(args: OktaAuthOptions) {\n const options = this.options = buildOptions(args);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.storageManager = new StorageManager(options.storageManager!, options.cookies!, options.storageUtil!);\n this.transactionManager = new TransactionManager(Object.assign({\n storageManager: this.storageManager,\n }, options.transactionManager));\n this._oktaUserAgent = new OktaUserAgent();\n\n this.tx = {\n status: transactionStatus.bind(null, this),\n resume: resumeTransaction.bind(null, this),\n exists: Object.assign(transactionExists.bind(null, this), {\n _get: (name) => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const storage = options.storageUtil!.storage;\n return storage.get(name);\n }\n }),\n introspect: introspectAuthn.bind(null, this)\n };\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 // Add shims for compatibility, these will be removed in next major version. OKTA-362589\n Object.assign(this.options.storageUtil, {\n getPKCEStorage: this.storageManager.getLegacyPKCEStorage.bind(this.storageManager),\n getHttpCache: this.storageManager.getHttpCache.bind(this.storageManager),\n });\n\n this._pending = { handleLogin: false };\n\n if (isBrowser()) {\n this.options = Object.assign(this.options, {\n redirectUri: toAbsoluteUrl(args.redirectUri, window.location.origin), // allow relative URIs\n });\n }\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 (!args.maxClockSkew && args.maxClockSkew !== 0) {\n this.options.maxClockSkew = DEFAULT_MAX_CLOCK_SKEW;\n } else {\n this.options.maxClockSkew = args.maxClockSkew;\n }\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.options.ignoreLifetime = !!args.ignoreLifetime;\n\n this.session = {\n close: closeSession.bind(null, this),\n exists: sessionExists.bind(null, this),\n get: getSession.bind(null, this),\n refresh: refreshSession.bind(null, this),\n setCookieAndRedirect: setCookieAndRedirect.bind(null, this)\n };\n\n this._tokenQueue = new PromiseQueue();\n const useQueue = (method) => {\n return PromiseQueue.prototype.push.bind(this._tokenQueue, method, null);\n };\n\n // eslint-disable-next-line max-len\n const getWithRedirectFn = useQueue(getWithRedirect.bind(null, this)) as GetWithRedirectFunction;\n const getWithRedirectApi: GetWithRedirectAPI = Object.assign(getWithRedirectFn, {\n // This is exposed so we can set window.location in our tests\n _setLocation: function(url) {\n window.location = url;\n }\n });\n // eslint-disable-next-line max-len\n const parseFromUrlFn = useQueue(parseFromUrl.bind(null, this)) 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 this.token = {\n prepareTokenParams: prepareTokenParams.bind(null, this),\n exchangeCodeForTokens: exchangeCodeForTokens.bind(null, this),\n getWithoutPrompt: getWithoutPrompt.bind(null, this),\n getWithPopup: getWithPopup.bind(null, this),\n getWithRedirect: getWithRedirectApi,\n parseFromUrl: parseFromUrlApi,\n decode: decodeToken,\n revoke: revokeToken.bind(null, this),\n renew: renewToken.bind(null, this),\n renewTokensWithRefresh: renewTokensWithRefresh.bind(null, this),\n renewTokens: renewTokens.bind(null, this),\n getUserInfo: getUserInfo.bind(null, this),\n verify: verifyToken.bind(null, this),\n isLoginRedirect: isLoginRedirect.bind(null, this)\n };\n // Wrap all async token API methods using MethodQueue to avoid issues with concurrency\n const syncMethods = [\n // sync methods\n 'decode',\n 'isLoginRedirect',\n // already bound\n 'getWithRedirect',\n 'parseFromUrl'\n ];\n Object.keys(this.token).forEach(key => {\n if (syncMethods.indexOf(key) >= 0) { // sync methods should not be wrapped\n return;\n }\n var method = this.token[key];\n this.token[key] = PromiseQueue.prototype.push.bind(this._tokenQueue, method, null);\n });\n\n // IDX\n const boundStartTransaction = startTransaction.bind(null, this);\n this.idx = {\n interact: interact.bind(null, this),\n introspect: introspect.bind(null, this),\n authenticate: authenticate.bind(null, this),\n register: register.bind(null, this),\n start: boundStartTransaction,\n startTransaction: boundStartTransaction, // Use `start` instead. `startTransaction` will be removed in 7.0\n poll: poll.bind(null, this),\n proceed: proceed.bind(null, this),\n cancel: cancel.bind(null, this),\n recoverPassword: recoverPassword.bind(null, this),\n\n // oauth redirect callback\n handleInteractionCodeRedirect: handleInteractionCodeRedirect.bind(null, this),\n\n // interaction required callback\n isInteractionRequired: isInteractionRequired.bind(null, this),\n isInteractionRequiredError,\n\n // email verify callback\n handleEmailVerifyCallback: handleEmailVerifyCallback.bind(null, this),\n isEmailVerifyCallback,\n parseEmailVerifyCallback,\n isEmailVerifyCallbackError,\n \n getSavedTransactionMeta: getSavedTransactionMeta.bind(null, this),\n createTransactionMeta: createTransactionMeta.bind(null, this),\n getTransactionMeta: getTransactionMeta.bind(null, this),\n saveTransactionMeta: saveTransactionMeta.bind(null, this),\n clearTransactionMeta: clearTransactionMeta.bind(null, this),\n isTransactionMetaValid,\n setFlow: (flow: FlowIdentifier) => {\n this.options.flow = flow;\n },\n getFlow: (): FlowIdentifier | undefined => {\n return this.options.flow;\n },\n canProceed: canProceed.bind(null, this),\n unlockAccount: unlockAccount.bind(null, this),\n };\n\n // HTTP\n this.http = {\n setRequestHeader: setRequestHeader.bind(null, this)\n };\n\n // Fingerprint API\n this.fingerprint = fingerprint.bind(null, this);\n\n this.emitter = new Emitter();\n\n // TokenManager\n this.tokenManager = new TokenManager(this, args.tokenManager);\n\n // AuthStateManager\n this.authStateManager = new AuthStateManager(this);\n\n // ServiceManager\n this.serviceManager = new ServiceManager(this, args.services);\n }\n\n start() {\n // TODO: review tokenManager.start\n this.tokenManager.start();\n if (!this.token.isLoginRedirect()) {\n this.authStateManager.updateAuthState();\n }\n this.serviceManager.start();\n }\n\n stop() {\n // TODO: review tokenManager.stop\n this.tokenManager.stop();\n this.serviceManager.stop();\n }\n\n setHeaders(headers) {\n this.options.headers = Object.assign({}, this.options.headers, headers);\n }\n\n\n // Authn V1\n async signIn(opts: SigninOptions): Promise {\n return this.signInWithCredentials(opts as SigninWithCredentialsOptions);\n }\n\n // Authn V1\n async signInWithCredentials(opts: SigninWithCredentialsOptions): Promise {\n opts = clone(opts || {});\n const _postToTransaction = (options?) => {\n delete opts.sendFingerprint;\n return postToTransaction(this, '/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 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 // 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.tokenManager.clear();\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 null;\n }\n throw e;\n });\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) {\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 async signOut(options?: SignoutOptions) {\n options = Object.assign({}, options);\n \n // postLogoutRedirectUri must be whitelisted in Okta Admin UI\n var defaultUri = window.location.origin;\n var currentUri = window.location.href;\n var postLogoutRedirectUri = options.postLogoutRedirectUri\n || this.options.postLogoutRedirectUri\n || defaultUri;\n \n var accessToken = options.accessToken;\n var refreshToken = options.refreshToken;\n var revokeAccessToken = options.revokeAccessToken !== false;\n var 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 return this.closeSession() // can throw if the user cannot be signed out\n .then(function() {\n if (postLogoutRedirectUri === currentUri) {\n window.location.reload(); // force a hard reload if URI is not changing\n } else {\n window.location.assign(postLogoutRedirectUri);\n }\n });\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 }\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 // Common Methods from downstream SDKs\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 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 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 } = await this.token.parseFromUrl();\n this.tokenManager.setTokens(tokens);\n }\n\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 isLoginRedirect(): boolean {\n return isLoginRedirect(this);\n }\n\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 isPKCE(): boolean {\n return !!this.options.pkce;\n }\n\n hasResponseType(responseType: OAuthResponseType): boolean {\n let hasResponseType = false;\n if (Array.isArray(this.options.responseType) && this.options.responseType.length) {\n hasResponseType = this.options.responseType.indexOf(responseType) >= 0;\n } else {\n hasResponseType = this.options.responseType === responseType;\n }\n return hasResponseType;\n }\n\n isAuthorizationCodeFlow(): boolean {\n return this.hasResponseType('code');\n }\n\n // { username, password, (relayState), (context) }\n // signIn(opts: SignInWithCredentialsOptions): Promise {\n // return postToTransaction(this, '/api/v1/authn', opts);\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 // { username, (relayState) }\n forgotPassword(opts): Promise {\n return postToTransaction(this, '/api/v1/authn/recovery/password', opts);\n }\n\n // { username, (relayState) }\n unlockAccount(opts: ForgotPasswordOptions): Promise {\n return postToTransaction(this, '/api/v1/authn/recovery/unlock', opts);\n }\n\n // { recoveryToken }\n verifyRecoveryToken(opts: VerifyRecoveryTokenOptions): Promise {\n return postToTransaction(this, '/api/v1/authn/recovery/token', opts);\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\n// Hoist feature detection functions to prototype & static type\nOktaAuth.features = OktaAuth.prototype.features = features;\n\n// Also hoist constants for CommonJS users\nObject.assign(OktaAuth, {\n constants\n});\n\nexport default OktaAuth;","/*!\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, warn } from './util';\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}\nclass 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\nexport default PromiseQueue;","/*!\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 default 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 PKCE_STORAGE_NAME,\n TOKEN_STORAGE_NAME,\n TRANSACTION_STORAGE_NAME,\n SHARED_TRANSACTION_STORAGE_NAME,\n ORIGINAL_URI_STORAGE_NAME,\n IDX_RESPONSE_STORAGE_NAME,\n CACHE_STORAGE_NAME,\n REDIRECT_OAUTH_PARAMS_NAME\n} from './constants';\nimport {\n StorageUtil,\n StorageProvider,\n StorageOptions,\n PKCEStorage,\n CookieOptions,\n TransactionStorage,\n IdxResponseStorage,\n StorageManagerOptions,\n SimpleStorage\n} from './types';\nimport SavedObject from './SavedObject';\nimport { isBrowser } from './features';\nimport { warn } from './util';\nimport { AuthSdkError } from './errors';\n\nfunction logServerSideMemoryStorageWarning(options: StorageOptions) {\n if (!isBrowser() && !options.storageProvider && !options.storageProvider) {\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\nexport class StorageManager {\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 // Maintain compatibility. Automatically fallback. May change in next major version. OKTA-362589\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 // stateToken, interactionHandle\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 // 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 // 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 // Will be removed in an upcoming major version. OKTA-362589\n getLegacyPKCEStorage(options?: StorageOptions): PKCEStorage {\n options = this.getOptionsForSection('legacy-pkce', options);\n const storage = this.getStorage(options);\n const storageKey = options.storageKey || PKCE_STORAGE_NAME;\n return new SavedObject(storage, storageKey);\n }\n\n getLegacyOAuthParamsStorage(options?: StorageOptions): StorageProvider {\n options = this.getOptionsForSection('legacy-oauth-params', options);\n const storage = this.getStorage(options);\n const storageKey = options.storageKey || REDIRECT_OAUTH_PARAMS_NAME;\n return new SavedObject(storage, storageKey);\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 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","/*!\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 EventEmitter,\n Token, \n Tokens, \n TokenType, \n TokenManagerOptions, \n isIDToken, \n isAccessToken,\n isRefreshToken,\n StorageOptions,\n StorageType,\n OktaAuthInterface,\n StorageProvider,\n TokenManagerErrorEventHandler,\n TokenManagerEventHandler,\n TokenManagerInterface,\n RefreshToken,\n AccessTokenCallback,\n IDTokenCallback,\n RefreshTokenCallback\n} from './types';\nimport { REFRESH_TOKEN_STORAGE_KEY, TOKEN_STORAGE_NAME } from './constants';\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 _storageEventDelay: 0\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';\n\ninterface TokenManagerState {\n expireTimeouts: Record;\n renewPromise: Promise | null;\n}\nfunction defaultState(): TokenManagerState {\n return {\n expireTimeouts: {},\n renewPromise: null\n };\n}\nexport class TokenManager implements TokenManagerInterface {\n private sdk: OktaAuthInterface;\n private clock: SdkClock;\n private emitter: EventEmitter;\n private storage: StorageProvider;\n private state: TokenManagerState;\n private options: TokenManagerOptions;\n\n on: (event: string, handler: TokenManagerErrorEventHandler | TokenManagerEventHandler, context?: object) => void;\n off: (event: string, handler?: TokenManagerErrorEventHandler | TokenManagerEventHandler) => void;\n\n // eslint-disable-next-line complexity\n constructor(sdk: OktaAuthInterface, 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 (isIE11OrLess()) {\n options._storageEventDelay = options._storageEventDelay || 1000;\n }\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 this.on = this.emitter.on.bind(this.emitter);\n this.off = this.emitter.off.bind(this.emitter);\n }\n\n start() {\n if (this.options.clearPendingRemoveTokens) {\n this.clearPendingRemoveTokens();\n }\n this.setExpireEventTimeoutAll();\n }\n \n stop() {\n this.clearExpireEventTimeoutAll();\n }\n\n getOptions(): TokenManagerOptions {\n return clone(this.options);\n }\n \n getExpireTime(token) {\n const expireEarlySeconds = this.options.expireEarlySeconds || 0;\n var expireTime = token.expiresAt - expireEarlySeconds;\n return expireTime;\n }\n \n hasExpired(token) {\n var expireTime = this.getExpireTime(token);\n return expireTime <= this.clock.now();\n }\n \n emitExpired(key, token) {\n this.emitter.emit(EVENT_EXPIRED, key, token);\n }\n \n emitRenewed(key, freshToken, oldToken) {\n this.emitter.emit(EVENT_RENEWED, key, freshToken, oldToken);\n }\n \n emitAdded(key, token) {\n this.emitter.emit(EVENT_ADDED, key, token);\n }\n \n emitRemoved(key, token?) {\n this.emitter.emit(EVENT_REMOVED, key, token);\n }\n \n emitError(error) {\n this.emitter.emit(EVENT_ERROR, error);\n }\n \n emitEventsForCrossTabsStorageUpdate(newValue, oldValue) {\n const oldTokens = this.getTokensFromStorageValue(oldValue);\n const newTokens = this.getTokensFromStorageValue(newValue);\n Object.keys(newTokens).forEach(key => {\n const oldToken = oldTokens[key];\n const newToken = newTokens[key];\n if (JSON.stringify(oldToken) !== JSON.stringify(newToken)) {\n this.emitAdded(key, newToken);\n }\n });\n Object.keys(oldTokens).forEach(key => {\n const oldToken = oldTokens[key];\n const newToken = newTokens[key];\n if (!newToken) {\n this.emitRemoved(key, oldToken);\n }\n });\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.emitAdded(key, token);\n this.setExpireEventTimeout(key, token);\n }\n \n getSync(key) {\n var tokenStorage = this.storage.getStorage();\n return tokenStorage[key];\n }\n \n async get(key) {\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 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 \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 \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 (e) {\n return Promise.reject(e);\n }\n \n // Remove existing autoRenew timeout\n this.clearExpireEventTimeout(key);\n \n // A refresh token means a replace instead of renewal\n // Store the renew promise state, to avoid renewing again\n 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 this.state.renewPromise;\n }\n \n clear() {\n this.clearExpireEventTimeoutAll();\n this.storage.clearStorage();\n }\n\n clearPendingRemoveTokens() {\n const tokens = this.getTokensSync();\n Object.keys(tokens).forEach(key => {\n if (tokens[key].pendingRemove) {\n this.remove(key);\n }\n });\n }\n \n getTokensFromStorageValue(value) {\n let tokens;\n try {\n tokens = JSON.parse(value) || {};\n } catch (e) {\n tokens = {};\n }\n return tokens;\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 }\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","import { isTransactionMeta, TransactionMeta } from '../types';\nimport { StorageManager } from '../StorageManager';\n\nconst MAX_ENTRY_LIFETIME = 30 * 60 * 1000; // 30 minutes\n\nexport function pruneSharedStorage(storageManager: StorageManager) {\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(storageManager: StorageManager, state: string, meta: TransactionMeta) {\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(storageManager: StorageManager, state: string) {\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(storageManager: StorageManager, state: string) {\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\n\nimport { AuthSdkError } from './errors';\nimport { REDIRECT_NONCE_COOKIE_NAME, REDIRECT_OAUTH_PARAMS_NAME, REDIRECT_STATE_COOKIE_NAME } from './constants';\nimport { StorageManager } from './StorageManager';\nimport {\n StorageProvider,\n TransactionMeta,\n isTransactionMeta,\n isOAuthTransactionMeta,\n PKCETransactionMeta,\n OAuthTransactionMeta,\n TransactionMetaOptions,\n TransactionManagerOptions,\n CookieStorage,\n SavedIdxResponse,\n IntrospectOptions\n} from './types';\nimport { isRawIdxResponse } from './idx/types/idx-js';\nimport { warn } from './util';\nimport {\n clearTransactionFromSharedStorage,\n loadTransactionFromSharedStorage,\n pruneSharedStorage,\n saveTransactionToSharedStorage\n} from './util/sharedStorage';\n\nexport interface ClearTransactionMetaOptions extends TransactionMetaOptions {\n clearSharedStorage?: boolean; // true by default\n clearIdxResponse?: boolean; // true by default\n}\nexport default class TransactionManager {\n options: TransactionManagerOptions;\n storageManager: StorageManager;\n legacyWidgetSupport: boolean;\n saveNonceCookie: boolean;\n saveStateCookie: boolean;\n saveParamsCookie: boolean;\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!;\n this.legacyWidgetSupport = options.legacyWidgetSupport === false ? false : true;\n this.saveNonceCookie = options.saveNonceCookie === false ? false : true;\n this.saveStateCookie = options.saveStateCookie === false ? false : true;\n this.saveParamsCookie = options.saveParamsCookie === false ? false : true;\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 if (options.clearIdxResponse !== false) {\n this.clearIdxResponse();\n }\n \n if (!this.legacyWidgetSupport) {\n return;\n }\n\n // This is for compatibility with older versions of the signin widget. OKTA-304806\n if (options.oauth) {\n this.clearLegacyOAuthParams();\n }\n\n if (options.pkce) {\n this.clearLegacyPKCE();\n }\n }\n\n // eslint-disable-next-line complexity\n save(meta: TransactionMeta, 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 if (!options.oauth) {\n return;\n }\n \n // Legacy cookie storage\n if (this.saveNonceCookie || this.saveStateCookie || this.saveParamsCookie) {\n const cookieStorage: CookieStorage = this.storageManager.getStorage({ storageType: 'cookie' }) as CookieStorage;\n\n if (this.saveParamsCookie) {\n const { \n responseType,\n state,\n nonce,\n scopes,\n clientId,\n urls,\n ignoreSignature\n } = meta;\n const oauthParams = {\n responseType,\n state,\n nonce,\n scopes,\n clientId,\n urls,\n ignoreSignature\n };\n cookieStorage.setItem(REDIRECT_OAUTH_PARAMS_NAME, JSON.stringify(oauthParams), null);\n }\n\n if (this.saveNonceCookie && meta.nonce) {\n // Set nonce cookie for servers to validate nonce in id_token\n cookieStorage.setItem(REDIRECT_NONCE_COOKIE_NAME, meta.nonce, null);\n }\n\n if (this.saveStateCookie && meta.state) {\n // Set state cookie for servers to validate state\n cookieStorage.setItem(REDIRECT_STATE_COOKIE_NAME, meta.state, null);\n }\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 if (!this.legacyWidgetSupport) {\n return null;\n }\n\n // This is for compatibility with older versions of the signin widget. OKTA-304806\n if (options.oauth) {\n try {\n const oauthParams = this.loadLegacyOAuthParams();\n Object.assign(meta, oauthParams);\n } finally {\n this.clearLegacyOAuthParams();\n }\n }\n\n if (options.pkce) {\n try {\n const pkceMeta: PKCETransactionMeta = this.loadLegacyPKCE();\n Object.assign(meta, pkceMeta);\n } finally {\n this.clearLegacyPKCE();\n }\n }\n\n if (isTransactionMeta(meta)) {\n return meta;\n }\n return null;\n }\n\n // This is for compatibility with older versions of the signin widget. OKTA-304806\n clearLegacyPKCE(): void {\n // clear storages\n let storage: StorageProvider;\n\n if (this.storageManager.storageUtil.testStorageType('localStorage')) {\n storage = this.storageManager.getLegacyPKCEStorage({ storageType: 'localStorage' });\n storage.clearStorage();\n }\n\n if (this.storageManager.storageUtil.testStorageType('sessionStorage')) {\n storage = this.storageManager.getLegacyPKCEStorage({ storageType: 'sessionStorage' });\n storage.clearStorage();\n }\n }\n\n loadLegacyPKCE(): PKCETransactionMeta {\n let storage: StorageProvider;\n let obj;\n \n // Try reading from localStorage first.\n if (this.storageManager.storageUtil.testStorageType('localStorage')) {\n storage = this.storageManager.getLegacyPKCEStorage({ storageType: 'localStorage' });\n obj = storage.getStorage();\n if (obj && obj.codeVerifier) {\n return obj;\n }\n }\n\n // If meta is not valid, read from sessionStorage. This is expected for more recent versions of the widget.\n if (this.storageManager.storageUtil.testStorageType('sessionStorage')) {\n storage = this.storageManager.getLegacyPKCEStorage({ storageType: 'sessionStorage' });\n obj = storage.getStorage();\n if (obj && obj.codeVerifier) {\n return obj;\n }\n }\n \n // If meta is not valid, throw an exception to avoid misleading server-side error\n // The most likely cause of this error is trying to handle a callback twice\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\n clearLegacyOAuthParams(): void {\n // clear storages\n let storage: StorageProvider;\n\n if (this.storageManager.storageUtil.testStorageType('sessionStorage')) {\n storage = this.storageManager.getLegacyOAuthParamsStorage({ storageType: 'sessionStorage' });\n storage.clearStorage();\n }\n\n if (this.storageManager.storageUtil.testStorageType('cookie')) {\n storage = this.storageManager.getLegacyOAuthParamsStorage({ storageType: 'cookie' });\n storage.clearStorage();\n }\n }\n\n loadLegacyOAuthParams(): OAuthTransactionMeta {\n let storage: StorageProvider;\n let oauthParams;\n \n // load first from session storage\n if (this.storageManager.storageUtil.testStorageType('sessionStorage')) {\n storage = this.storageManager.getLegacyOAuthParamsStorage({ storageType: 'sessionStorage' });\n oauthParams = storage.getStorage();\n }\n if (isOAuthTransactionMeta(oauthParams)) {\n return oauthParams;\n }\n\n // try to load from cookie\n if (this.storageManager.storageUtil.testStorageType('cookie')) {\n storage = this.storageManager.getLegacyOAuthParamsStorage({ storageType: 'cookie' });\n oauthParams = storage.getStorage();\n }\n\n if (isOAuthTransactionMeta(oauthParams)) {\n return oauthParams;\n }\n\n\n throw new AuthSdkError('Unable to retrieve OAuth redirect params from storage');\n\n // Something is there but we don't recognize it\n // throw new AuthSdkError('Unable to parse the ' + REDIRECT_OAUTH_PARAMS_NAME + ' value from storage');\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 { stateHandle, interactionHandle } = options;\n if (stateHandle && storedValue.stateHandle !== stateHandle) {\n return null;\n }\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 * 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 REDIRECT_OAUTH_PARAMS_NAME = 'okta-oauth-redirect-params';\nexport const REDIRECT_STATE_COOKIE_NAME = 'okta-oauth-state';\nexport const REDIRECT_NONCE_COOKIE_NAME = 'okta-oauth-nonce';\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 { 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\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\nimport CustomError from './CustomError';\nimport { APIError, FieldError, HttpResponse } 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\n constructor(err: APIError, xhr?: HttpResponse) {\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}\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\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","export default function _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}","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _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}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _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}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\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","/* 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","\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\nexport {\n isAuthApiError,\n AuthApiError,\n AuthPollStopError,\n AuthSdkError,\n OAuthError\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 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 */\nimport { OktaAuthInterface } from '../types';\n\nexport function setRequestHeader(authClient: OktaAuthInterface, headerName, headerValue) {\n authClient.options.headers = authClient.options.headers || {};\n authClient.options.headers[headerName] = headerValue;\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 { OktaAuthInterface, RequestOptions, FetchOptions, RequestData } from '../types';\nimport { AuthApiError, OAuthError } from '../errors';\n\nexport function httpRequest(sdk: OktaAuthInterface, options: RequestOptions): Promise {\n options = options || {};\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 res.headers = resp.headers;\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 var serverErr = resp.responseText || {};\n if (isString(serverErr)) {\n try {\n serverErr = JSON.parse(serverErr);\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, resp);\n }\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: OktaAuthInterface, 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: OktaAuthInterface, 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 { OktaAuthInterface, IdxTransactionMeta, InteractOptions, InteractResponse } from '../types';\nimport { getSavedTransactionMeta, saveTransactionMeta } from './transactionMeta';\nimport { getOAuthBaseUrl } from '../oidc';\nimport { createTransactionMeta } from '.';\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}\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: OktaAuthInterface, \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 } = 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 } as InteractParams;\n if (activationToken) {\n params.activation_token = activationToken;\n }\n if (recoveryToken) {\n params.recovery_token = recoveryToken;\n }\n if (clientSecret) {\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 params.client_secret = clientSecret;\n }\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 { OktaAuthInterface } from '../../../types'; // auth-js/types\nimport { IdxActionFunction, IdxActionParams, IdxResponse, IdxToPersist } from '../../types/idx-js';\nimport { divideActionParamsByMutability } from './actionParser';\nimport { makeIdxState } from './makeIdxState';\nimport AuthApiError from '../../../errors/AuthApiError';\n\nconst generateDirectFetch = function generateDirectFetch(authClient: OktaAuthInterface, { \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 makeIdxState(authClient, { ...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 = makeIdxState(authClient, { ...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 // Throw IDX response if request did not succeed. This behavior will be removed in version 7.0: OKTA-481844\n throw 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: OktaAuthInterface, 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// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nimport { OktaAuthInterface } from '../../../types'; // auth-js/types\nimport { generateRemediationFunctions } from './remediationParser';\nimport generateIdxAction from './generateIdxAction';\nimport { JSONPath } from 'jsonpath-plus';\n\nconst SKIP_FIELDS = Object.fromEntries([\n 'remediation', // remediations are put into proceed/neededToProceed\n 'context', // the API response of 'context' isn't externally useful. We ignore it and put all non-action (contextual) info into idxState.context\n].map( (field) => [ field, !!'skip this field' ] ));\n\nexport const parseNonRemediations = function parseNonRemediations( authClient: OktaAuthInterface, idxResponse, toPersist = {} ) {\n const actions = {};\n const context = {};\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 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 // eslint-disable-next-line new-cap\n const result = JSONPath({ path: query, json: idxResponse })[0];\n if (result) {\n value[k] = result;\n return;\n }\n }\n }\n if (Array.isArray(value[k])) {\n value[k].forEach(innerValue => expandRelatesTo(idxResponse, innerValue));\n }\n });\n};\n\nconst convertRemediationAction = (authClient: OktaAuthInterface, remediation, toPersist) => {\n const remediationActions = generateRemediationFunctions( authClient, [remediation], toPersist );\n const actionFn = remediationActions[remediation.name];\n return {\n ...remediation,\n action: actionFn,\n };\n};\n\nexport const parseIdxResponse = function parseIdxResponse( authClient: OktaAuthInterface, idxResponse, toPersist = {} ): {\n remediations: IdxRemediation[];\n context: IdxContext;\n actions: IdxActions;\n} {\n const remediationData = idxResponse.remediation?.value || [];\n\n remediationData.forEach(\n remediation => expandRelatesTo(idxResponse, remediation)\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","/*!\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\nimport { OktaAuthInterface } from '../../../types'; // auth-js/types\nimport generateIdxAction from './generateIdxAction';\n\nexport const generateRemediationFunctions = function generateRemediationFunctions(\n authClient: OktaAuthInterface,\n remediationValue,\n toPersist = {}\n) {\n return Object.fromEntries( remediationValue.map( remediation => {\n return [\n remediation.name,\n generateIdxAction(authClient, remediation, toPersist),\n ];\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 { IdxResponse } from '../../types/idx-js';\nimport { OktaAuthInterface, RawIdxResponse } from '../../../types'; // auth-js/types\nimport { parseIdxResponse } from './idxResponseParser';\n\nexport function makeIdxState( \n authClient: OktaAuthInterface,\n idxResponse: RawIdxResponse,\n toPersist,\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 return remediationChoiceObject.action(paramsFromUser);\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","/*!\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\nimport { makeIdxState } from './makeIdxState';\n\nexport default {\n makeIdxState,\n};\n","import { OktaAuthInterface } from '../../types'; // auth-js/types\nimport { IdxResponse, 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: OktaAuthInterface,\n rawIdxResponse: RawIdxResponse,\n toPersist: Record = {},\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 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, OktaAuthInterface } 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: OktaAuthInterface, \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 * 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 === 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 { 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 new(remediation: IdxRemediation, values?: T, options?: RemediateOptions): 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(remediation: IdxRemediation, values: T = {} as T, options: RemediateOptions = {}) {\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(): 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\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(_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 private 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","import superPropBase from \"./superPropBase.js\";\nexport default function _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\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 credentials?: Credentials;\n}\n\nexport class OktaPassword extends Authenticator {\n canVerify(values: OktaPasswordInputValues) {\n return !!(values.credentials || values.password);\n }\n\n mapCredentials(values: OktaPasswordInputValues): Credentials | undefined {\n const { credentials, password } = values;\n if (!credentials && !password) {\n return;\n }\n return credentials || { 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","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 { Remediator, RemediationValues } from './Remediator';\nimport { getAuthenticator, Authenticator, AuthenticatorValues } from '../../authenticator';\nimport { IdxRemediation, IdxContext } from '../../types/idx-js';\nimport { 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(context?: IdxContext): NextStep {\n const nextStep = super.getNextStep(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","/*!\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 } 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(context?: IdxContext): NextStep {\n const common = super.getNextStep(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, IdxOption, IdxRemediationValue, IdxContext } from '../types/idx-js';\nimport { getAuthenticatorFromRemediation } from './util';\n\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 return Boolean(this.values.channel);\n }\n\n getNextStep(context: IdxContext) {\n const common = super.getNextStep();\n const options = this.getChannels();\n const authenticator = context.currentAuthenticator.value;\n return {\n ...common,\n ...(options && { options }),\n authenticator,\n };\n }\n\n private getChannels(): IdxOption[] | undefined {\n const authenticator: IdxRemediationValue = getAuthenticatorFromRemediation(this.remediation);\n const remediationValue = authenticator.value as IdxRemediationValueForm;\n return remediationValue.form.value.find(({ name }) => name === 'channel')?.options;\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.channel,\n },\n stateHandle: this.values.stateHandle,\n\n };\n }\n\n getValuesAfterProceed(): SelectEnrollmentChannelValues {\n let trimmedValues = Object.keys(this.values).filter(valueKey => valueKey !== 'channel');\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';\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(context: IdxContext) {\n const common = super.getNextStep();\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 { IdxRemediationValue } from '../types/idx-js';\nimport { Remediator, RemediationValues } from './Base/Remediator';\n\nexport interface EnrollProfileValues extends RemediationValues {\n firstName?: string;\n lastName?: string;\n email?: string;\n}\n\nexport class EnrollProfile extends Remediator {\n static remediationName = 'enroll-profile';\n\n canRemediate() {\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 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 getInputUserProfile(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}\n\nexport class Identify extends Remediator {\n static remediationName = 'identify';\n\n map = {\n 'identifier': ['username']\n };\n\n canRemediate() {\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 { 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 { IdxOption, IdxRemediationValue } from '../../types/idx-js';\nimport { Authenticator, isAuthenticator } from '../../types';\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;\n for (let authenticator of authenticators) {\n option = options\n .find(({ relatesTo }) => relatesTo.key === authenticator.key);\n if (option) {\n break;\n }\n }\n return option;\n }\n\n canRemediate() {\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 return true;\n }\n \n return false;\n }\n\n getNextStep() {\n const common = super.getNextStep();\n const authenticatorFromRemediation = getAuthenticatorFromRemediation(this.remediation);\n const options = authenticatorFromRemediation.options!.map(option => {\n const { \n label, \n relatesTo\n } = option as IdxOption;\n const key = relatesTo!.key!;\n return { label, value: key };\n });\n return { ...common, options };\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() {\n return { name: 'authenticator', key: 'string' };\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(remediation: IdxRemediation, values: SelectAuthenticatorValues = {}, options: RemediateOptions = {}) {\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', key: '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\n\nimport { Remediator, RemediationValues } from './Remediator';\nimport { IdxRemediationValue, IdxOption, IdxRemediation, IdxAuthenticator } from '../../types/idx-js';\nimport { isAuthenticator } from '../../types';\nimport { compareAuthenticators } from '../../authenticator/util';\n\nexport type AuthenticatorDataValues = RemediationValues & {\n methodType?: string;\n};\n\n// Base class - DO NOT expose static remediationName\nexport class AuthenticatorData extends Remediator {\n 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 getNextStep() {\n const common = super.getNextStep();\n const options = this.getMethodTypes();\n return { \n ...common, \n ...(options && { options }) \n };\n }\n\n protected mapAuthenticatorDataFromValues(authenticatorData?) {\n // add methodType to authenticatorData if it exists in values\n let { methodType, authenticator } = this.values;\n if (!methodType && isAuthenticator(authenticator)) {\n methodType = authenticator?.methodType;\n }\n \n const { id, enrollmentId } = this.authenticator;\n const data = { \n id,\n enrollmentId,\n ...(authenticatorData && authenticatorData),\n ...(methodType && { methodType }) \n };\n\n return data.methodType ? data : null;\n }\n\n protected getAuthenticatorFromRemediation(): IdxRemediationValue {\n const authenticator = this.remediation.value!\n .find(({ name }) => name === 'authenticator') as IdxRemediationValue;\n return authenticator;\n }\n\n private getMethodTypes(): IdxOption[] {\n const authenticator: IdxRemediationValue = this.getAuthenticatorFromRemediation();\n return authenticator.form!.value.find(({ name }) => name === 'methodType')?.options as IdxOption[];\n }\n\n getValuesAfterProceed(): 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\n\nimport { AuthSdkError } from '../../errors';\nimport { AuthenticatorData, AuthenticatorDataValues } from './Base/AuthenticatorData';\nimport { IdxRemediation, RemediateOptions } from '../types';\n\nexport type AuthenticatorVerificationDataValues = AuthenticatorDataValues;\n\nexport class AuthenticatorVerificationData extends AuthenticatorData {\n static remediationName = 'authenticator-verification-data';\n\n shouldProceedWithEmailAuthenticator: boolean; // will be removed in next major version\n\n constructor(remediation: IdxRemediation, values: AuthenticatorDataValues = {}, options: RemediateOptions = {}) {\n super(remediation, values);\n\n // will be removed in next major version\n this.shouldProceedWithEmailAuthenticator = options.shouldProceedWithEmailAuthenticator !== false\n && this.authenticator.methods.length === 1 \n && this.authenticator.methods[0].type === 'email';\n }\n\n canRemediate() {\n // auto proceed if there is only one method (will be removed in next major version)\n if (this.shouldProceedWithEmailAuthenticator !== false) {\n return true;\n }\n return super.canRemediate();\n }\n\n mapAuthenticator() {\n // auto proceed with the only methodType option\n if (this.shouldProceedWithEmailAuthenticator !== false) {\n const authenticatorFromRemediation = this.getAuthenticatorFromRemediation();\n return authenticatorFromRemediation.form?.value.reduce((acc, curr) => {\n if (curr.value) {\n acc[curr.name] = curr.value;\n } else if (curr.options) {\n acc[curr.name] = curr.options![0].value;\n } else {\n throw new AuthSdkError(`Unsupported authenticator data type: ${curr}`);\n }\n return acc;\n }, {});\n }\n\n return this.getAuthenticatorData();\n }\n\n getInputAuthenticator() {\n const authenticator = this.getAuthenticatorFromRemediation();\n const methodType = authenticator.form!.value.find(({ name }) => name === 'methodType');\n // if has methodType in form, let user select the methodType\n if (methodType && methodType.options) {\n return { name: 'methodType', type: 'string', required: true };\n }\n // no methodType, then return form values\n const inputs = [...authenticator.form!.value];\n return inputs;\n }\n\n getValuesAfterProceed(): AuthenticatorVerificationDataValues {\n this.values = super.getValuesAfterProceed();\n let trimmedValues = Object.keys(this.values).filter(valueKey => valueKey !== 'authenticator');\n return trimmedValues.reduce((values, valueKey) => ({...values, [valueKey]: this.values[valueKey]}), {});\n }\n}\n","/* 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() {\n return [\n { name: 'methodType', type: 'string', required: true },\n { name: 'phoneNumber', type: 'string', required: true, label: 'Phone Number' },\n ];\n }\n\n protected mapAuthenticatorDataFromValues(data?) {\n // get mapped authenticator from base class\n data = super.mapAuthenticatorDataFromValues(data);\n // add phoneNumber to authenticator if it exists in values\n const { phoneNumber } = this.values;\n if (!data && !phoneNumber) {\n return;\n }\n\n return { \n ...(data && data), \n ...(phoneNumber && { phoneNumber }) \n };\n }\n\n}\n","/*!\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","import { warn } from '../util';\nimport * as remediators from './remediators';\nimport { RemediationValues, Remediator, RemediatorConstructor } from './remediators';\nimport { IdxFeature, NextStep, RemediateOptions, RemediationResponse } from './types';\nimport { IdxMessage, IdxRemediation, IdxRemediationValue, IdxResponse, isIdxResponse } from './types/idx-js';\n\nexport function isTerminalResponse(idxResponse: IdxResponse) {\n const { neededToProceed, interactionCode } = idxResponse;\n return !neededToProceed.length && !interactionCode;\n}\n\nexport function canSkipFn(idxResponse: IdxResponse) {\n return idxResponse.neededToProceed.some(({ name }) => name === 'skip');\n}\n\nexport function canResendFn(idxResponse: IdxResponse) {\n return Object.keys(idxResponse.actions).some(actionName => actionName.includes('resend'));\n}\n\nexport function getMessagesFromIdxRemediationValue(\n value?: IdxRemediationValue[]\n): IdxMessage[] | undefined {\n if (!value || !Array.isArray(value)) {\n return;\n }\n return value.reduce((messages, value) => {\n if (value.messages) {\n messages = [...messages, ...value.messages.value] as never;\n }\n if (value.form) {\n const messagesFromForm = getMessagesFromIdxRemediationValue(value.form.value) || [];\n messages = [...messages, ...messagesFromForm] as never;\n } \n if (value.options) {\n let optionValues = [];\n value.options.forEach(option => {\n if (!option.value || typeof option.value === 'string') {\n return;\n }\n optionValues = [...optionValues, option.value] as never;\n });\n const messagesFromOptions = getMessagesFromIdxRemediationValue(optionValues) || [];\n messages = [...messages, ...messagesFromOptions] as never;\n }\n return messages;\n }, []);\n}\n\nexport function getMessagesFromResponse(idxResponse: IdxResponse): 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 for (let remediation of neededToProceed) {\n const fieldMessages = getMessagesFromIdxRemediationValue(remediation.value);\n if (fieldMessages) {\n messages = [...messages, ...fieldMessages] as never;\n }\n }\n\n // API may return identical error on same field, filter by i18n key\n const seen = {};\n messages = messages.reduce((filtered, message) => {\n const key = message.i18n?.key;\n if (key && seen[key]) {\n return filtered;\n }\n seen[key] = message;\n filtered = [...filtered, message] as never;\n return filtered;\n }, []);\n return messages;\n}\n\n\nexport function getEnabledFeatures(idxResponse: IdxResponse): IdxFeature[] {\n const res = [];\n const { actions, neededToProceed } = idxResponse;\n\n if (actions['currentAuthenticator-recover']) {\n res.push(IdxFeature.PASSWORD_RECOVERY as never);\n }\n\n if (neededToProceed.some(({ name }) => name === 'select-enroll-profile')) {\n res.push(IdxFeature.REGISTRATION as never);\n }\n\n if (neededToProceed.some(({ name }) => name === 'redirect-idp')) {\n res.push(IdxFeature.SOCIAL_IDP as never);\n }\n\n if (neededToProceed.some(({ name }) => name === 'unlock-account')) {\n res.push(IdxFeature.ACCOUNT_UNLOCK as never);\n }\n\n return res;\n}\n\nexport function getAvailableSteps(idxResponse: IdxResponse): NextStep[] {\n const res: NextStep[] = [];\n\n const remediatorMap: Record = Object.values(remediators)\n .reduce((map, remediatorClass) => {\n // Only add concrete subclasses to the map\n if (remediatorClass.remediationName) {\n map[remediatorClass.remediationName] = remediatorClass;\n }\n return map;\n }, {});\n\n for (let remediation of idxResponse.neededToProceed) {\n const T = remediatorMap[remediation.name];\n if (T) {\n const remediator: Remediator = new T(remediation);\n res.push (remediator.getNextStep(idxResponse.context) as never);\n }\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\n// Return first match idxRemediation in allowed remediators\n// eslint-disable-next-line complexity\nexport function getRemediator(\n idxRemediations: IdxRemediation[],\n values: RemediationValues,\n options: RemediateOptions,\n): Remediator | undefined {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const remediators = options.remediators!;\n\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 = remediation ? remediators[remediation.name] : undefined;\n return T ? new T(remediation, values, options) : undefined;\n } else {\n // step was specified, but remediation was not found. This is unexpected!\n warn(`step \"${options.step}\" did not match any remediations`);\n return;\n }\n }\n\n const remediatorCandidates: Remediator[] = [];\n for (let remediation of idxRemediations) {\n const isRemeditionInFlow = Object.keys(remediators as object).includes(remediation.name);\n if (!isRemeditionInFlow) {\n continue;\n }\n\n const T = remediators[remediation.name];\n remediator = new T(remediation, values, options);\n if (remediator.canRemediate()) {\n // found the remediator\n return remediator;\n }\n // remediator cannot handle the current values\n // maybe return for next step\n remediatorCandidates.push(remediator); \n }\n \n return remediatorCandidates[0];\n}\n\n\nexport function getNextStep(\n remediator: Remediator, idxResponse: IdxResponse\n): NextStep {\n const nextStep = remediator.getNextStep(idxResponse.context);\n const canSkip = canSkipFn(idxResponse);\n const canResend = canResendFn(idxResponse);\n return {\n ...nextStep,\n ...(canSkip && {canSkip}),\n ...(canResend && {canResend}),\n };\n}\n\nexport function handleIdxError(e, remediator?): RemediationResponse {\n // Handle idx messages\n let idxResponse = isIdxResponse(e) ? e : null;\n if (!idxResponse) {\n // Thrown error terminates the interaction with idx\n throw e;\n }\n idxResponse = {\n ...idxResponse,\n requestDidSucceed: false\n };\n const terminal = isTerminalResponse(idxResponse);\n const messages = getMessagesFromResponse(idxResponse);\n if (terminal) {\n return { idxResponse, terminal, messages };\n } else {\n const nextStep = remediator && getNextStep(remediator, idxResponse);\n return { \n idxResponse,\n messages, \n ...(nextStep && { nextStep }) \n };\n }\n}\n","/*!\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 { RemediateOptions, RemediationResponse } from './types';\nimport { \n IdxResponse,\n IdxActionParams, \n} from './types/idx-js';\nimport {\n getMessagesFromResponse,\n isTerminalResponse,\n filterValuesForRemediation,\n getRemediator,\n getNextStep,\n handleIdxError\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 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(neededToProceed, 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 try {\n idxResponse = await idxResponse.actions[action](params);\n idxResponse = { ...idxResponse, requestDidSucceed: true };\n } catch (e) {\n return handleIdxError(e, remediator);\n }\n if (action === 'cancel') {\n return { idxResponse, canceled: true };\n }\n return remediate(idxResponse, valuesWithoutExecutedAction, optionsWithoutExecutedAction); // recursive call\n }\n\n // search for action in remediation list\n const remediationAction = neededToProceed.find(({ name }) => name === action);\n if (remediationAction) {\n try {\n idxResponse = await idxResponse.proceed(action, params);\n idxResponse = { ...idxResponse, requestDidSucceed: true };\n }\n catch (e) {\n return handleIdxError(e, remediator);\n }\n\n return remediate(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 const messages = getMessagesFromResponse(idxResponse);\n if (terminal) {\n return { idxResponse, terminal, messages };\n }\n\n if (!remediator) {\n if (options.step) {\n values = filterValuesForRemediation(idxResponse, options.step, values); // include only requested values\n try {\n idxResponse = await idxResponse.proceed(options.step, values);\n idxResponse = { ...idxResponse, requestDidSucceed: true };\n return { idxResponse };\n } catch(e) {\n return handleIdxError(e);\n }\n }\n if (flow === 'default') {\n return { idxResponse };\n }\n throw new AuthSdkError(`\n No remediation can match current flow, check policy settings in your org.\n Remediations: [${neededToProceed.reduce((acc, curr) => acc ? acc + ' ,' + curr.name : curr.name, '')}]\n `);\n }\n\n // Return next step to the caller\n if (!remediator.canRemediate()) {\n const nextStep = getNextStep(remediator, idxResponse);\n return {\n idxResponse,\n nextStep,\n messages: messages.length ? messages: undefined\n };\n }\n\n const name = remediator.getName();\n const data = remediator.getData();\n try {\n idxResponse = await idxResponse.proceed(name, data);\n idxResponse = { ...idxResponse, requestDidSucceed: true };\n // We may want to trim the values bag for the next remediation\n // Let the remediator decide what the values should be (default to current values)\n values = remediator.getValuesAfterProceed();\n options = { ...options, step: undefined }; // do not re-use the step\n return remediate(idxResponse, values, options); // recursive call\n } catch (e) {\n return handleIdxError(e, remediator);\n }\n}\n","/*!\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 RedirectIdp,\n AuthenticatorEnrollmentData,\n SelectAuthenticatorEnroll,\n EnrollAuthenticator,\n AuthenticatorVerificationData,\n EnrollPoll,\n ChallengePoll, 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 'enroll-poll': EnrollPoll,\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 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 '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} 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};\n","import { OktaAuthInterface, FlowIdentifier } from '../../types';\nimport { AuthenticationFlow } from './AuthenticationFlow';\nimport { PasswordRecoveryFlow } from './PasswordRecoveryFlow';\nimport { RegistrationFlow } from './RegistrationFlow';\nimport { AccountUnlockFlow } from './AccountUnlockFlow';\nimport { RemediationFlow } from './RemediationFlow';\n\nexport interface FlowSpecification {\n flow: FlowIdentifier;\n remediators: RemediationFlow;\n actions?: string[];\n withCredentials?: boolean;\n}\n\n// eslint-disable-next-line complexity\nexport function getFlowSpecification(oktaAuth: OktaAuthInterface, flow: FlowIdentifier = 'default'): 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","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\n/* eslint-disable max-statements, complexity, max-depth */\nimport { interact } from './interact';\nimport { introspect } from './introspect';\nimport { remediate } from './remediate';\nimport { getFlowSpecification } from './flow';\nimport * as remediators from './remediators';\nimport { \n OktaAuthInterface,\n IdxStatus,\n IdxTransaction,\n IdxFeature,\n NextStep,\n RunOptions,\n IdxTransactionMeta,\n Tokens,\n APIError,\n} from '../types';\nimport { IdxMessage, IdxResponse, isIdxResponse } from './types/idx-js';\nimport { getSavedTransactionMeta, saveTransactionMeta } from './transactionMeta';\nimport { getAvailableSteps, getEnabledFeatures, getMessagesFromResponse, isTerminalResponse } from './util';\ndeclare interface RunData {\n options: RunOptions;\n values: remediators.RemediationValues;\n status?: IdxStatus;\n tokens?: Tokens;\n nextStep?: NextStep;\n messages?: IdxMessage[];\n error?: APIError | IdxResponse;\n meta?: IdxTransactionMeta;\n enabledFeatures?: IdxFeature[];\n availableSteps?: NextStep[];\n idxResponse?: IdxResponse;\n canceled?: boolean;\n interactionCode?: string;\n shouldSaveResponse?: boolean;\n shouldClearTransaction?: boolean;\n clearSharedStorage?: boolean;\n terminal?: boolean;\n}\n\nfunction initializeValues(options: RunOptions) {\n // remove known options, everything else is assumed to be a value\n const knownOptions = [\n 'flow', \n 'remediators', \n 'actions', \n 'withCredentials', \n 'step', \n 'shouldProceedWithEmailAuthenticator'\n ];\n const values = { ...options };\n knownOptions.forEach(option => {\n delete values[option];\n });\n return values;\n}\n\nfunction initializeData(authClient, data: RunData): RunData {\n const { options } = data;\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 return { \n ...data,\n options: { ...options, flow, withCredentials, remediators, actions },\n status\n };\n}\n\nasync function getDataFromIntrospect(authClient, data: RunData): Promise {\n const { options } = data;\n const {\n stateHandle,\n withCredentials,\n version,\n state,\n scopes,\n recoveryToken,\n activationToken\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 }); \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(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 shouldProceedWithEmailAuthenticator, // will be removed in next major version\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(idxResponse!, values, {\n remediators,\n actions,\n flow,\n step,\n shouldProceedWithEmailAuthenticator, // will be removed in next major version\n });\n idxResponse = idxResponseFromRemediation;\n\n return { ...data, idxResponse, nextStep, canceled };\n}\n\nasync function getTokens(authClient, 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, 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(idxResponse);\n messages = getMessagesFromResponse(idxResponse);\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 // only save response if there are actions available (ignore messages)\n shouldSaveResponse = 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\nfunction handleError(err, data: RunData): RunData {\n let { error, status, shouldClearTransaction } = data;\n\n // current version of idx-js will throw/reject IDX responses. Handle these differently than regular errors\n if (isIdxResponse(err)) {\n error = err;\n status = IdxStatus.FAILURE;\n shouldClearTransaction = true;\n } else {\n // error is not an IDX response, throw it like a regular error\n throw err;\n }\n\n return { ...data, error, status, shouldClearTransaction };\n}\n\nexport async function run(\n authClient: OktaAuthInterface, \n options: RunOptions = {},\n): Promise {\n let data: RunData = {\n options,\n values: initializeValues(options)\n };\n\n data = initializeData(authClient, data);\n try {\n data = await getDataFromIntrospect(authClient, data);\n data = await getDataFromRemediate(data);\n } catch (err) {\n data = handleError(err, data);\n }\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 OktaAuthInterface,\n IdxTransaction,\n AuthenticatorKey,\n AuthenticationOptions\n} from '../types';\nimport { run } from './run';\n\nexport async function authenticate(\n authClient: OktaAuthInterface, 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","/*!\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 { OktaAuthInterface, CancelOptions, IdxTransactionMeta } from '../types';\nimport { run } from './run';\nimport { getFlowSpecification } from './flow';\n\nexport async function cancel (authClient: OktaAuthInterface, 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/*!\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 { OktaAuthInterface } from '../types';\n\nimport CustomError from '../errors/CustomError';\nimport { urlParamsToObject } from '../oidc/util/urlParams';\n\nexport interface EmailVerifyCallbackResponse {\n state: string;\n otp: string;\n}\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: OktaAuthInterface, 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 { \n OktaAuthInterface,\n IdxTransaction,\n ProceedOptions,\n} from '../types';\nimport { run } from './run';\nimport { getSavedTransactionMeta } from './transactionMeta';\nimport { AuthSdkError } from '../errors';\n\nexport function canProceed(authClient: OktaAuthInterface, options: ProceedOptions = {}): boolean {\n const meta = getSavedTransactionMeta(authClient, options);\n return !!(meta || options.stateHandle);\n}\n\nexport async function proceed(\n authClient: OktaAuthInterface,\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 OktaAuthInterface,\n} from '../types';\nimport { getSavedTransactionMeta } from './transactionMeta';\nimport { warn } from '../util';\n\nexport async function poll(authClient: OktaAuthInterface, 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 { OktaAuthInterface, IdxTransaction, StartOptions } from '../types';\n\nexport async function startTransaction(\n authClient: OktaAuthInterface, \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 OktaAuthInterface, \n IdxFeature,\n} from '../types';\n\nexport async function register(\n authClient: OktaAuthInterface, options: RegistrationOptions = {}\n): Promise {\n\n // Only check at the beginning of the transaction\n if (!hasSavedInteractionHandle(authClient)) {\n const { enabledFeatures, availableSteps } = await startTransaction(authClient, {\n ...options,\n flow: 'register',\n autoRemediate: false\n });\n if (!options.activationToken && enabledFeatures && !enabledFeatures.includes(IdxFeature.REGISTRATION)) {\n const error = new AuthSdkError('Registration is not supported based on your current org configuration.');\n throw error;\n // return { status: IdxStatus.FAILURE, error } as unknown as IdxTransaction; // TODO: wny not just throw the error?\n }\n if (options.activationToken && availableSteps?.some(({ name }) => name === 'identify')) {\n const error = new AuthSdkError('activationToken is not supported based on your current org configuration.');\n throw error;\n // return { status: IdxStatus.FAILURE, error } as unknown as IdxTransaction; // TODO: wny not just throw the error?\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 OktaAuthInterface, \n PasswordRecoveryOptions, \n IdxTransaction,\n} from '../types';\n\nexport async function recoverPassword(\n authClient: OktaAuthInterface, 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 { AuthSdkError, OAuthError } from '../errors';\nimport { OktaAuth } from '..';\nimport {IdxTransactionMeta} from '../types';\n\nexport async function handleInteractionCodeRedirect(\n authClient: OktaAuth, \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 { run } from './run';\nimport { hasSavedInteractionHandle } from './transactionMeta';\nimport { startTransaction } from './startTransaction';\nimport { AuthSdkError } from '../errors';\nimport { \n OktaAuthInterface, \n AccountUnlockOptions, \n IdxTransaction,\n IdxFeature,\n} from '../types';\n\nexport async function unlockAccount(\n authClient: OktaAuthInterface, 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","/* 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 { OktaAuthInterface, IdxTransactionMeta, TransactionMetaOptions, PKCETransactionMeta } from '../types';\nimport { removeNils, warn } from '../util';\nimport { createOAuthMeta } from '../oidc';\n\n// Calculate new values\nexport async function createTransactionMeta(\n authClient: OktaAuthInterface,\n options: TransactionMetaOptions = {}\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 } = { ...authClient.options, ...options }; // local options override SDK options\n\n const meta: IdxTransactionMeta = {\n ...pkceMeta,\n flow,\n withCredentials,\n activationToken,\n recoveryToken,\n };\n return meta;\n}\n\nexport function hasSavedInteractionHandle(authClient: OktaAuthInterface, options?: TransactionMetaOptions): 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: OktaAuthInterface,\n options?: TransactionMetaOptions\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: OktaAuthInterface,\n options?: TransactionMetaOptions\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: OktaAuthInterface, meta): void {\n authClient.transactionManager.save(meta, { muteWarning: true });\n}\n\nexport function clearTransactionMeta (authClient: OktaAuthInterface): void {\n authClient.transactionManager.clear();\n}\n\nexport function isTransactionMetaValid (meta, options: TransactionMetaOptions = {}): 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","/* 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\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}\n\nexport interface IdxForm {\n value: IdxRemediationValue[];\n}\n\nexport interface IdxOption {\n value: string | { form: IdxForm };\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}\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 refresh?: number;\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 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 app: {\n type: string;\n value: Record;\n };\n messages?: IdxMessages;\n success?: IdxRemediation;\n failure?: IdxRemediation;\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}\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;\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","import { APIError } from '../../types/api';\nimport { Tokens } from '../../types/Token';\nimport { PKCETransactionMeta } from '../../types/Transaction';\nimport { FlowIdentifier } from './FlowIdentifier';\nimport {\n IdxActions,\n IdxAuthenticator,\n IdxContext,\n IdxForm,\n IdxMessage,\n IdxOption,\n IdxRemediation,\n IdxResponse,\n RawIdxResponse\n} from './idx-js';\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};\n minLength?: number;\n maxLength?: number;\n secret?: boolean;\n required?: 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 options?: IdxOption[];\n poll?: IdxPollOptions;\n authenticatorEnrollments?: IdxAuthenticator[];\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\nexport interface IdxTransactionMeta extends PKCETransactionMeta {\n interactionHandle?: string;\n remediations?: string[];\n flow?: FlowIdentifier;\n withCredentials?: boolean;\n activationToken?: string;\n recoveryToken?: string;\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};\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","/*!\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 * 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 } 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(sdk, options: TokenParams, refreshToken: RefreshToken): 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 { OktaAuthInterface, WellKnownResponse } from '../../types';\nimport AuthSdkError from '../../errors/AuthSdkError';\n\nexport function getWellKnown(sdk: OktaAuthInterface, 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: OktaAuthInterface, 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 @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, OktaAuthInterface, 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: OktaAuthInterface, 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 } = 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 };\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}","/* 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 OktaAuthInterface,\n TokenVerifyParams,\n IDToken,\n OAuthResponse,\n TokenParams,\n TokenResponse,\n CustomUrls,\n Tokens,\n} from '../types';\nimport { exchangeCodeForTokens } from './exchangeCodeForTokens';\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: OktaAuthInterface,\n tokenParams: TokenParams,\n res: OAuthResponse,\n urls?: CustomUrls\n): Promise {\n var 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 exchangeCodeForTokens(sdk, 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 var responseType = tokenParams.responseType || [];\n if (!Array.isArray(responseType)) {\n responseType = [responseType];\n }\n\n var scopes;\n if (res.scope) {\n scopes = res.scope.split(' ');\n } else {\n scopes = clone(tokenParams.scopes);\n }\n var clientId = tokenParams.clientId || sdk.options.clientId;\n\n // Handling the result from implicit flow or PKCE token exchange\n validateResponse(res, tokenParams);\n\n var tokenDict = {} as Tokens;\n var expiresIn = res.expires_in;\n var tokenType = res.token_type;\n var accessToken = res.access_token;\n var idToken = res.id_token;\n var refreshToken = res.refresh_token;\n var now = Math.floor(Date.now()/1000);\n\n if (accessToken) {\n var 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 var idJwt = sdk.token.decode(idToken);\n var 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 var validationParams: TokenVerifyParams = {\n clientId: clientId!,\n issuer: urls.issuer!,\n nonce: tokenParams.nonce,\n accessToken: accessToken\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 };\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 { 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 };\n oauthParams = removeNils(oauthParams) as OAuthParams;\n\n ['idp_scope', 'response_type'].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 {\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 * 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 OktaAuthInterface,\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: OktaAuthInterface, 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/* 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 OktaAuthInterface,\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: OktaAuthInterface, 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 { OktaAuthInterface, TokenParams, TokenResponse } from '../types';\nimport { clone } from '../util';\nimport { getToken } from './getToken';\n\nexport function getWithoutPrompt(sdk: OktaAuthInterface, 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 { getOAuthUrls } from './util/oauth';\nimport { isSameRefreshToken } from './util/refreshToken';\nimport { OktaAuthInterface, TokenParams, RefreshToken, Tokens } from '../types';\nimport { handleOAuthResponse } from './handleOAuthResponse';\nimport { postRefreshToken } from './endpoints/token';\n\nexport async function renewTokensWithRefresh(\n sdk: OktaAuthInterface,\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 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","/*!\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 { OktaAuthInterface, 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: OktaAuthInterface, 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 { TokenParams, 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?: TokenParams): Promise {\n const 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","/* 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 } from '../types';\n\nexport async function getUserInfo(sdk, accessTokenObject: AccessToken, idTokenObject: IDToken): 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","/*!\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 { OktaAuthInterface, TokenParams, TokenResponse } from '../types';\nimport { clone } from '../util';\nimport { getToken } from './getToken';\nimport { loadPopup } from './util';\n\nexport function getWithPopup(sdk: OktaAuthInterface, 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 { OktaAuthInterface, TokenParams } from '../types';\nimport { clone } from '../util';\nimport { prepareTokenParams, createOAuthMeta } from './util';\nimport { buildAuthorizeParams } from './endpoints/authorize';\n\nexport async function getWithRedirect(sdk: OktaAuthInterface, 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, { oauth: true });\n sdk.token.getWithRedirect._setLocation(requestUrl);\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 oauth: true,\n pkce: sdk.options.pkce,\n state\n });\n if (!oauthParams) {\n return Promise.reject(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/* 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 { OktaAuthInterface, TokenParams } from '../../types';\nimport { isBrowser } from '../../features';\nimport { removeNils } from '../../util';\n\nexport function getDefaultTokenParams(sdk: OktaAuthInterface): TokenParams {\n const {\n pkce,\n clientId,\n redirectUri,\n responseType,\n responseMode,\n scopes,\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 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/* global window, document */\n/* eslint-disable complexity, max-statements */\nimport { AuthSdkError } from '../../errors';\nimport { OktaAuthInterface } 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: OktaAuthInterface, 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","/*!\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 { OktaAuthInterface } from '../../types';\nimport { OAuthError, AuthApiError } 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: OktaAuthInterface, 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","/*!\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 { OktaAuthInterface, OktaAuthOptions } 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: OktaAuthInterface): 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: OktaAuthOptions) {\n return options.pkce || options.responseType === 'code' || options.responseMode === 'query';\n}\n\nexport function getHashOrSearch(options: OktaAuthOptions) {\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: OktaAuthInterface) {\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: OktaAuthInterface, 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}","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { OAuthTransactionMeta, OktaAuthInterface, PKCETransactionMeta, TokenParams } from '../../types';\nimport { getOAuthUrls } from './oauth';\n\nexport function createOAuthMeta(\n sdk: OktaAuthInterface, \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 };\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","/* 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 { OktaAuthInterface, TokenVerifyParams, UserClaims } from '../../types';\n\nexport function validateClaims(sdk: OktaAuthInterface, claims: UserClaims, validationParams: TokenVerifyParams) {\n var aud = validationParams.clientId;\n var iss = validationParams.issuer;\n var nonce = validationParams.nonce;\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 var 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 (claims.aud !== aud) {\n throw new AuthSdkError('The audience [' + claims.aud + '] ' +\n 'does not match [' + aud + ']');\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 complexity */\n\nimport { AuthSdkError } from '../../errors';\nimport { isAccessToken, isIDToken, isRefreshToken, Token, TokenType } from '../../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 */\n/* eslint-disable complexity, max-statements */\nimport { genRandomString, removeTrailingSlash } from '../../util';\nimport AuthSdkError from '../../errors/AuthSdkError';\nimport { OktaAuthInterface, 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: OktaAuthInterface, options: CustomUrls = {}) {\n const issuer = removeTrailingSlash(options.issuer) || sdk.options.issuer;\n return issuer;\n}\n\nexport function getOAuthBaseUrl(sdk: OktaAuthInterface, 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: OktaAuthInterface, options: CustomUrls = {}) {\n const issuer = getIssuer(sdk, options);\n const domain = issuer.split('/oauth2')[0];\n return domain;\n}\n\nexport function getOAuthUrls(sdk: OktaAuthInterface, 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","/*!\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","/* 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 { OktaAuthInterface, TokenParams } from '../../types';\nimport { getDefaultTokenParams } from './defaultTokenParams';\nimport { DEFAULT_CODE_CHALLENGE_METHOD } from '../../constants';\nimport PKCE from './pkce';\n\nexport function assertPKCESupport(sdk: OktaAuthInterface) {\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: OktaAuthInterface, 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: OktaAuthInterface, \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: OktaAuthInterface,\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}","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 */\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","/* 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, OktaAuthInterface, TokenVerifyParams } from '../types';\nimport { decodeToken } from './decodeToken';\nimport * as sdkCrypto from '../crypto';\n\n// Verify the id token\nexport async function verifyToken(sdk: OktaAuthInterface, 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 var 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 var 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","/*!\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 { get } from '../http';\nimport { find, omit, toQueryString, clone, isObject } from '../util';\nimport AuthSdkError from '../errors/AuthSdkError';\nimport { TransactionState } from './TransactionState';\nimport { addStateToken } from './util';\nimport { getPollFn } from './poll';\nimport { postToTransaction } from './api';\nimport { IdxStatus } from '../idx/types';\n\ninterface PostToTransactionParams {\n autoPush?: boolean;\n rememberDevice?: boolean;\n updatePhone?: boolean;\n}\n\n// eslint-disable-next-line no-use-before-define\ntype AuthTransactionFunction = (obj?: any) => Promise;\n\ninterface AuthTransactionFunctions {\n // common\n next?: AuthTransactionFunction;\n cancel?: AuthTransactionFunction;\n skip?: AuthTransactionFunction;\n // locked_out\n unlock?: AuthTransactionFunction;\n // password\n changePassword?: AuthTransactionFunction;\n resetPassword?: AuthTransactionFunction;\n // recovery\n answer?: AuthTransactionFunction;\n recovery?: AuthTransactionFunction;\n // recovery_challenge\n verify?: AuthTransactionFunction;\n resend?: AuthTransactionFunction;\n // mfa_enroll_activate\n activate?: AuthTransactionFunction;\n poll?: AuthTransactionFunction;\n prev?: AuthTransactionFunction;\n}\n\nexport class AuthTransaction implements TransactionState, AuthTransactionFunctions {\n next?: AuthTransactionFunction;\n cancel?: AuthTransactionFunction;\n skip?: AuthTransactionFunction;\n unlock?: AuthTransactionFunction;\n changePassword?: AuthTransactionFunction;\n resetPassword?: AuthTransactionFunction;\n answer?: AuthTransactionFunction;\n recovery?: AuthTransactionFunction;\n verify?: AuthTransactionFunction;\n resend?: AuthTransactionFunction;\n activate?: AuthTransactionFunction;\n poll?: AuthTransactionFunction;\n prev?: AuthTransactionFunction;\n\n data?: TransactionState;\n stateToken?: string;\n sessionToken?: string;\n status: string | IdxStatus;\n user?: Record;\n factor?: Record;\n factors?: Array >;\n policy?: Record;\n scopes?: Array >;\n target?: Record;\n authentication?: Record;\n constructor(sdk, res: TransactionState | null = null) {\n this.data = undefined;\n this.status = undefined as unknown as string;\n if (res) {\n this.data = res;\n\n if (this.data.interactionHandle) {\n this.status = res.status;\n return;\n }\n\n // Parse response from Authn V1\n Object.assign(this, flattenEmbedded(sdk, 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(new AuthTransaction(sdk));\n };\n }\n }\n }\n}\n\nfunction link2fn(sdk, 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, 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: TransactionState) {\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, href, data);\n };\n }\n }\n}\n\nfunction links2fns(sdk, res, obj, ref) {\n var fns = {} as AuthTransactionFunctions;\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, res, obj, link, ref);\n if (fn) {\n fns[linkName] = fn;\n }\n }\n }\n return fns;\n}\n\n// eslint-disable-next-line complexity\nfunction flattenEmbedded(sdk, 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, 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, res, embedded[key], ref);\n }\n }\n\n // Convert any links on the embedded object\n var fns = links2fns(sdk, 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","/*!\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 { addStateToken } from './util';\nimport { AuthTransaction } from './AuthTransaction';\n\nexport function transactionStatus(sdk, args) {\n args = addStateToken(sdk, args);\n return post(sdk, sdk.getIssuerOrigin() + '/api/v1/authn', args, { withCredentials: true });\n}\n\nexport function resumeTransaction(sdk, args) {\n if (!args || !args.stateToken) {\n var stateToken = sdk.tx.exists._get(STATE_TOKEN_KEY_NAME);\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 sdk.tx.status(args)\n .then(function(res) {\n return new AuthTransaction(sdk, res);\n });\n}\n\nexport function introspectAuthn (sdk, args) {\n if (!args || !args.stateToken) {\n var stateToken = sdk.tx.exists._get(STATE_TOKEN_KEY_NAME);\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 new AuthTransaction(sdk, res);\n });\n}\n\nexport function transactionStep(sdk, 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) {\n // We have a cookie state token\n return !!sdk.tx.exists._get(STATE_TOKEN_KEY_NAME);\n}\n\nexport function postToTransaction(sdk, url, args, options?) {\n options = Object.assign({ withCredentials: true }, options);\n return post(sdk, url, args, options)\n .then(function(res) {\n return new AuthTransaction(sdk, res);\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 { TransactionState } from './TransactionState';\nimport { AuthTransaction } from './AuthTransaction';\nimport { getStateToken } from './util';\n\nexport interface PollOptions {\n delay?: number;\n rememberDevice?: boolean;\n autoPush?: boolean;\n transactionCallBack?: (TransactionState) => void;\n}\n\nexport function getPollFn(sdk, res: TransactionState, 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 new AuthTransaction(sdk, 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","/*!\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 { TransactionState } from './TransactionState';\n\nexport function addStateToken(res, options?) {\n var builtArgs = {} as TransactionState;\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\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';\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","/*!\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 { StorageManager } from '../StorageManager';\nimport { CustomUrls, TokenParams } from './OktaAuthOptions';\nimport { IdxTransactionMeta } from '../idx/types';\n\nexport interface TransactionManagerOptions {\n storageManager?: StorageManager;\n enableSharedStorage?: boolean; // default true\n legacyWidgetSupport?: 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// formerly known as \"Redirect OAuth Params\"\nexport interface OAuthTransactionMeta extends\n Pick\n{\n urls: CustomUrls;\n originalUri?: string;\n}\n\nexport interface PKCETransactionMeta extends\n OAuthTransactionMeta,\n Pick\n{}\n\nexport type CustomAuthTransactionMeta = Record;\n\nexport type TransactionMeta =\n IdxTransactionMeta |\n PKCETransactionMeta |\n OAuthTransactionMeta |\n CustomAuthTransactionMeta;\n\nexport interface TransactionMetaOptions extends\n Pick\n{\n oauth?: boolean;\n muteWarning?: boolean;\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","/*!\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 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 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","/*!\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 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 function isAbsoluteUrl(url) {\n return /^(?:[a-z]+:)?\\/\\//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","'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 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","module.exports = false;\n\n","/**\n * Copyright (c) 2014-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\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","function E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\n","export default function _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++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\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\n return self;\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\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\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\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","export default function _defineProperty(obj, key, value) {\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\n return obj;\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _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}","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\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\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\n return target;\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\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\n return target;\n}","import _typeof from \"@babel/runtime/helpers/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","export default function _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}","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(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\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}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _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}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\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}","// 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 = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(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 = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(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};","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","import * as base from './handlebars/base';\n\n// Each of these augment the Handlebars object. No need to setup here.\n// (This is done to easily share code between commonjs and browse envs)\nimport SafeString from './handlebars/safe-string';\nimport Exception from './handlebars/exception';\nimport * as Utils from './handlebars/utils';\nimport * as runtime from './handlebars/runtime';\n\nimport noConflict from './handlebars/no-conflict';\n\n// For compatibility and usage outside of module systems, make the Handlebars object a namespace\nfunction create() {\n let hb = new base.HandlebarsEnvironment();\n\n Utils.extend(hb, base);\n hb.SafeString = SafeString;\n hb.Exception = Exception;\n hb.Utils = Utils;\n hb.escapeExpression = Utils.escapeExpression;\n\n hb.VM = runtime;\n hb.template = function(spec) {\n return runtime.template(spec, hb);\n };\n\n return hb;\n}\n\nlet inst = create();\ninst.create = create;\n\nnoConflict(inst);\n\ninst['default'] = inst;\n\nexport default inst;\n","import { createFrame, extend, toString } from './utils';\nimport Exception from './exception';\nimport { registerDefaultHelpers } from './helpers';\nimport { registerDefaultDecorators } from './decorators';\nimport logger from './logger';\nimport { resetLoggedProperties } from './internal/proto-access';\n\nexport const VERSION = '4.7.7';\nexport const COMPILER_REVISION = 8;\nexport const LAST_COMPATIBLE_COMPILER_REVISION = 7;\n\nexport const REVISION_CHANGES = {\n 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it\n 2: '== 1.0.0-rc.3',\n 3: '== 1.0.0-rc.4',\n 4: '== 1.x.x',\n 5: '== 2.0.0-alpha.x',\n 6: '>= 2.0.0-beta.1',\n 7: '>= 4.0.0 <4.3.0',\n 8: '>= 4.3.0'\n};\n\nconst objectType = '[object Object]';\n\nexport function HandlebarsEnvironment(helpers, partials, decorators) {\n this.helpers = helpers || {};\n this.partials = partials || {};\n this.decorators = decorators || {};\n\n registerDefaultHelpers(this);\n registerDefaultDecorators(this);\n}\n\nHandlebarsEnvironment.prototype = {\n constructor: HandlebarsEnvironment,\n\n logger: logger,\n log: logger.log,\n\n registerHelper: function(name, fn) {\n if (toString.call(name) === objectType) {\n if (fn) {\n throw new Exception('Arg not supported with multiple helpers');\n }\n extend(this.helpers, name);\n } else {\n this.helpers[name] = fn;\n }\n },\n unregisterHelper: function(name) {\n delete this.helpers[name];\n },\n\n registerPartial: function(name, partial) {\n if (toString.call(name) === objectType) {\n extend(this.partials, name);\n } else {\n if (typeof partial === 'undefined') {\n throw new Exception(\n `Attempting to register a partial called \"${name}\" as undefined`\n );\n }\n this.partials[name] = partial;\n }\n },\n unregisterPartial: function(name) {\n delete this.partials[name];\n },\n\n registerDecorator: function(name, fn) {\n if (toString.call(name) === objectType) {\n if (fn) {\n throw new Exception('Arg not supported with multiple decorators');\n }\n extend(this.decorators, name);\n } else {\n this.decorators[name] = fn;\n }\n },\n unregisterDecorator: function(name) {\n delete this.decorators[name];\n },\n /**\n * Reset the memory of illegal property accesses that have already been logged.\n * @deprecated should only be used in handlebars test-cases\n */\n resetLoggedPropertyAccesses() {\n resetLoggedProperties();\n }\n};\n\nexport let log = logger.log;\n\nexport { createFrame, logger };\n","import registerInline from './decorators/inline';\n\nexport function registerDefaultDecorators(instance) {\n registerInline(instance);\n}\n","import { extend } from '../utils';\n\nexport default function(instance) {\n instance.registerDecorator('inline', function(fn, props, container, options) {\n let ret = fn;\n if (!props.partials) {\n props.partials = {};\n ret = function(context, options) {\n // Create a new partials stack frame prior to exec.\n let original = container.partials;\n container.partials = extend({}, original, props.partials);\n let ret = fn(context, options);\n container.partials = original;\n return ret;\n };\n }\n\n props.partials[options.args[0]] = options.fn;\n\n return ret;\n });\n}\n","const errorProps = [\n 'description',\n 'fileName',\n 'lineNumber',\n 'endLineNumber',\n 'message',\n 'name',\n 'number',\n 'stack'\n];\n\nfunction Exception(message, node) {\n let loc = node && node.loc,\n line,\n endLineNumber,\n column,\n endColumn;\n\n if (loc) {\n line = loc.start.line;\n endLineNumber = loc.end.line;\n column = loc.start.column;\n endColumn = loc.end.column;\n\n message += ' - ' + line + ':' + column;\n }\n\n let tmp = Error.prototype.constructor.call(this, message);\n\n // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n for (let idx = 0; idx < errorProps.length; idx++) {\n this[errorProps[idx]] = tmp[errorProps[idx]];\n }\n\n /* istanbul ignore else */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, Exception);\n }\n\n try {\n if (loc) {\n this.lineNumber = line;\n this.endLineNumber = endLineNumber;\n\n // Work around issue under safari where we can't directly set the column value\n /* istanbul ignore next */\n if (Object.defineProperty) {\n Object.defineProperty(this, 'column', {\n value: column,\n enumerable: true\n });\n Object.defineProperty(this, 'endColumn', {\n value: endColumn,\n enumerable: true\n });\n } else {\n this.column = column;\n this.endColumn = endColumn;\n }\n }\n } catch (nop) {\n /* Ignore if the browser is very particular */\n }\n}\n\nException.prototype = new Error();\n\nexport default Exception;\n","import registerBlockHelperMissing from './helpers/block-helper-missing';\nimport registerEach from './helpers/each';\nimport registerHelperMissing from './helpers/helper-missing';\nimport registerIf from './helpers/if';\nimport registerLog from './helpers/log';\nimport registerLookup from './helpers/lookup';\nimport registerWith from './helpers/with';\n\nexport function registerDefaultHelpers(instance) {\n registerBlockHelperMissing(instance);\n registerEach(instance);\n registerHelperMissing(instance);\n registerIf(instance);\n registerLog(instance);\n registerLookup(instance);\n registerWith(instance);\n}\n\nexport function moveHelperToHooks(instance, helperName, keepHelper) {\n if (instance.helpers[helperName]) {\n instance.hooks[helperName] = instance.helpers[helperName];\n if (!keepHelper) {\n delete instance.helpers[helperName];\n }\n }\n}\n","import { appendContextPath, createFrame, isArray } from '../utils';\n\nexport default function(instance) {\n instance.registerHelper('blockHelperMissing', function(context, options) {\n let inverse = options.inverse,\n fn = options.fn;\n\n if (context === true) {\n return fn(this);\n } else if (context === false || context == null) {\n return inverse(this);\n } else if (isArray(context)) {\n if (context.length > 0) {\n if (options.ids) {\n options.ids = [options.name];\n }\n\n return instance.helpers.each(context, options);\n } else {\n return inverse(this);\n }\n } else {\n if (options.data && options.ids) {\n let data = createFrame(options.data);\n data.contextPath = appendContextPath(\n options.data.contextPath,\n options.name\n );\n options = { data: data };\n }\n\n return fn(context, options);\n }\n });\n}\n","import {\n appendContextPath,\n blockParams,\n createFrame,\n isArray,\n isFunction\n} from '../utils';\nimport Exception from '../exception';\n\nexport default function(instance) {\n instance.registerHelper('each', function(context, options) {\n if (!options) {\n throw new Exception('Must pass iterator to #each');\n }\n\n let fn = options.fn,\n inverse = options.inverse,\n i = 0,\n ret = '',\n data,\n contextPath;\n\n if (options.data && options.ids) {\n contextPath =\n appendContextPath(options.data.contextPath, options.ids[0]) + '.';\n }\n\n if (isFunction(context)) {\n context = context.call(this);\n }\n\n if (options.data) {\n data = createFrame(options.data);\n }\n\n function execIteration(field, index, last) {\n if (data) {\n data.key = field;\n data.index = index;\n data.first = index === 0;\n data.last = !!last;\n\n if (contextPath) {\n data.contextPath = contextPath + field;\n }\n }\n\n ret =\n ret +\n fn(context[field], {\n data: data,\n blockParams: blockParams(\n [context[field], field],\n [contextPath + field, null]\n )\n });\n }\n\n if (context && typeof context === 'object') {\n if (isArray(context)) {\n for (let j = context.length; i < j; i++) {\n if (i in context) {\n execIteration(i, i, i === context.length - 1);\n }\n }\n } else if (global.Symbol && context[global.Symbol.iterator]) {\n const newContext = [];\n const iterator = context[global.Symbol.iterator]();\n for (let it = iterator.next(); !it.done; it = iterator.next()) {\n newContext.push(it.value);\n }\n context = newContext;\n for (let j = context.length; i < j; i++) {\n execIteration(i, i, i === context.length - 1);\n }\n } else {\n let priorKey;\n\n Object.keys(context).forEach(key => {\n // We're running the iterations one step out of sync so we can detect\n // the last iteration without have to scan the object twice and create\n // an itermediate keys array.\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1);\n }\n priorKey = key;\n i++;\n });\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1, true);\n }\n }\n }\n\n if (i === 0) {\n ret = inverse(this);\n }\n\n return ret;\n });\n}\n","import Exception from '../exception';\n\nexport default function(instance) {\n instance.registerHelper('helperMissing', function(/* [args, ]options */) {\n if (arguments.length === 1) {\n // A missing field in a {{foo}} construct.\n return undefined;\n } else {\n // Someone is actually trying to call something, blow up.\n throw new Exception(\n 'Missing helper: \"' + arguments[arguments.length - 1].name + '\"'\n );\n }\n });\n}\n","import { isEmpty, isFunction } from '../utils';\nimport Exception from '../exception';\n\nexport default function(instance) {\n instance.registerHelper('if', function(conditional, options) {\n if (arguments.length != 2) {\n throw new Exception('#if requires exactly one argument');\n }\n if (isFunction(conditional)) {\n conditional = conditional.call(this);\n }\n\n // Default behavior is to render the positive path if the value is truthy and not empty.\n // The `includeZero` option may be set to treat the condtional as purely not empty based on the\n // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.\n if ((!options.hash.includeZero && !conditional) || isEmpty(conditional)) {\n return options.inverse(this);\n } else {\n return options.fn(this);\n }\n });\n\n instance.registerHelper('unless', function(conditional, options) {\n if (arguments.length != 2) {\n throw new Exception('#unless requires exactly one argument');\n }\n return instance.helpers['if'].call(this, conditional, {\n fn: options.inverse,\n inverse: options.fn,\n hash: options.hash\n });\n });\n}\n","export default function(instance) {\n instance.registerHelper('log', function(/* message, options */) {\n let args = [undefined],\n options = arguments[arguments.length - 1];\n for (let i = 0; i < arguments.length - 1; i++) {\n args.push(arguments[i]);\n }\n\n let level = 1;\n if (options.hash.level != null) {\n level = options.hash.level;\n } else if (options.data && options.data.level != null) {\n level = options.data.level;\n }\n args[0] = level;\n\n instance.log(...args);\n });\n}\n","export default function(instance) {\n instance.registerHelper('lookup', function(obj, field, options) {\n if (!obj) {\n // Note for 5.0: Change to \"obj == null\" in 5.0\n return obj;\n }\n return options.lookupProperty(obj, field);\n });\n}\n","import {\n appendContextPath,\n blockParams,\n createFrame,\n isEmpty,\n isFunction\n} from '../utils';\nimport Exception from '../exception';\n\nexport default function(instance) {\n instance.registerHelper('with', function(context, options) {\n if (arguments.length != 2) {\n throw new Exception('#with requires exactly one argument');\n }\n if (isFunction(context)) {\n context = context.call(this);\n }\n\n let fn = options.fn;\n\n if (!isEmpty(context)) {\n let data = options.data;\n if (options.data && options.ids) {\n data = createFrame(options.data);\n data.contextPath = appendContextPath(\n options.data.contextPath,\n options.ids[0]\n );\n }\n\n return fn(context, {\n data: data,\n blockParams: blockParams([context], [data && data.contextPath])\n });\n } else {\n return options.inverse(this);\n }\n });\n}\n","import { extend } from '../utils';\n\n/**\n * Create a new object with \"null\"-prototype to avoid truthy results on prototype properties.\n * The resulting object can be used with \"object[property]\" to check if a property exists\n * @param {...object} sources a varargs parameter of source objects that will be merged\n * @returns {object}\n */\nexport function createNewLookupObject(...sources) {\n return extend(Object.create(null), ...sources);\n}\n","import { createNewLookupObject } from './create-new-lookup-object';\nimport * as logger from '../logger';\n\nconst loggedProperties = Object.create(null);\n\nexport function createProtoAccessControl(runtimeOptions) {\n let defaultMethodWhiteList = Object.create(null);\n defaultMethodWhiteList['constructor'] = false;\n defaultMethodWhiteList['__defineGetter__'] = false;\n defaultMethodWhiteList['__defineSetter__'] = false;\n defaultMethodWhiteList['__lookupGetter__'] = false;\n\n let defaultPropertyWhiteList = Object.create(null);\n // eslint-disable-next-line no-proto\n defaultPropertyWhiteList['__proto__'] = false;\n\n return {\n properties: {\n whitelist: createNewLookupObject(\n defaultPropertyWhiteList,\n runtimeOptions.allowedProtoProperties\n ),\n defaultValue: runtimeOptions.allowProtoPropertiesByDefault\n },\n methods: {\n whitelist: createNewLookupObject(\n defaultMethodWhiteList,\n runtimeOptions.allowedProtoMethods\n ),\n defaultValue: runtimeOptions.allowProtoMethodsByDefault\n }\n };\n}\n\nexport function resultIsAllowed(result, protoAccessControl, propertyName) {\n if (typeof result === 'function') {\n return checkWhiteList(protoAccessControl.methods, propertyName);\n } else {\n return checkWhiteList(protoAccessControl.properties, propertyName);\n }\n}\n\nfunction checkWhiteList(protoAccessControlForType, propertyName) {\n if (protoAccessControlForType.whitelist[propertyName] !== undefined) {\n return protoAccessControlForType.whitelist[propertyName] === true;\n }\n if (protoAccessControlForType.defaultValue !== undefined) {\n return protoAccessControlForType.defaultValue;\n }\n logUnexpecedPropertyAccessOnce(propertyName);\n return false;\n}\n\nfunction logUnexpecedPropertyAccessOnce(propertyName) {\n if (loggedProperties[propertyName] !== true) {\n loggedProperties[propertyName] = true;\n logger.log(\n 'error',\n `Handlebars: Access has been denied to resolve the property \"${propertyName}\" because it is not an \"own property\" of its parent.\\n` +\n `You can add a runtime option to disable the check or this warning:\\n` +\n `See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details`\n );\n }\n}\n\nexport function resetLoggedProperties() {\n Object.keys(loggedProperties).forEach(propertyName => {\n delete loggedProperties[propertyName];\n });\n}\n","export function wrapHelper(helper, transformOptionsFn) {\n if (typeof helper !== 'function') {\n // This should not happen, but apparently it does in https://github.com/wycats/handlebars.js/issues/1639\n // We try to make the wrapper least-invasive by not wrapping it, if the helper is not a function.\n return helper;\n }\n let wrapper = function(/* dynamic arguments */) {\n const options = arguments[arguments.length - 1];\n arguments[arguments.length - 1] = transformOptionsFn(options);\n return helper.apply(this, arguments);\n };\n return wrapper;\n}\n","import { indexOf } from './utils';\n\nlet logger = {\n methodMap: ['debug', 'info', 'warn', 'error'],\n level: 'info',\n\n // Maps a given level value to the `methodMap` indexes above.\n lookupLevel: function(level) {\n if (typeof level === 'string') {\n let levelMap = indexOf(logger.methodMap, level.toLowerCase());\n if (levelMap >= 0) {\n level = levelMap;\n } else {\n level = parseInt(level, 10);\n }\n }\n\n return level;\n },\n\n // Can be overridden in the host environment\n log: function(level, ...message) {\n level = logger.lookupLevel(level);\n\n if (\n typeof console !== 'undefined' &&\n logger.lookupLevel(logger.level) <= level\n ) {\n let method = logger.methodMap[level];\n // eslint-disable-next-line no-console\n if (!console[method]) {\n method = 'log';\n }\n console[method](...message); // eslint-disable-line no-console\n }\n }\n};\n\nexport default logger;\n","export default function(Handlebars) {\n /* istanbul ignore next */\n let root = typeof global !== 'undefined' ? global : window,\n $Handlebars = root.Handlebars;\n /* istanbul ignore next */\n Handlebars.noConflict = function() {\n if (root.Handlebars === Handlebars) {\n root.Handlebars = $Handlebars;\n }\n return Handlebars;\n };\n}\n","import * as Utils from './utils';\nimport Exception from './exception';\nimport {\n COMPILER_REVISION,\n createFrame,\n LAST_COMPATIBLE_COMPILER_REVISION,\n REVISION_CHANGES\n} from './base';\nimport { moveHelperToHooks } from './helpers';\nimport { wrapHelper } from './internal/wrapHelper';\nimport {\n createProtoAccessControl,\n resultIsAllowed\n} from './internal/proto-access';\n\nexport function checkRevision(compilerInfo) {\n const compilerRevision = (compilerInfo && compilerInfo[0]) || 1,\n currentRevision = COMPILER_REVISION;\n\n if (\n compilerRevision >= LAST_COMPATIBLE_COMPILER_REVISION &&\n compilerRevision <= COMPILER_REVISION\n ) {\n return;\n }\n\n if (compilerRevision < LAST_COMPATIBLE_COMPILER_REVISION) {\n const runtimeVersions = REVISION_CHANGES[currentRevision],\n compilerVersions = REVISION_CHANGES[compilerRevision];\n throw new Exception(\n 'Template was precompiled with an older version of Handlebars than the current runtime. ' +\n 'Please update your precompiler to a newer version (' +\n runtimeVersions +\n ') or downgrade your runtime to an older version (' +\n compilerVersions +\n ').'\n );\n } else {\n // Use the embedded version info since the runtime doesn't know about this revision yet\n throw new Exception(\n 'Template was precompiled with a newer version of Handlebars than the current runtime. ' +\n 'Please update your runtime to a newer version (' +\n compilerInfo[1] +\n ').'\n );\n }\n}\n\nexport function template(templateSpec, env) {\n /* istanbul ignore next */\n if (!env) {\n throw new Exception('No environment passed to template');\n }\n if (!templateSpec || !templateSpec.main) {\n throw new Exception('Unknown template object: ' + typeof templateSpec);\n }\n\n templateSpec.main.decorator = templateSpec.main_d;\n\n // Note: Using env.VM references rather than local var references throughout this section to allow\n // for external users to override these as pseudo-supported APIs.\n env.VM.checkRevision(templateSpec.compiler);\n\n // backwards compatibility for precompiled templates with compiler-version 7 (<4.3.0)\n const templateWasPrecompiledWithCompilerV7 =\n templateSpec.compiler && templateSpec.compiler[0] === 7;\n\n function invokePartialWrapper(partial, context, options) {\n if (options.hash) {\n context = Utils.extend({}, context, options.hash);\n if (options.ids) {\n options.ids[0] = true;\n }\n }\n partial = env.VM.resolvePartial.call(this, partial, context, options);\n\n let extendedOptions = Utils.extend({}, options, {\n hooks: this.hooks,\n protoAccessControl: this.protoAccessControl\n });\n\n let result = env.VM.invokePartial.call(\n this,\n partial,\n context,\n extendedOptions\n );\n\n if (result == null && env.compile) {\n options.partials[options.name] = env.compile(\n partial,\n templateSpec.compilerOptions,\n env\n );\n result = options.partials[options.name](context, extendedOptions);\n }\n if (result != null) {\n if (options.indent) {\n let lines = result.split('\\n');\n for (let i = 0, l = lines.length; i < l; i++) {\n if (!lines[i] && i + 1 === l) {\n break;\n }\n\n lines[i] = options.indent + lines[i];\n }\n result = lines.join('\\n');\n }\n return result;\n } else {\n throw new Exception(\n 'The partial ' +\n options.name +\n ' could not be compiled when running in runtime-only mode'\n );\n }\n }\n\n // Just add water\n let container = {\n strict: function(obj, name, loc) {\n if (!obj || !(name in obj)) {\n throw new Exception('\"' + name + '\" not defined in ' + obj, {\n loc: loc\n });\n }\n return container.lookupProperty(obj, name);\n },\n lookupProperty: function(parent, propertyName) {\n let result = parent[propertyName];\n if (result == null) {\n return result;\n }\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return result;\n }\n\n if (resultIsAllowed(result, container.protoAccessControl, propertyName)) {\n return result;\n }\n return undefined;\n },\n lookup: function(depths, name) {\n const len = depths.length;\n for (let i = 0; i < len; i++) {\n let result = depths[i] && container.lookupProperty(depths[i], name);\n if (result != null) {\n return depths[i][name];\n }\n }\n },\n lambda: function(current, context) {\n return typeof current === 'function' ? current.call(context) : current;\n },\n\n escapeExpression: Utils.escapeExpression,\n invokePartial: invokePartialWrapper,\n\n fn: function(i) {\n let ret = templateSpec[i];\n ret.decorator = templateSpec[i + '_d'];\n return ret;\n },\n\n programs: [],\n program: function(i, data, declaredBlockParams, blockParams, depths) {\n let programWrapper = this.programs[i],\n fn = this.fn(i);\n if (data || depths || blockParams || declaredBlockParams) {\n programWrapper = wrapProgram(\n this,\n i,\n fn,\n data,\n declaredBlockParams,\n blockParams,\n depths\n );\n } else if (!programWrapper) {\n programWrapper = this.programs[i] = wrapProgram(this, i, fn);\n }\n return programWrapper;\n },\n\n data: function(value, depth) {\n while (value && depth--) {\n value = value._parent;\n }\n return value;\n },\n mergeIfNeeded: function(param, common) {\n let obj = param || common;\n\n if (param && common && param !== common) {\n obj = Utils.extend({}, common, param);\n }\n\n return obj;\n },\n // An empty object to use as replacement for null-contexts\n nullContext: Object.seal({}),\n\n noop: env.VM.noop,\n compilerInfo: templateSpec.compiler\n };\n\n function ret(context, options = {}) {\n let data = options.data;\n\n ret._setup(options);\n if (!options.partial && templateSpec.useData) {\n data = initData(context, data);\n }\n let depths,\n blockParams = templateSpec.useBlockParams ? [] : undefined;\n if (templateSpec.useDepths) {\n if (options.depths) {\n depths =\n context != options.depths[0]\n ? [context].concat(options.depths)\n : options.depths;\n } else {\n depths = [context];\n }\n }\n\n function main(context /*, options*/) {\n return (\n '' +\n templateSpec.main(\n container,\n context,\n container.helpers,\n container.partials,\n data,\n blockParams,\n depths\n )\n );\n }\n\n main = executeDecorators(\n templateSpec.main,\n main,\n container,\n options.depths || [],\n data,\n blockParams\n );\n return main(context, options);\n }\n\n ret.isTop = true;\n\n ret._setup = function(options) {\n if (!options.partial) {\n let mergedHelpers = Utils.extend({}, env.helpers, options.helpers);\n wrapHelpersToPassLookupProperty(mergedHelpers, container);\n container.helpers = mergedHelpers;\n\n if (templateSpec.usePartial) {\n // Use mergeIfNeeded here to prevent compiling global partials multiple times\n container.partials = container.mergeIfNeeded(\n options.partials,\n env.partials\n );\n }\n if (templateSpec.usePartial || templateSpec.useDecorators) {\n container.decorators = Utils.extend(\n {},\n env.decorators,\n options.decorators\n );\n }\n\n container.hooks = {};\n container.protoAccessControl = createProtoAccessControl(options);\n\n let keepHelperInHelpers =\n options.allowCallsToHelperMissing ||\n templateWasPrecompiledWithCompilerV7;\n moveHelperToHooks(container, 'helperMissing', keepHelperInHelpers);\n moveHelperToHooks(container, 'blockHelperMissing', keepHelperInHelpers);\n } else {\n container.protoAccessControl = options.protoAccessControl; // internal option\n container.helpers = options.helpers;\n container.partials = options.partials;\n container.decorators = options.decorators;\n container.hooks = options.hooks;\n }\n };\n\n ret._child = function(i, data, blockParams, depths) {\n if (templateSpec.useBlockParams && !blockParams) {\n throw new Exception('must pass block params');\n }\n if (templateSpec.useDepths && !depths) {\n throw new Exception('must pass parent depths');\n }\n\n return wrapProgram(\n container,\n i,\n templateSpec[i],\n data,\n 0,\n blockParams,\n depths\n );\n };\n return ret;\n}\n\nexport function wrapProgram(\n container,\n i,\n fn,\n data,\n declaredBlockParams,\n blockParams,\n depths\n) {\n function prog(context, options = {}) {\n let currentDepths = depths;\n if (\n depths &&\n context != depths[0] &&\n !(context === container.nullContext && depths[0] === null)\n ) {\n currentDepths = [context].concat(depths);\n }\n\n return fn(\n container,\n context,\n container.helpers,\n container.partials,\n options.data || data,\n blockParams && [options.blockParams].concat(blockParams),\n currentDepths\n );\n }\n\n prog = executeDecorators(fn, prog, container, depths, data, blockParams);\n\n prog.program = i;\n prog.depth = depths ? depths.length : 0;\n prog.blockParams = declaredBlockParams || 0;\n return prog;\n}\n\n/**\n * This is currently part of the official API, therefore implementation details should not be changed.\n */\nexport function resolvePartial(partial, context, options) {\n if (!partial) {\n if (options.name === '@partial-block') {\n partial = options.data['partial-block'];\n } else {\n partial = options.partials[options.name];\n }\n } else if (!partial.call && !options.name) {\n // This is a dynamic partial that returned a string\n options.name = partial;\n partial = options.partials[partial];\n }\n return partial;\n}\n\nexport function invokePartial(partial, context, options) {\n // Use the current closure context to save the partial-block if this partial\n const currentPartialBlock = options.data && options.data['partial-block'];\n options.partial = true;\n if (options.ids) {\n options.data.contextPath = options.ids[0] || options.data.contextPath;\n }\n\n let partialBlock;\n if (options.fn && options.fn !== noop) {\n options.data = createFrame(options.data);\n // Wrapper function to get access to currentPartialBlock from the closure\n let fn = options.fn;\n partialBlock = options.data['partial-block'] = function partialBlockWrapper(\n context,\n options = {}\n ) {\n // Restore the partial-block from the closure for the execution of the block\n // i.e. the part inside the block of the partial call.\n options.data = createFrame(options.data);\n options.data['partial-block'] = currentPartialBlock;\n return fn(context, options);\n };\n if (fn.partials) {\n options.partials = Utils.extend({}, options.partials, fn.partials);\n }\n }\n\n if (partial === undefined && partialBlock) {\n partial = partialBlock;\n }\n\n if (partial === undefined) {\n throw new Exception('The partial ' + options.name + ' could not be found');\n } else if (partial instanceof Function) {\n return partial(context, options);\n }\n}\n\nexport function noop() {\n return '';\n}\n\nfunction initData(context, data) {\n if (!data || !('root' in data)) {\n data = data ? createFrame(data) : {};\n data.root = context;\n }\n return data;\n}\n\nfunction executeDecorators(fn, prog, container, depths, data, blockParams) {\n if (fn.decorator) {\n let props = {};\n prog = fn.decorator(\n prog,\n props,\n container,\n depths && depths[0],\n data,\n blockParams,\n depths\n );\n Utils.extend(prog, props);\n }\n return prog;\n}\n\nfunction wrapHelpersToPassLookupProperty(mergedHelpers, container) {\n Object.keys(mergedHelpers).forEach(helperName => {\n let helper = mergedHelpers[helperName];\n mergedHelpers[helperName] = passLookupPropertyOption(helper, container);\n });\n}\n\nfunction passLookupPropertyOption(helper, container) {\n const lookupProperty = container.lookupProperty;\n return wrapHelper(helper, options => {\n return Utils.extend({ lookupProperty }, options);\n });\n}\n","// Build out our basic SafeString type\nfunction SafeString(string) {\n this.string = string;\n}\n\nSafeString.prototype.toString = SafeString.prototype.toHTML = function() {\n return '' + this.string;\n};\n\nexport default SafeString;\n","const escape = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`',\n '=': '='\n};\n\nconst badChars = /[&<>\"'`=]/g,\n possible = /[&<>\"'`=]/;\n\nfunction escapeChar(chr) {\n return escape[chr];\n}\n\nexport function extend(obj /* , ...source */) {\n for (let i = 1; i < arguments.length; i++) {\n for (let key in arguments[i]) {\n if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {\n obj[key] = arguments[i][key];\n }\n }\n }\n\n return obj;\n}\n\nexport let toString = Object.prototype.toString;\n\n// Sourced from lodash\n// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\n/* eslint-disable func-style */\nlet isFunction = function(value) {\n return typeof value === 'function';\n};\n// fallback for older versions of Chrome and Safari\n/* istanbul ignore next */\nif (isFunction(/x/)) {\n isFunction = function(value) {\n return (\n typeof value === 'function' &&\n toString.call(value) === '[object Function]'\n );\n };\n}\nexport { isFunction };\n/* eslint-enable func-style */\n\n/* istanbul ignore next */\nexport const isArray =\n Array.isArray ||\n function(value) {\n return value && typeof value === 'object'\n ? toString.call(value) === '[object Array]'\n : false;\n };\n\n// Older IE versions do not directly support indexOf so we must implement our own, sadly.\nexport function indexOf(array, value) {\n for (let i = 0, len = array.length; i < len; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n return -1;\n}\n\nexport function escapeExpression(string) {\n if (typeof string !== 'string') {\n // don't escape SafeStrings, since they're already safe\n if (string && string.toHTML) {\n return string.toHTML();\n } else if (string == null) {\n return '';\n } else if (!string) {\n return string + '';\n }\n\n // Force a string conversion as this will be done by the append regardless and\n // the regex test will do this transparently behind the scenes, causing issues if\n // an object's to string has escaped characters in it.\n string = '' + string;\n }\n\n if (!possible.test(string)) {\n return string;\n }\n return string.replace(badChars, escapeChar);\n}\n\nexport function isEmpty(value) {\n if (!value && value !== 0) {\n return true;\n } else if (isArray(value) && value.length === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nexport function createFrame(object) {\n let frame = extend({}, object);\n frame._parent = object;\n return frame;\n}\n\nexport function blockParams(params, ids) {\n params.path = ids;\n return params;\n}\n\nexport function appendContextPath(contextPath, id) {\n return (contextPath ? contextPath + '.' : '') + id;\n}\n","// vim:ts=4:sts=4:sw=4:\n/*!\n *\n * Copyright 2009-2012 Kris Kowal under the terms of the MIT\n * license found at http://github.com/kriskowal/q/raw/master/LICENSE\n *\n * With parts by Tyler Close\n * Copyright 2007-2009 Tyler Close under the terms of the MIT X license found\n * at http://www.opensource.org/licenses/mit-license.html\n * Forked at ref_send.js version: 2009-05-11\n *\n * With parts by Mark Miller\n * Copyright (C) 2011 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n(function (definition) {\n \"use strict\";\n\n // This file will function properly as a