Socket
Socket
Sign inDemoInstall

@mxenabled/web-widget-sdk

Package Overview
Dependencies
1
Maintainers
11
Versions
13
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.0.9 to 0.0.10

dist/types/src/__tests__/sdk_info_test.d.ts

21

dist/amd/index.js

@@ -198,2 +198,4 @@ define(['exports'], (function (exports) { 'use strict';

const sdkVersion = "0.0.10";
// This is an internal error. Thrown when we are decoding a post message's

@@ -770,5 +772,3 @@ // metadata and we encountered a missing field or an invalid value. This

this.messageCallback = (event) => {
if (event.data.mx) {
this.dispatcher(event, this.options);
}
this.handleMXPostMessage(event);
};

@@ -834,2 +834,17 @@ if (typeof options.container === "string") {

}
handleMXPostMessage(event) {
if (!event.data.mx) {
return;
}
this.dispatcher(event, this.options);
if (event.data.type === Type.Load) {
this.postMessageToWidget({
type: "mx/sdk/info",
metadata: {
sdk: "web",
version: sdkVersion,
},
});
}
}
postMessageToWidget(payload) {

@@ -836,0 +851,0 @@ if (!this.iframe.contentWindow) {

2

dist/amd/index.min.js

@@ -1,1 +0,1 @@

define(["exports"],(function(e){"use strict";function t(e){return"clientId"in e&&"string"==typeof e.clientId&&"apiKey"in e&&"string"==typeof e.apiKey&&"userGuid"in e&&"string"==typeof e.userGuid&&"environment"in e&&"string"==typeof e.environment}class n extends Error{constructor(){super("Missing required widget props!\n\nComponent needs one of the following groups of props:\n\n - url\n\n - or -\n\n - proxy\n\n - or -\n\n - apiKey\n - clientId\n - environment\n - userGuid"),Object.setPrototypeOf(this,n.prototype)}}class i extends Error{constructor(e){super(`Request failed: ${e}`),this.statusCode=e,Object.setPrototypeOf(this,i.prototype)}}var s;!function(e){e.SAND="sand",e.QA="qa",e.INT="integration",e.PROD="production"}(s||(s={}));const r={[s.SAND]:s.SAND,[s.QA]:s.QA,[s.INT]:s.INT,[s.PROD]:s.PROD};const o={[s.SAND]:"https://api.sand.internal.mx",[s.QA]:"https://api.qa.internal.mx",[s.INT]:"https://int-api.mx.com",[s.PROD]:"https://api.mx.com"};function c(e){const t=function(e){const t=r[e];if(!t)throw new Error(`Invalid MX environment: ${e}`);return t}(e),n=o[t];if(!n)throw new Error(`Missing host for MX environment: ${e}`);return n}var a,u;function d(e){return{client_redirect_url:e.clientRedirectUrl,color_scheme:e.colorScheme,current_institution_code:e.currentInstitutionCode,current_institution_guid:e.currentInstitutionGuid,current_member_guid:e.currentMemberGuid,disable_institution_search:e.disableInstitutionSearch,include_transactions:e.includeTransactions,is_mobile_webview:e.isMobileWebview||!1,mode:e.mode,oauth_referral_source:e.oauthReferralSource,ui_message_version:e.uiMessageVersion||4,ui_message_webview_url_scheme:e.uiMessageWebviewUrlScheme,update_credentials:e.updateCredentials,widget_type:e.widgetType}}function g(e){return e.widget_url.url}function m(e){const i=function(e){if(function(e){return"proxy"in e&&"string"==typeof e.proxy}(e))return function(e){return e.proxy}(e);if(t(e))return function(e){const t=c(e.environment),n=e.userGuid;return`${t}/users/${n}/widget_urls`}(e);throw new n}(e),s=function(e){const n={Accept:"application/vnd.mx.api.v1+json","Content-Type":"application/json"};e.language&&(n["Accept-Language"]=e.language);if(t(e)){const{apiKey:t,clientId:i}=e,s=btoa(`${i}:${t}`);n.Authorization=`Basic ${s}`}const i="cors",s="POST",r=JSON.stringify({widget_url:d(e)});return{method:s,headers:n,body:r,mode:i}}(e);return{url:i,options:s}}function p(e){return e}function l(e){if(!e.ok)throw new i(e.status);return e.json()}function _(e){console.error(e)}!function(e){e.AccountsWidget="accounts_widget",e.BudgetsWidget="budgets_widget",e.ConnectWidget="connect_widget",e.ConnectionsWidget="connections_widget",e.DebtsWidget="debts_widget",e.FinstrongWidget="finstrong_widget",e.GoalsWidget="goals_widget",e.HelpWidget="help_widget",e.MasterWidget="master_widget",e.MiniBudgetsWidget="mini_budgets_widget",e.MiniFinstrongWidget="mini_finstrong_widget",e.MiniPulseCarouselWidget="mini_pulse_carousel_widget",e.MiniSpendingWidget="mini_spending_widget",e.PulseWidget="pulse_widget",e.SettingsWidget="settings_widget",e.SpendingWidget="spending_widget",e.TransactionsWidget="transactions_widget",e.TrendsWidget="trends_widget"}(a||(a={}));class C extends Error{messageType;field;expectedType;gotValue;constructor(e,t,n,i){super(`Unable to decode '${t}' from '${e}'`),this.messageType=e,this.field=t,this.expectedType=n,this.gotValue=i,Object.setPrototypeOf(this,C.prototype)}}class h extends Error{postMessageType;constructor(e){super(`Unknown post message: ${e}`),this.postMessageType=e,Object.setPrototypeOf(this,h.prototype)}}function b(e,t,n,i,s={}){const r=e[n],o=void 0!==r,c="string"==typeof r,a="number"==typeof r,u="object"==typeof r&&!Array.isArray(r),d="boolean"==typeof r,g="string"===i,m="number"===i,p=i instanceof Array,l="object"==typeof i&&!Array.isArray(i),_="boolean"===i;if(o||!s.optional){if(!o)throw new C(t,n,i,r);if(g&&!c)throw new C(t,n,i,r);if(m&&!a)throw new C(t,n,i,r);if(!(!p||c&&i.includes(r)))throw new C(t,n,i,r);if(l&&!u)throw new C(t,n,i,r);if(_&&!d)throw new C(t,n,i,r);l&&u&&Object.keys(i).forEach((e=>{b(r,t,e,i[e])}))}}!function(e){e.Load="mx/load",e.Ping="mx/ping",e.Navigation="mx/navigation",e.FocusTrap="mx/focusTrap",e.ClientOAuthComplete="mx/client/oauthComplete",e.ConnectLoaded="mx/connect/loaded",e.ConnectEnterCredentials="mx/connect/enterCredentials",e.ConnectInstitutionSearch="mx/connect/institutionSearch",e.ConnectSelectedInstitution="mx/connect/selectedInstitution",e.ConnectMemberConnected="mx/connect/memberConnected",e.ConnectConnectedPrimaryAction="mx/connect/connected/primaryAction",e.ConnectMemberDeleted="mx/connect/memberDeleted",e.ConnectCreateMemberError="mx/connect/createMemberError",e.ConnectMemberStatusUpdate="mx/connect/memberStatusUpdate",e.ConnectOAuthError="mx/connect/oauthError",e.ConnectOAuthRequested="mx/connect/oauthRequested",e.ConnectStepChange="mx/connect/stepChange",e.ConnectSubmitMFA="mx/connect/submitMFA",e.ConnectUpdateCredentials="mx/connect/updateCredentials",e.PulseOverdraftWarningCtaTransferFunds="mx/pulse/overdraftWarning/cta/transferFunds",e.AccountCreated="mx/account/created"}(u||(u={}));const f={[u.Load]:u.Load,[u.Ping]:u.Ping,[u.Navigation]:u.Navigation,[u.FocusTrap]:u.FocusTrap,"mx/focustrap":u.FocusTrap,[u.ClientOAuthComplete]:u.ClientOAuthComplete,"mx/client/oauthcomplete":u.ClientOAuthComplete,[u.ConnectLoaded]:u.ConnectLoaded,[u.ConnectEnterCredentials]:u.ConnectEnterCredentials,"mx/connect/entercredentials":u.ConnectEnterCredentials,[u.ConnectInstitutionSearch]:u.ConnectInstitutionSearch,"mx/connect/institutionsearch":u.ConnectInstitutionSearch,[u.ConnectSelectedInstitution]:u.ConnectSelectedInstitution,"mx/connect/selectedinstitution":u.ConnectSelectedInstitution,[u.ConnectMemberConnected]:u.ConnectMemberConnected,"mx/connect/memberconnected":u.ConnectMemberConnected,[u.ConnectConnectedPrimaryAction]:u.ConnectConnectedPrimaryAction,"mx/connect/connected/primaryaction":u.ConnectConnectedPrimaryAction,[u.ConnectMemberDeleted]:u.ConnectMemberDeleted,"mx/connect/memberdeleted":u.ConnectMemberDeleted,[u.ConnectCreateMemberError]:u.ConnectCreateMemberError,"mx/connect/createmembererror":u.ConnectCreateMemberError,[u.ConnectMemberStatusUpdate]:u.ConnectMemberStatusUpdate,"mx/connect/memberstatusupdate":u.ConnectMemberStatusUpdate,[u.ConnectOAuthError]:u.ConnectOAuthError,"mx/connect/oautherror":u.ConnectOAuthError,[u.ConnectOAuthRequested]:u.ConnectOAuthRequested,"mx/connect/oauthrequested":u.ConnectOAuthRequested,[u.ConnectStepChange]:u.ConnectStepChange,"mx/connect/stepchange":u.ConnectStepChange,[u.ConnectSubmitMFA]:u.ConnectSubmitMFA,"mx/connect/submitmfa":u.ConnectSubmitMFA,[u.ConnectUpdateCredentials]:u.ConnectUpdateCredentials,"mx/connect/updatecredentials":u.ConnectUpdateCredentials,[u.PulseOverdraftWarningCtaTransferFunds]:u.PulseOverdraftWarningCtaTransferFunds,"mx/pulse/overdraftwarning/cta/transferfunds":u.PulseOverdraftWarningCtaTransferFunds,[u.AccountCreated]:u.AccountCreated};function x(e){const t=e.type||"type not provided";let n;if(!t||!(t in f))throw new h(t);n=f[t];const i=function(e,t){switch(e){case u.Load:return{type:e};case u.Ping:return b(t,"mx/ping","user_guid","string"),b(t,"mx/ping","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case u.Navigation:return b(t,"mx/navigation","user_guid","string"),b(t,"mx/navigation","session_guid","string"),b(t,"mx/navigation","did_go_back","boolean"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,did_go_back:t.did_go_back};case u.FocusTrap:return b(t,"mx/focusTrap","user_guid","string"),b(t,"mx/focusTrap","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case u.ClientOAuthComplete:return b(t,"mx/client/oauthComplete","url","string"),{type:e,url:t.url};case u.ConnectLoaded:return b(t,"mx/connect/loaded","user_guid","string"),b(t,"mx/connect/loaded","session_guid","string"),b(t,"mx/connect/loaded","initial_step",["search","selectMember","enterCreds","mfa","connected","loginError","disclosure"]),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,initial_step:t.initial_step};case u.ConnectEnterCredentials:return b(t,"mx/connect/enterCredentials","user_guid","string"),b(t,"mx/connect/enterCredentials","session_guid","string"),b(t,"mx/connect/enterCredentials","institution",{code:"string",guid:"string"}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,institution:t.institution};case u.ConnectInstitutionSearch:return b(t,"mx/connect/institutionSearch","user_guid","string"),b(t,"mx/connect/institutionSearch","session_guid","string"),b(t,"mx/connect/institutionSearch","query","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,query:t.query};case u.ConnectSelectedInstitution:return b(t,"mx/connect/selectedInstitution","user_guid","string"),b(t,"mx/connect/selectedInstitution","session_guid","string"),b(t,"mx/connect/selectedInstitution","code","string"),b(t,"mx/connect/selectedInstitution","guid","string"),b(t,"mx/connect/selectedInstitution","name","string"),b(t,"mx/connect/selectedInstitution","url","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,code:t.code,guid:t.guid,name:t.name,url:t.url};case u.ConnectMemberConnected:return b(t,"mx/connect/memberConnected","user_guid","string"),b(t,"mx/connect/memberConnected","session_guid","string"),b(t,"mx/connect/memberConnected","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case u.ConnectConnectedPrimaryAction:return b(t,"mx/connect/connected/primaryAction","user_guid","string"),b(t,"mx/connect/connected/primaryAction","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case u.ConnectMemberDeleted:return b(t,"mx/connect/memberDeleted","user_guid","string"),b(t,"mx/connect/memberDeleted","session_guid","string"),b(t,"mx/connect/memberDeleted","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case u.ConnectCreateMemberError:return b(t,"mx/connect/createMemberError","user_guid","string"),b(t,"mx/connect/createMemberError","session_guid","string"),b(t,"mx/connect/createMemberError","institution_guid","string"),b(t,"mx/connect/createMemberError","institution_code","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,institution_guid:t.institution_guid,institution_code:t.institution_code};case u.ConnectMemberStatusUpdate:return b(t,"mx/connect/memberStatusUpdate","user_guid","string"),b(t,"mx/connect/memberStatusUpdate","session_guid","string"),b(t,"mx/connect/memberStatusUpdate","member_guid","string"),b(t,"mx/connect/memberStatusUpdate","connection_status","number"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid,connection_status:t.connection_status};case u.ConnectOAuthError:return b(t,"mx/connect/oauthError","user_guid","string"),b(t,"mx/connect/oauthError","session_guid","string"),b(t,"mx/connect/oauthError","member_guid","string",{optional:!0}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case u.ConnectOAuthRequested:return b(t,"mx/connect/oauthRequested","user_guid","string"),b(t,"mx/connect/oauthRequested","session_guid","string"),b(t,"mx/connect/oauthRequested","url","string"),b(t,"mx/connect/oauthRequested","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,url:t.url,member_guid:t.member_guid};case u.ConnectStepChange:return b(t,"mx/connect/stepChange","user_guid","string"),b(t,"mx/connect/stepChange","session_guid","string"),b(t,"mx/connect/stepChange","previous","string"),b(t,"mx/connect/stepChange","current","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,previous:t.previous,current:t.current};case u.ConnectSubmitMFA:return b(t,"mx/connect/submitMFA","user_guid","string"),b(t,"mx/connect/submitMFA","session_guid","string"),b(t,"mx/connect/submitMFA","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case u.ConnectUpdateCredentials:return b(t,"mx/connect/updateCredentials","user_guid","string"),b(t,"mx/connect/updateCredentials","session_guid","string"),b(t,"mx/connect/updateCredentials","member_guid","string"),b(t,"mx/connect/updateCredentials","institution",{code:"string",guid:"string"}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid,institution:t.institution};case u.PulseOverdraftWarningCtaTransferFunds:return b(t,"mx/pulse/overdraftWarning/cta/transferFunds","account_guid","string"),b(t,"mx/pulse/overdraftWarning/cta/transferFunds","amount","number"),{type:e,account_guid:t.account_guid,amount:t.amount};case u.AccountCreated:return b(t,"mx/account/created","guid","string"),{type:e,guid:t.guid};default:throw new h(e)}}(n,e.metadata||{});return i}function y(e,t,n){if(t instanceof C)n.onInvalidMessageError?.(e,t);else{if(!(t instanceof h))throw t;n.onInvalidMessageError?.(e,t)}}function w(e,t){t.onMessage?.(e)}function M(e,t){try{w(e,t);!function(e,t){switch(e.type){case u.Load:t.onLoad?.(e);break;case u.Ping:t.onPing?.(e);break;case u.Navigation:t.onNavigation?.(e);break;case u.FocusTrap:t.onFocusTrap?.(e);break;case u.AccountCreated:t.onAccountCreated?.(e);break;default:throw new h(e.type)}}(x(e.data),t)}catch(n){y(e,n,t)}}function W(e,t){try{w(e,t);!function(e,t){switch(e.type){case u.Load:t.onLoad?.(e);break;case u.Ping:t.onPing?.(e);break;case u.Navigation:t.onNavigation?.(e);break;case u.FocusTrap:t.onFocusTrap?.(e);break;case u.AccountCreated:t.onAccountCreated?.(e);break;case u.ConnectLoaded:t.onLoaded?.(e);break;case u.ConnectEnterCredentials:t.onEnterCredentials?.(e);break;case u.ConnectInstitutionSearch:t.onInstitutionSearch?.(e);break;case u.ConnectSelectedInstitution:t.onSelectedInstitution?.(e);break;case u.ConnectMemberConnected:t.onMemberConnected?.(e);break;case u.ConnectConnectedPrimaryAction:t.onConnectedPrimaryAction?.(e);break;case u.ConnectMemberDeleted:t.onMemberDeleted?.(e);break;case u.ConnectCreateMemberError:t.onCreateMemberError?.(e);break;case u.ConnectMemberStatusUpdate:t.onMemberStatusUpdate?.(e);break;case u.ConnectOAuthError:t.onOAuthError?.(e);break;case u.ConnectOAuthRequested:t.onOAuthRequested?.(e);break;case u.ConnectStepChange:t.onStepChange?.(e);break;case u.ConnectSubmitMFA:t.onSubmitMFA?.(e);break;case u.ConnectUpdateCredentials:t.onUpdateCredentials?.(e);break;default:throw new h(e.type)}}(x(e.data),t)}catch(n){y(e,n,t)}}function A(e,t){try{w(e,t);!function(e,t){switch(e.type){case u.Load:t.onLoad?.(e);break;case u.Ping:t.onPing?.(e);break;case u.Navigation:t.onNavigation?.(e);break;case u.FocusTrap:t.onFocusTrap?.(e);break;case u.AccountCreated:t.onAccountCreated?.(e);break;case u.PulseOverdraftWarningCtaTransferFunds:t.onOverdraftWarningCtaTransferFunds?.(e);break;default:throw new h(e.type)}}(x(e.data),t)}catch(n){y(e,n,t)}}class v{constructor(e){if(this.isUnmounting=!1,this.options=e,this.iframe=document.createElement("iframe"),this.style=e.style||{border:"none",height:"550px",width:"320px"},this.messageCallback=e=>{e.data.mx&&this.dispatcher(e,this.options)},"string"==typeof e.container){const t=document.querySelector(e.container);if(!t)throw new Error(`Unable to find widget container. Ensure that an element matching a selector for '${this.options.container}' is available in the DOM before you initialize the widget.`);this.container=t}else{if(!(e.container instanceof Element))throw new Error("Invalid or missing value for container property, expecting a query selector string or a DOM Element.");this.container=e.container}this.setupIframe(),this.setupListener()}get widgetType(){if(this.options.widgetType)return this.options.widgetType;throw new Error("Missing value for widgetType property, expecting a string (eg. connect_widget).")}get dispatcher(){return M}navigateBack(){return new Promise((e=>{const t=this.iframe.contentWindow,n={mx:!0,type:u.Navigation,payload:{action:"back"}};if(!t)throw new Error("Unable to navigate back, iframe element is not available.");const i=t=>{t.data.type===u.Navigation&&(window.removeEventListener("message",i),e(t.data.metadata.did_go_back))};window.addEventListener("message",i,!1),t.postMessage(JSON.stringify(n),this.targetOrigin)}))}ping(){this.postMessageToWidget({type:"ping"})}unmount(){this.isUnmounting=!0,this.teardownListener(),this.teardownIframe()}get targetOrigin(){var e;const t=/^https?:\/\/[^/]+/i;let n;return this.ssoUrl&&this.ssoUrl.match(t)&&(n=null===(e=this.ssoUrl.match(t))||void 0===e?void 0:e[0]),n||"https://widgets.moneydesktop.com"}postMessageToWidget(e){if(!this.iframe.contentWindow)throw new Error("Unable to postMessage to widget, iframe doesn't exist");this.iframe.contentWindow.postMessage(JSON.stringify(e),this.targetOrigin)}setupIframe(){(function(e){if(function(e){return"url"in e&&"string"==typeof e.url}(e))return Promise.resolve(e.url);const t=e.ssoRequestBuilder||m,n=e.ssoRequestPreprocess||p,i=e.ssoRequestPostprocess||g,s=e.onSsoUrlLoadError||_,r=n(t(e));return fetch(r.url,r.options).then(l).then(i).catch(s)})(Object.assign(Object.assign({},this.options),{widgetType:this.widgetType})).then((e=>{!this.isUnmounting&&e&&(this.ssoUrl=e,this.iframe.setAttribute("data-test-id","mx-widget-iframe"),this.iframe.setAttribute("title",this.options.iframeTitle||"Widget Iframe"),this.iframe.setAttribute("src",e),Object.keys(this.style).forEach((e=>{this.iframe.style[e]=this.style[e]})),this.container.appendChild(this.iframe))}))}teardownIframe(){this.container.contains(this.iframe)&&this.container.removeChild(this.iframe)}setupListener(){window.addEventListener("message",this.messageCallback,!1)}teardownListener(){window.removeEventListener("message",this.messageCallback,!1)}}e.AccountsWidget=class extends v{get widgetType(){return a.AccountsWidget}},e.BudgetsWidget=class extends v{get widgetType(){return a.BudgetsWidget}},e.ConnectWidget=class extends v{get widgetType(){return a.ConnectWidget}get dispatcher(){return W}},e.ConnectionsWidget=class extends v{get widgetType(){return a.ConnectionsWidget}},e.DebtsWidget=class extends v{get widgetType(){return a.DebtsWidget}},e.FinstrongWidget=class extends v{get widgetType(){return a.FinstrongWidget}},e.GoalsWidget=class extends v{get widgetType(){return a.GoalsWidget}},e.HelpWidget=class extends v{get widgetType(){return a.HelpWidget}},e.MasterWidget=class extends v{get widgetType(){return a.MasterWidget}},e.MiniBudgetsWidget=class extends v{get widgetType(){return a.MiniBudgetsWidget}},e.MiniFinstrongWidget=class extends v{get widgetType(){return a.MiniFinstrongWidget}},e.MiniPulseCarouselWidget=class extends v{get widgetType(){return a.MiniPulseCarouselWidget}get dispatcher(){return A}},e.MiniSpendingWidget=class extends v{get widgetType(){return a.MiniSpendingWidget}},e.PulseWidget=class extends v{get widgetType(){return a.PulseWidget}get dispatcher(){return A}},e.SettingsWidget=class extends v{get widgetType(){return a.SettingsWidget}},e.SpendingWidget=class extends v{get widgetType(){return a.SpendingWidget}},e.TransactionsWidget=class extends v{get widgetType(){return a.TransactionsWidget}},e.TrendsWidget=class extends v{get widgetType(){return a.TrendsWidget}},e.Widget=v,Object.defineProperty(e,"__esModule",{value:!0})}));
define(["exports"],(function(e){"use strict";function t(e){return"clientId"in e&&"string"==typeof e.clientId&&"apiKey"in e&&"string"==typeof e.apiKey&&"userGuid"in e&&"string"==typeof e.userGuid&&"environment"in e&&"string"==typeof e.environment}class n extends Error{constructor(){super("Missing required widget props!\n\nComponent needs one of the following groups of props:\n\n - url\n\n - or -\n\n - proxy\n\n - or -\n\n - apiKey\n - clientId\n - environment\n - userGuid"),Object.setPrototypeOf(this,n.prototype)}}class i extends Error{constructor(e){super(`Request failed: ${e}`),this.statusCode=e,Object.setPrototypeOf(this,i.prototype)}}var s;!function(e){e.SAND="sand",e.QA="qa",e.INT="integration",e.PROD="production"}(s||(s={}));const r={[s.SAND]:s.SAND,[s.QA]:s.QA,[s.INT]:s.INT,[s.PROD]:s.PROD};const o={[s.SAND]:"https://api.sand.internal.mx",[s.QA]:"https://api.qa.internal.mx",[s.INT]:"https://int-api.mx.com",[s.PROD]:"https://api.mx.com"};function c(e){const t=function(e){const t=r[e];if(!t)throw new Error(`Invalid MX environment: ${e}`);return t}(e),n=o[t];if(!n)throw new Error(`Missing host for MX environment: ${e}`);return n}var a;function u(e){return{client_redirect_url:e.clientRedirectUrl,color_scheme:e.colorScheme,current_institution_code:e.currentInstitutionCode,current_institution_guid:e.currentInstitutionGuid,current_member_guid:e.currentMemberGuid,disable_institution_search:e.disableInstitutionSearch,include_transactions:e.includeTransactions,is_mobile_webview:e.isMobileWebview||!1,mode:e.mode,oauth_referral_source:e.oauthReferralSource,ui_message_version:e.uiMessageVersion||4,ui_message_webview_url_scheme:e.uiMessageWebviewUrlScheme,update_credentials:e.updateCredentials,widget_type:e.widgetType}}function d(e){return e.widget_url.url}function g(e){const i=function(e){if(function(e){return"proxy"in e&&"string"==typeof e.proxy}(e))return function(e){return e.proxy}(e);if(t(e))return function(e){const t=c(e.environment),n=e.userGuid;return`${t}/users/${n}/widget_urls`}(e);throw new n}(e),s=function(e){const n={Accept:"application/vnd.mx.api.v1+json","Content-Type":"application/json"};e.language&&(n["Accept-Language"]=e.language);if(t(e)){const{apiKey:t,clientId:i}=e,s=btoa(`${i}:${t}`);n.Authorization=`Basic ${s}`}const i="cors",s="POST",r=JSON.stringify({widget_url:u(e)});return{method:s,headers:n,body:r,mode:i}}(e);return{url:i,options:s}}function m(e){return e}function p(e){if(!e.ok)throw new i(e.status);return e.json()}function l(e){console.error(e)}!function(e){e.AccountsWidget="accounts_widget",e.BudgetsWidget="budgets_widget",e.ConnectWidget="connect_widget",e.ConnectionsWidget="connections_widget",e.DebtsWidget="debts_widget",e.FinstrongWidget="finstrong_widget",e.GoalsWidget="goals_widget",e.HelpWidget="help_widget",e.MasterWidget="master_widget",e.MiniBudgetsWidget="mini_budgets_widget",e.MiniFinstrongWidget="mini_finstrong_widget",e.MiniPulseCarouselWidget="mini_pulse_carousel_widget",e.MiniSpendingWidget="mini_spending_widget",e.PulseWidget="pulse_widget",e.SettingsWidget="settings_widget",e.SpendingWidget="spending_widget",e.TransactionsWidget="transactions_widget",e.TrendsWidget="trends_widget"}(a||(a={}));class _ extends Error{messageType;field;expectedType;gotValue;constructor(e,t,n,i){super(`Unable to decode '${t}' from '${e}'`),this.messageType=e,this.field=t,this.expectedType=n,this.gotValue=i,Object.setPrototypeOf(this,_.prototype)}}class C extends Error{postMessageType;constructor(e){super(`Unknown post message: ${e}`),this.postMessageType=e,Object.setPrototypeOf(this,C.prototype)}}function h(e,t,n,i,s={}){const r=e[n],o=void 0!==r,c="string"==typeof r,a="number"==typeof r,u="object"==typeof r&&!Array.isArray(r),d="boolean"==typeof r,g="string"===i,m="number"===i,p=i instanceof Array,l="object"==typeof i&&!Array.isArray(i),C="boolean"===i;if(o||!s.optional){if(!o)throw new _(t,n,i,r);if(g&&!c)throw new _(t,n,i,r);if(m&&!a)throw new _(t,n,i,r);if(!(!p||c&&i.includes(r)))throw new _(t,n,i,r);if(l&&!u)throw new _(t,n,i,r);if(C&&!d)throw new _(t,n,i,r);l&&u&&Object.keys(i).forEach((e=>{h(r,t,e,i[e])}))}}var b;!function(e){e.Load="mx/load",e.Ping="mx/ping",e.Navigation="mx/navigation",e.FocusTrap="mx/focusTrap",e.ClientOAuthComplete="mx/client/oauthComplete",e.ConnectLoaded="mx/connect/loaded",e.ConnectEnterCredentials="mx/connect/enterCredentials",e.ConnectInstitutionSearch="mx/connect/institutionSearch",e.ConnectSelectedInstitution="mx/connect/selectedInstitution",e.ConnectMemberConnected="mx/connect/memberConnected",e.ConnectConnectedPrimaryAction="mx/connect/connected/primaryAction",e.ConnectMemberDeleted="mx/connect/memberDeleted",e.ConnectCreateMemberError="mx/connect/createMemberError",e.ConnectMemberStatusUpdate="mx/connect/memberStatusUpdate",e.ConnectOAuthError="mx/connect/oauthError",e.ConnectOAuthRequested="mx/connect/oauthRequested",e.ConnectStepChange="mx/connect/stepChange",e.ConnectSubmitMFA="mx/connect/submitMFA",e.ConnectUpdateCredentials="mx/connect/updateCredentials",e.PulseOverdraftWarningCtaTransferFunds="mx/pulse/overdraftWarning/cta/transferFunds",e.AccountCreated="mx/account/created"}(b||(b={}));const f={[b.Load]:b.Load,[b.Ping]:b.Ping,[b.Navigation]:b.Navigation,[b.FocusTrap]:b.FocusTrap,"mx/focustrap":b.FocusTrap,[b.ClientOAuthComplete]:b.ClientOAuthComplete,"mx/client/oauthcomplete":b.ClientOAuthComplete,[b.ConnectLoaded]:b.ConnectLoaded,[b.ConnectEnterCredentials]:b.ConnectEnterCredentials,"mx/connect/entercredentials":b.ConnectEnterCredentials,[b.ConnectInstitutionSearch]:b.ConnectInstitutionSearch,"mx/connect/institutionsearch":b.ConnectInstitutionSearch,[b.ConnectSelectedInstitution]:b.ConnectSelectedInstitution,"mx/connect/selectedinstitution":b.ConnectSelectedInstitution,[b.ConnectMemberConnected]:b.ConnectMemberConnected,"mx/connect/memberconnected":b.ConnectMemberConnected,[b.ConnectConnectedPrimaryAction]:b.ConnectConnectedPrimaryAction,"mx/connect/connected/primaryaction":b.ConnectConnectedPrimaryAction,[b.ConnectMemberDeleted]:b.ConnectMemberDeleted,"mx/connect/memberdeleted":b.ConnectMemberDeleted,[b.ConnectCreateMemberError]:b.ConnectCreateMemberError,"mx/connect/createmembererror":b.ConnectCreateMemberError,[b.ConnectMemberStatusUpdate]:b.ConnectMemberStatusUpdate,"mx/connect/memberstatusupdate":b.ConnectMemberStatusUpdate,[b.ConnectOAuthError]:b.ConnectOAuthError,"mx/connect/oautherror":b.ConnectOAuthError,[b.ConnectOAuthRequested]:b.ConnectOAuthRequested,"mx/connect/oauthrequested":b.ConnectOAuthRequested,[b.ConnectStepChange]:b.ConnectStepChange,"mx/connect/stepchange":b.ConnectStepChange,[b.ConnectSubmitMFA]:b.ConnectSubmitMFA,"mx/connect/submitmfa":b.ConnectSubmitMFA,[b.ConnectUpdateCredentials]:b.ConnectUpdateCredentials,"mx/connect/updatecredentials":b.ConnectUpdateCredentials,[b.PulseOverdraftWarningCtaTransferFunds]:b.PulseOverdraftWarningCtaTransferFunds,"mx/pulse/overdraftwarning/cta/transferfunds":b.PulseOverdraftWarningCtaTransferFunds,[b.AccountCreated]:b.AccountCreated};function x(e){const t=e.type||"type not provided";let n;if(!t||!(t in f))throw new C(t);n=f[t];const i=function(e,t){switch(e){case b.Load:return{type:e};case b.Ping:return h(t,"mx/ping","user_guid","string"),h(t,"mx/ping","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case b.Navigation:return h(t,"mx/navigation","user_guid","string"),h(t,"mx/navigation","session_guid","string"),h(t,"mx/navigation","did_go_back","boolean"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,did_go_back:t.did_go_back};case b.FocusTrap:return h(t,"mx/focusTrap","user_guid","string"),h(t,"mx/focusTrap","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case b.ClientOAuthComplete:return h(t,"mx/client/oauthComplete","url","string"),{type:e,url:t.url};case b.ConnectLoaded:return h(t,"mx/connect/loaded","user_guid","string"),h(t,"mx/connect/loaded","session_guid","string"),h(t,"mx/connect/loaded","initial_step",["search","selectMember","enterCreds","mfa","connected","loginError","disclosure"]),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,initial_step:t.initial_step};case b.ConnectEnterCredentials:return h(t,"mx/connect/enterCredentials","user_guid","string"),h(t,"mx/connect/enterCredentials","session_guid","string"),h(t,"mx/connect/enterCredentials","institution",{code:"string",guid:"string"}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,institution:t.institution};case b.ConnectInstitutionSearch:return h(t,"mx/connect/institutionSearch","user_guid","string"),h(t,"mx/connect/institutionSearch","session_guid","string"),h(t,"mx/connect/institutionSearch","query","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,query:t.query};case b.ConnectSelectedInstitution:return h(t,"mx/connect/selectedInstitution","user_guid","string"),h(t,"mx/connect/selectedInstitution","session_guid","string"),h(t,"mx/connect/selectedInstitution","code","string"),h(t,"mx/connect/selectedInstitution","guid","string"),h(t,"mx/connect/selectedInstitution","name","string"),h(t,"mx/connect/selectedInstitution","url","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,code:t.code,guid:t.guid,name:t.name,url:t.url};case b.ConnectMemberConnected:return h(t,"mx/connect/memberConnected","user_guid","string"),h(t,"mx/connect/memberConnected","session_guid","string"),h(t,"mx/connect/memberConnected","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case b.ConnectConnectedPrimaryAction:return h(t,"mx/connect/connected/primaryAction","user_guid","string"),h(t,"mx/connect/connected/primaryAction","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case b.ConnectMemberDeleted:return h(t,"mx/connect/memberDeleted","user_guid","string"),h(t,"mx/connect/memberDeleted","session_guid","string"),h(t,"mx/connect/memberDeleted","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case b.ConnectCreateMemberError:return h(t,"mx/connect/createMemberError","user_guid","string"),h(t,"mx/connect/createMemberError","session_guid","string"),h(t,"mx/connect/createMemberError","institution_guid","string"),h(t,"mx/connect/createMemberError","institution_code","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,institution_guid:t.institution_guid,institution_code:t.institution_code};case b.ConnectMemberStatusUpdate:return h(t,"mx/connect/memberStatusUpdate","user_guid","string"),h(t,"mx/connect/memberStatusUpdate","session_guid","string"),h(t,"mx/connect/memberStatusUpdate","member_guid","string"),h(t,"mx/connect/memberStatusUpdate","connection_status","number"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid,connection_status:t.connection_status};case b.ConnectOAuthError:return h(t,"mx/connect/oauthError","user_guid","string"),h(t,"mx/connect/oauthError","session_guid","string"),h(t,"mx/connect/oauthError","member_guid","string",{optional:!0}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case b.ConnectOAuthRequested:return h(t,"mx/connect/oauthRequested","user_guid","string"),h(t,"mx/connect/oauthRequested","session_guid","string"),h(t,"mx/connect/oauthRequested","url","string"),h(t,"mx/connect/oauthRequested","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,url:t.url,member_guid:t.member_guid};case b.ConnectStepChange:return h(t,"mx/connect/stepChange","user_guid","string"),h(t,"mx/connect/stepChange","session_guid","string"),h(t,"mx/connect/stepChange","previous","string"),h(t,"mx/connect/stepChange","current","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,previous:t.previous,current:t.current};case b.ConnectSubmitMFA:return h(t,"mx/connect/submitMFA","user_guid","string"),h(t,"mx/connect/submitMFA","session_guid","string"),h(t,"mx/connect/submitMFA","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case b.ConnectUpdateCredentials:return h(t,"mx/connect/updateCredentials","user_guid","string"),h(t,"mx/connect/updateCredentials","session_guid","string"),h(t,"mx/connect/updateCredentials","member_guid","string"),h(t,"mx/connect/updateCredentials","institution",{code:"string",guid:"string"}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid,institution:t.institution};case b.PulseOverdraftWarningCtaTransferFunds:return h(t,"mx/pulse/overdraftWarning/cta/transferFunds","account_guid","string"),h(t,"mx/pulse/overdraftWarning/cta/transferFunds","amount","number"),{type:e,account_guid:t.account_guid,amount:t.amount};case b.AccountCreated:return h(t,"mx/account/created","guid","string"),{type:e,guid:t.guid};default:throw new C(e)}}(n,e.metadata||{});return i}function y(e,t,n){if(t instanceof _)n.onInvalidMessageError?.(e,t);else{if(!(t instanceof C))throw t;n.onInvalidMessageError?.(e,t)}}function w(e,t){t.onMessage?.(e)}function M(e,t){try{w(e,t);!function(e,t){switch(e.type){case b.Load:t.onLoad?.(e);break;case b.Ping:t.onPing?.(e);break;case b.Navigation:t.onNavigation?.(e);break;case b.FocusTrap:t.onFocusTrap?.(e);break;case b.AccountCreated:t.onAccountCreated?.(e);break;default:throw new C(e.type)}}(x(e.data),t)}catch(n){y(e,n,t)}}function W(e,t){try{w(e,t);!function(e,t){switch(e.type){case b.Load:t.onLoad?.(e);break;case b.Ping:t.onPing?.(e);break;case b.Navigation:t.onNavigation?.(e);break;case b.FocusTrap:t.onFocusTrap?.(e);break;case b.AccountCreated:t.onAccountCreated?.(e);break;case b.ConnectLoaded:t.onLoaded?.(e);break;case b.ConnectEnterCredentials:t.onEnterCredentials?.(e);break;case b.ConnectInstitutionSearch:t.onInstitutionSearch?.(e);break;case b.ConnectSelectedInstitution:t.onSelectedInstitution?.(e);break;case b.ConnectMemberConnected:t.onMemberConnected?.(e);break;case b.ConnectConnectedPrimaryAction:t.onConnectedPrimaryAction?.(e);break;case b.ConnectMemberDeleted:t.onMemberDeleted?.(e);break;case b.ConnectCreateMemberError:t.onCreateMemberError?.(e);break;case b.ConnectMemberStatusUpdate:t.onMemberStatusUpdate?.(e);break;case b.ConnectOAuthError:t.onOAuthError?.(e);break;case b.ConnectOAuthRequested:t.onOAuthRequested?.(e);break;case b.ConnectStepChange:t.onStepChange?.(e);break;case b.ConnectSubmitMFA:t.onSubmitMFA?.(e);break;case b.ConnectUpdateCredentials:t.onUpdateCredentials?.(e);break;default:throw new C(e.type)}}(x(e.data),t)}catch(n){y(e,n,t)}}function A(e,t){try{w(e,t);!function(e,t){switch(e.type){case b.Load:t.onLoad?.(e);break;case b.Ping:t.onPing?.(e);break;case b.Navigation:t.onNavigation?.(e);break;case b.FocusTrap:t.onFocusTrap?.(e);break;case b.AccountCreated:t.onAccountCreated?.(e);break;case b.PulseOverdraftWarningCtaTransferFunds:t.onOverdraftWarningCtaTransferFunds?.(e);break;default:throw new C(e.type)}}(x(e.data),t)}catch(n){y(e,n,t)}}class v{constructor(e){if(this.isUnmounting=!1,this.options=e,this.iframe=document.createElement("iframe"),this.style=e.style||{border:"none",height:"550px",width:"320px"},this.messageCallback=e=>{this.handleMXPostMessage(e)},"string"==typeof e.container){const t=document.querySelector(e.container);if(!t)throw new Error(`Unable to find widget container. Ensure that an element matching a selector for '${this.options.container}' is available in the DOM before you initialize the widget.`);this.container=t}else{if(!(e.container instanceof Element))throw new Error("Invalid or missing value for container property, expecting a query selector string or a DOM Element.");this.container=e.container}this.setupIframe(),this.setupListener()}get widgetType(){if(this.options.widgetType)return this.options.widgetType;throw new Error("Missing value for widgetType property, expecting a string (eg. connect_widget).")}get dispatcher(){return M}navigateBack(){return new Promise((e=>{const t=this.iframe.contentWindow,n={mx:!0,type:b.Navigation,payload:{action:"back"}};if(!t)throw new Error("Unable to navigate back, iframe element is not available.");const i=t=>{t.data.type===b.Navigation&&(window.removeEventListener("message",i),e(t.data.metadata.did_go_back))};window.addEventListener("message",i,!1),t.postMessage(JSON.stringify(n),this.targetOrigin)}))}ping(){this.postMessageToWidget({type:"ping"})}unmount(){this.isUnmounting=!0,this.teardownListener(),this.teardownIframe()}get targetOrigin(){var e;const t=/^https?:\/\/[^/]+/i;let n;return this.ssoUrl&&this.ssoUrl.match(t)&&(n=null===(e=this.ssoUrl.match(t))||void 0===e?void 0:e[0]),n||"https://widgets.moneydesktop.com"}handleMXPostMessage(e){e.data.mx&&(this.dispatcher(e,this.options),e.data.type===b.Load&&this.postMessageToWidget({type:"mx/sdk/info",metadata:{sdk:"web",version:"0.0.10"}}))}postMessageToWidget(e){if(!this.iframe.contentWindow)throw new Error("Unable to postMessage to widget, iframe doesn't exist");this.iframe.contentWindow.postMessage(JSON.stringify(e),this.targetOrigin)}setupIframe(){(function(e){if(function(e){return"url"in e&&"string"==typeof e.url}(e))return Promise.resolve(e.url);const t=e.ssoRequestBuilder||g,n=e.ssoRequestPreprocess||m,i=e.ssoRequestPostprocess||d,s=e.onSsoUrlLoadError||l,r=n(t(e));return fetch(r.url,r.options).then(p).then(i).catch(s)})(Object.assign(Object.assign({},this.options),{widgetType:this.widgetType})).then((e=>{!this.isUnmounting&&e&&(this.ssoUrl=e,this.iframe.setAttribute("data-test-id","mx-widget-iframe"),this.iframe.setAttribute("title",this.options.iframeTitle||"Widget Iframe"),this.iframe.setAttribute("src",e),Object.keys(this.style).forEach((e=>{this.iframe.style[e]=this.style[e]})),this.container.appendChild(this.iframe))}))}teardownIframe(){this.container.contains(this.iframe)&&this.container.removeChild(this.iframe)}setupListener(){window.addEventListener("message",this.messageCallback,!1)}teardownListener(){window.removeEventListener("message",this.messageCallback,!1)}}e.AccountsWidget=class extends v{get widgetType(){return a.AccountsWidget}},e.BudgetsWidget=class extends v{get widgetType(){return a.BudgetsWidget}},e.ConnectWidget=class extends v{get widgetType(){return a.ConnectWidget}get dispatcher(){return W}},e.ConnectionsWidget=class extends v{get widgetType(){return a.ConnectionsWidget}},e.DebtsWidget=class extends v{get widgetType(){return a.DebtsWidget}},e.FinstrongWidget=class extends v{get widgetType(){return a.FinstrongWidget}},e.GoalsWidget=class extends v{get widgetType(){return a.GoalsWidget}},e.HelpWidget=class extends v{get widgetType(){return a.HelpWidget}},e.MasterWidget=class extends v{get widgetType(){return a.MasterWidget}},e.MiniBudgetsWidget=class extends v{get widgetType(){return a.MiniBudgetsWidget}},e.MiniFinstrongWidget=class extends v{get widgetType(){return a.MiniFinstrongWidget}},e.MiniPulseCarouselWidget=class extends v{get widgetType(){return a.MiniPulseCarouselWidget}get dispatcher(){return A}},e.MiniSpendingWidget=class extends v{get widgetType(){return a.MiniSpendingWidget}},e.PulseWidget=class extends v{get widgetType(){return a.PulseWidget}get dispatcher(){return A}},e.SettingsWidget=class extends v{get widgetType(){return a.SettingsWidget}},e.SpendingWidget=class extends v{get widgetType(){return a.SpendingWidget}},e.TransactionsWidget=class extends v{get widgetType(){return a.TransactionsWidget}},e.TrendsWidget=class extends v{get widgetType(){return a.TrendsWidget}},e.Widget=v,Object.defineProperty(e,"__esModule",{value:!0})}));

@@ -200,2 +200,4 @@ 'use strict';

const sdkVersion = "0.0.10";
// This is an internal error. Thrown when we are decoding a post message's

@@ -772,5 +774,3 @@ // metadata and we encountered a missing field or an invalid value. This

this.messageCallback = (event) => {
if (event.data.mx) {
this.dispatcher(event, this.options);
}
this.handleMXPostMessage(event);
};

@@ -836,2 +836,17 @@ if (typeof options.container === "string") {

}
handleMXPostMessage(event) {
if (!event.data.mx) {
return;
}
this.dispatcher(event, this.options);
if (event.data.type === Type.Load) {
this.postMessageToWidget({
type: "mx/sdk/info",
metadata: {
sdk: "web",
version: sdkVersion,
},
});
}
}
postMessageToWidget(payload) {

@@ -838,0 +853,0 @@ if (!this.iframe.contentWindow) {

@@ -1,1 +0,1 @@

"use strict";function e(e){return"clientId"in e&&"string"==typeof e.clientId&&"apiKey"in e&&"string"==typeof e.apiKey&&"userGuid"in e&&"string"==typeof e.userGuid&&"environment"in e&&"string"==typeof e.environment}Object.defineProperty(exports,"__esModule",{value:!0});class t extends Error{constructor(){super("Missing required widget props!\n\nComponent needs one of the following groups of props:\n\n - url\n\n - or -\n\n - proxy\n\n - or -\n\n - apiKey\n - clientId\n - environment\n - userGuid"),Object.setPrototypeOf(this,t.prototype)}}class n extends Error{constructor(e){super(`Request failed: ${e}`),this.statusCode=e,Object.setPrototypeOf(this,n.prototype)}}var i;!function(e){e.SAND="sand",e.QA="qa",e.INT="integration",e.PROD="production"}(i||(i={}));const s={[i.SAND]:i.SAND,[i.QA]:i.QA,[i.INT]:i.INT,[i.PROD]:i.PROD};const r={[i.SAND]:"https://api.sand.internal.mx",[i.QA]:"https://api.qa.internal.mx",[i.INT]:"https://int-api.mx.com",[i.PROD]:"https://api.mx.com"};function o(e){const t=function(e){const t=s[e];if(!t)throw new Error(`Invalid MX environment: ${e}`);return t}(e),n=r[t];if(!n)throw new Error(`Missing host for MX environment: ${e}`);return n}var c,a;function u(e){return{client_redirect_url:e.clientRedirectUrl,color_scheme:e.colorScheme,current_institution_code:e.currentInstitutionCode,current_institution_guid:e.currentInstitutionGuid,current_member_guid:e.currentMemberGuid,disable_institution_search:e.disableInstitutionSearch,include_transactions:e.includeTransactions,is_mobile_webview:e.isMobileWebview||!1,mode:e.mode,oauth_referral_source:e.oauthReferralSource,ui_message_version:e.uiMessageVersion||4,ui_message_webview_url_scheme:e.uiMessageWebviewUrlScheme,update_credentials:e.updateCredentials,widget_type:e.widgetType}}function d(e){return e.widget_url.url}function g(n){const i=function(n){if(function(e){return"proxy"in e&&"string"==typeof e.proxy}(n))return function(e){return e.proxy}(n);if(e(n))return function(e){const t=o(e.environment),n=e.userGuid;return`${t}/users/${n}/widget_urls`}(n);throw new t}(n),s=function(t){const n={Accept:"application/vnd.mx.api.v1+json","Content-Type":"application/json"};t.language&&(n["Accept-Language"]=t.language);if(e(t)){const{apiKey:e,clientId:i}=t,s=btoa(`${i}:${e}`);n.Authorization=`Basic ${s}`}const i="cors",s="POST",r=JSON.stringify({widget_url:u(t)});return{method:s,headers:n,body:r,mode:i}}(n);return{url:i,options:s}}function m(e){return e}function p(e){if(!e.ok)throw new n(e.status);return e.json()}function l(e){console.error(e)}!function(e){e.AccountsWidget="accounts_widget",e.BudgetsWidget="budgets_widget",e.ConnectWidget="connect_widget",e.ConnectionsWidget="connections_widget",e.DebtsWidget="debts_widget",e.FinstrongWidget="finstrong_widget",e.GoalsWidget="goals_widget",e.HelpWidget="help_widget",e.MasterWidget="master_widget",e.MiniBudgetsWidget="mini_budgets_widget",e.MiniFinstrongWidget="mini_finstrong_widget",e.MiniPulseCarouselWidget="mini_pulse_carousel_widget",e.MiniSpendingWidget="mini_spending_widget",e.PulseWidget="pulse_widget",e.SettingsWidget="settings_widget",e.SpendingWidget="spending_widget",e.TransactionsWidget="transactions_widget",e.TrendsWidget="trends_widget"}(c||(c={}));class _ extends Error{messageType;field;expectedType;gotValue;constructor(e,t,n,i){super(`Unable to decode '${t}' from '${e}'`),this.messageType=e,this.field=t,this.expectedType=n,this.gotValue=i,Object.setPrototypeOf(this,_.prototype)}}class C extends Error{postMessageType;constructor(e){super(`Unknown post message: ${e}`),this.postMessageType=e,Object.setPrototypeOf(this,C.prototype)}}function h(e,t,n,i,s={}){const r=e[n],o=void 0!==r,c="string"==typeof r,a="number"==typeof r,u="object"==typeof r&&!Array.isArray(r),d="boolean"==typeof r,g="string"===i,m="number"===i,p=i instanceof Array,l="object"==typeof i&&!Array.isArray(i),C="boolean"===i;if(o||!s.optional){if(!o)throw new _(t,n,i,r);if(g&&!c)throw new _(t,n,i,r);if(m&&!a)throw new _(t,n,i,r);if(!(!p||c&&i.includes(r)))throw new _(t,n,i,r);if(l&&!u)throw new _(t,n,i,r);if(C&&!d)throw new _(t,n,i,r);l&&u&&Object.keys(i).forEach((e=>{h(r,t,e,i[e])}))}}!function(e){e.Load="mx/load",e.Ping="mx/ping",e.Navigation="mx/navigation",e.FocusTrap="mx/focusTrap",e.ClientOAuthComplete="mx/client/oauthComplete",e.ConnectLoaded="mx/connect/loaded",e.ConnectEnterCredentials="mx/connect/enterCredentials",e.ConnectInstitutionSearch="mx/connect/institutionSearch",e.ConnectSelectedInstitution="mx/connect/selectedInstitution",e.ConnectMemberConnected="mx/connect/memberConnected",e.ConnectConnectedPrimaryAction="mx/connect/connected/primaryAction",e.ConnectMemberDeleted="mx/connect/memberDeleted",e.ConnectCreateMemberError="mx/connect/createMemberError",e.ConnectMemberStatusUpdate="mx/connect/memberStatusUpdate",e.ConnectOAuthError="mx/connect/oauthError",e.ConnectOAuthRequested="mx/connect/oauthRequested",e.ConnectStepChange="mx/connect/stepChange",e.ConnectSubmitMFA="mx/connect/submitMFA",e.ConnectUpdateCredentials="mx/connect/updateCredentials",e.PulseOverdraftWarningCtaTransferFunds="mx/pulse/overdraftWarning/cta/transferFunds",e.AccountCreated="mx/account/created"}(a||(a={}));const b={[a.Load]:a.Load,[a.Ping]:a.Ping,[a.Navigation]:a.Navigation,[a.FocusTrap]:a.FocusTrap,"mx/focustrap":a.FocusTrap,[a.ClientOAuthComplete]:a.ClientOAuthComplete,"mx/client/oauthcomplete":a.ClientOAuthComplete,[a.ConnectLoaded]:a.ConnectLoaded,[a.ConnectEnterCredentials]:a.ConnectEnterCredentials,"mx/connect/entercredentials":a.ConnectEnterCredentials,[a.ConnectInstitutionSearch]:a.ConnectInstitutionSearch,"mx/connect/institutionsearch":a.ConnectInstitutionSearch,[a.ConnectSelectedInstitution]:a.ConnectSelectedInstitution,"mx/connect/selectedinstitution":a.ConnectSelectedInstitution,[a.ConnectMemberConnected]:a.ConnectMemberConnected,"mx/connect/memberconnected":a.ConnectMemberConnected,[a.ConnectConnectedPrimaryAction]:a.ConnectConnectedPrimaryAction,"mx/connect/connected/primaryaction":a.ConnectConnectedPrimaryAction,[a.ConnectMemberDeleted]:a.ConnectMemberDeleted,"mx/connect/memberdeleted":a.ConnectMemberDeleted,[a.ConnectCreateMemberError]:a.ConnectCreateMemberError,"mx/connect/createmembererror":a.ConnectCreateMemberError,[a.ConnectMemberStatusUpdate]:a.ConnectMemberStatusUpdate,"mx/connect/memberstatusupdate":a.ConnectMemberStatusUpdate,[a.ConnectOAuthError]:a.ConnectOAuthError,"mx/connect/oautherror":a.ConnectOAuthError,[a.ConnectOAuthRequested]:a.ConnectOAuthRequested,"mx/connect/oauthrequested":a.ConnectOAuthRequested,[a.ConnectStepChange]:a.ConnectStepChange,"mx/connect/stepchange":a.ConnectStepChange,[a.ConnectSubmitMFA]:a.ConnectSubmitMFA,"mx/connect/submitmfa":a.ConnectSubmitMFA,[a.ConnectUpdateCredentials]:a.ConnectUpdateCredentials,"mx/connect/updatecredentials":a.ConnectUpdateCredentials,[a.PulseOverdraftWarningCtaTransferFunds]:a.PulseOverdraftWarningCtaTransferFunds,"mx/pulse/overdraftwarning/cta/transferfunds":a.PulseOverdraftWarningCtaTransferFunds,[a.AccountCreated]:a.AccountCreated};function x(e){const t=e.type||"type not provided";let n;if(!t||!(t in b))throw new C(t);n=b[t];const i=function(e,t){switch(e){case a.Load:return{type:e};case a.Ping:return h(t,"mx/ping","user_guid","string"),h(t,"mx/ping","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case a.Navigation:return h(t,"mx/navigation","user_guid","string"),h(t,"mx/navigation","session_guid","string"),h(t,"mx/navigation","did_go_back","boolean"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,did_go_back:t.did_go_back};case a.FocusTrap:return h(t,"mx/focusTrap","user_guid","string"),h(t,"mx/focusTrap","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case a.ClientOAuthComplete:return h(t,"mx/client/oauthComplete","url","string"),{type:e,url:t.url};case a.ConnectLoaded:return h(t,"mx/connect/loaded","user_guid","string"),h(t,"mx/connect/loaded","session_guid","string"),h(t,"mx/connect/loaded","initial_step",["search","selectMember","enterCreds","mfa","connected","loginError","disclosure"]),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,initial_step:t.initial_step};case a.ConnectEnterCredentials:return h(t,"mx/connect/enterCredentials","user_guid","string"),h(t,"mx/connect/enterCredentials","session_guid","string"),h(t,"mx/connect/enterCredentials","institution",{code:"string",guid:"string"}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,institution:t.institution};case a.ConnectInstitutionSearch:return h(t,"mx/connect/institutionSearch","user_guid","string"),h(t,"mx/connect/institutionSearch","session_guid","string"),h(t,"mx/connect/institutionSearch","query","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,query:t.query};case a.ConnectSelectedInstitution:return h(t,"mx/connect/selectedInstitution","user_guid","string"),h(t,"mx/connect/selectedInstitution","session_guid","string"),h(t,"mx/connect/selectedInstitution","code","string"),h(t,"mx/connect/selectedInstitution","guid","string"),h(t,"mx/connect/selectedInstitution","name","string"),h(t,"mx/connect/selectedInstitution","url","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,code:t.code,guid:t.guid,name:t.name,url:t.url};case a.ConnectMemberConnected:return h(t,"mx/connect/memberConnected","user_guid","string"),h(t,"mx/connect/memberConnected","session_guid","string"),h(t,"mx/connect/memberConnected","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case a.ConnectConnectedPrimaryAction:return h(t,"mx/connect/connected/primaryAction","user_guid","string"),h(t,"mx/connect/connected/primaryAction","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case a.ConnectMemberDeleted:return h(t,"mx/connect/memberDeleted","user_guid","string"),h(t,"mx/connect/memberDeleted","session_guid","string"),h(t,"mx/connect/memberDeleted","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case a.ConnectCreateMemberError:return h(t,"mx/connect/createMemberError","user_guid","string"),h(t,"mx/connect/createMemberError","session_guid","string"),h(t,"mx/connect/createMemberError","institution_guid","string"),h(t,"mx/connect/createMemberError","institution_code","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,institution_guid:t.institution_guid,institution_code:t.institution_code};case a.ConnectMemberStatusUpdate:return h(t,"mx/connect/memberStatusUpdate","user_guid","string"),h(t,"mx/connect/memberStatusUpdate","session_guid","string"),h(t,"mx/connect/memberStatusUpdate","member_guid","string"),h(t,"mx/connect/memberStatusUpdate","connection_status","number"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid,connection_status:t.connection_status};case a.ConnectOAuthError:return h(t,"mx/connect/oauthError","user_guid","string"),h(t,"mx/connect/oauthError","session_guid","string"),h(t,"mx/connect/oauthError","member_guid","string",{optional:!0}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case a.ConnectOAuthRequested:return h(t,"mx/connect/oauthRequested","user_guid","string"),h(t,"mx/connect/oauthRequested","session_guid","string"),h(t,"mx/connect/oauthRequested","url","string"),h(t,"mx/connect/oauthRequested","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,url:t.url,member_guid:t.member_guid};case a.ConnectStepChange:return h(t,"mx/connect/stepChange","user_guid","string"),h(t,"mx/connect/stepChange","session_guid","string"),h(t,"mx/connect/stepChange","previous","string"),h(t,"mx/connect/stepChange","current","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,previous:t.previous,current:t.current};case a.ConnectSubmitMFA:return h(t,"mx/connect/submitMFA","user_guid","string"),h(t,"mx/connect/submitMFA","session_guid","string"),h(t,"mx/connect/submitMFA","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case a.ConnectUpdateCredentials:return h(t,"mx/connect/updateCredentials","user_guid","string"),h(t,"mx/connect/updateCredentials","session_guid","string"),h(t,"mx/connect/updateCredentials","member_guid","string"),h(t,"mx/connect/updateCredentials","institution",{code:"string",guid:"string"}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid,institution:t.institution};case a.PulseOverdraftWarningCtaTransferFunds:return h(t,"mx/pulse/overdraftWarning/cta/transferFunds","account_guid","string"),h(t,"mx/pulse/overdraftWarning/cta/transferFunds","amount","number"),{type:e,account_guid:t.account_guid,amount:t.amount};case a.AccountCreated:return h(t,"mx/account/created","guid","string"),{type:e,guid:t.guid};default:throw new C(e)}}(n,e.metadata||{});return i}function f(e,t,n){if(t instanceof _)n.onInvalidMessageError?.(e,t);else{if(!(t instanceof C))throw t;n.onInvalidMessageError?.(e,t)}}function y(e,t){t.onMessage?.(e)}function w(e,t){try{y(e,t);!function(e,t){switch(e.type){case a.Load:t.onLoad?.(e);break;case a.Ping:t.onPing?.(e);break;case a.Navigation:t.onNavigation?.(e);break;case a.FocusTrap:t.onFocusTrap?.(e);break;case a.AccountCreated:t.onAccountCreated?.(e);break;default:throw new C(e.type)}}(x(e.data),t)}catch(n){f(e,n,t)}}function M(e,t){try{y(e,t);!function(e,t){switch(e.type){case a.Load:t.onLoad?.(e);break;case a.Ping:t.onPing?.(e);break;case a.Navigation:t.onNavigation?.(e);break;case a.FocusTrap:t.onFocusTrap?.(e);break;case a.AccountCreated:t.onAccountCreated?.(e);break;case a.ConnectLoaded:t.onLoaded?.(e);break;case a.ConnectEnterCredentials:t.onEnterCredentials?.(e);break;case a.ConnectInstitutionSearch:t.onInstitutionSearch?.(e);break;case a.ConnectSelectedInstitution:t.onSelectedInstitution?.(e);break;case a.ConnectMemberConnected:t.onMemberConnected?.(e);break;case a.ConnectConnectedPrimaryAction:t.onConnectedPrimaryAction?.(e);break;case a.ConnectMemberDeleted:t.onMemberDeleted?.(e);break;case a.ConnectCreateMemberError:t.onCreateMemberError?.(e);break;case a.ConnectMemberStatusUpdate:t.onMemberStatusUpdate?.(e);break;case a.ConnectOAuthError:t.onOAuthError?.(e);break;case a.ConnectOAuthRequested:t.onOAuthRequested?.(e);break;case a.ConnectStepChange:t.onStepChange?.(e);break;case a.ConnectSubmitMFA:t.onSubmitMFA?.(e);break;case a.ConnectUpdateCredentials:t.onUpdateCredentials?.(e);break;default:throw new C(e.type)}}(x(e.data),t)}catch(n){f(e,n,t)}}function W(e,t){try{y(e,t);!function(e,t){switch(e.type){case a.Load:t.onLoad?.(e);break;case a.Ping:t.onPing?.(e);break;case a.Navigation:t.onNavigation?.(e);break;case a.FocusTrap:t.onFocusTrap?.(e);break;case a.AccountCreated:t.onAccountCreated?.(e);break;case a.PulseOverdraftWarningCtaTransferFunds:t.onOverdraftWarningCtaTransferFunds?.(e);break;default:throw new C(e.type)}}(x(e.data),t)}catch(n){f(e,n,t)}}class A{constructor(e){if(this.isUnmounting=!1,this.options=e,this.iframe=document.createElement("iframe"),this.style=e.style||{border:"none",height:"550px",width:"320px"},this.messageCallback=e=>{e.data.mx&&this.dispatcher(e,this.options)},"string"==typeof e.container){const t=document.querySelector(e.container);if(!t)throw new Error(`Unable to find widget container. Ensure that an element matching a selector for '${this.options.container}' is available in the DOM before you initialize the widget.`);this.container=t}else{if(!(e.container instanceof Element))throw new Error("Invalid or missing value for container property, expecting a query selector string or a DOM Element.");this.container=e.container}this.setupIframe(),this.setupListener()}get widgetType(){if(this.options.widgetType)return this.options.widgetType;throw new Error("Missing value for widgetType property, expecting a string (eg. connect_widget).")}get dispatcher(){return w}navigateBack(){return new Promise((e=>{const t=this.iframe.contentWindow,n={mx:!0,type:a.Navigation,payload:{action:"back"}};if(!t)throw new Error("Unable to navigate back, iframe element is not available.");const i=t=>{t.data.type===a.Navigation&&(window.removeEventListener("message",i),e(t.data.metadata.did_go_back))};window.addEventListener("message",i,!1),t.postMessage(JSON.stringify(n),this.targetOrigin)}))}ping(){this.postMessageToWidget({type:"ping"})}unmount(){this.isUnmounting=!0,this.teardownListener(),this.teardownIframe()}get targetOrigin(){var e;const t=/^https?:\/\/[^/]+/i;let n;return this.ssoUrl&&this.ssoUrl.match(t)&&(n=null===(e=this.ssoUrl.match(t))||void 0===e?void 0:e[0]),n||"https://widgets.moneydesktop.com"}postMessageToWidget(e){if(!this.iframe.contentWindow)throw new Error("Unable to postMessage to widget, iframe doesn't exist");this.iframe.contentWindow.postMessage(JSON.stringify(e),this.targetOrigin)}setupIframe(){(function(e){if(function(e){return"url"in e&&"string"==typeof e.url}(e))return Promise.resolve(e.url);const t=e.ssoRequestBuilder||g,n=e.ssoRequestPreprocess||m,i=e.ssoRequestPostprocess||d,s=e.onSsoUrlLoadError||l,r=n(t(e));return fetch(r.url,r.options).then(p).then(i).catch(s)})(Object.assign(Object.assign({},this.options),{widgetType:this.widgetType})).then((e=>{!this.isUnmounting&&e&&(this.ssoUrl=e,this.iframe.setAttribute("data-test-id","mx-widget-iframe"),this.iframe.setAttribute("title",this.options.iframeTitle||"Widget Iframe"),this.iframe.setAttribute("src",e),Object.keys(this.style).forEach((e=>{this.iframe.style[e]=this.style[e]})),this.container.appendChild(this.iframe))}))}teardownIframe(){this.container.contains(this.iframe)&&this.container.removeChild(this.iframe)}setupListener(){window.addEventListener("message",this.messageCallback,!1)}teardownListener(){window.removeEventListener("message",this.messageCallback,!1)}}exports.AccountsWidget=class extends A{get widgetType(){return c.AccountsWidget}},exports.BudgetsWidget=class extends A{get widgetType(){return c.BudgetsWidget}},exports.ConnectWidget=class extends A{get widgetType(){return c.ConnectWidget}get dispatcher(){return M}},exports.ConnectionsWidget=class extends A{get widgetType(){return c.ConnectionsWidget}},exports.DebtsWidget=class extends A{get widgetType(){return c.DebtsWidget}},exports.FinstrongWidget=class extends A{get widgetType(){return c.FinstrongWidget}},exports.GoalsWidget=class extends A{get widgetType(){return c.GoalsWidget}},exports.HelpWidget=class extends A{get widgetType(){return c.HelpWidget}},exports.MasterWidget=class extends A{get widgetType(){return c.MasterWidget}},exports.MiniBudgetsWidget=class extends A{get widgetType(){return c.MiniBudgetsWidget}},exports.MiniFinstrongWidget=class extends A{get widgetType(){return c.MiniFinstrongWidget}},exports.MiniPulseCarouselWidget=class extends A{get widgetType(){return c.MiniPulseCarouselWidget}get dispatcher(){return W}},exports.MiniSpendingWidget=class extends A{get widgetType(){return c.MiniSpendingWidget}},exports.PulseWidget=class extends A{get widgetType(){return c.PulseWidget}get dispatcher(){return W}},exports.SettingsWidget=class extends A{get widgetType(){return c.SettingsWidget}},exports.SpendingWidget=class extends A{get widgetType(){return c.SpendingWidget}},exports.TransactionsWidget=class extends A{get widgetType(){return c.TransactionsWidget}},exports.TrendsWidget=class extends A{get widgetType(){return c.TrendsWidget}},exports.Widget=A;
"use strict";function e(e){return"clientId"in e&&"string"==typeof e.clientId&&"apiKey"in e&&"string"==typeof e.apiKey&&"userGuid"in e&&"string"==typeof e.userGuid&&"environment"in e&&"string"==typeof e.environment}Object.defineProperty(exports,"__esModule",{value:!0});class t extends Error{constructor(){super("Missing required widget props!\n\nComponent needs one of the following groups of props:\n\n - url\n\n - or -\n\n - proxy\n\n - or -\n\n - apiKey\n - clientId\n - environment\n - userGuid"),Object.setPrototypeOf(this,t.prototype)}}class n extends Error{constructor(e){super(`Request failed: ${e}`),this.statusCode=e,Object.setPrototypeOf(this,n.prototype)}}var i;!function(e){e.SAND="sand",e.QA="qa",e.INT="integration",e.PROD="production"}(i||(i={}));const s={[i.SAND]:i.SAND,[i.QA]:i.QA,[i.INT]:i.INT,[i.PROD]:i.PROD};const r={[i.SAND]:"https://api.sand.internal.mx",[i.QA]:"https://api.qa.internal.mx",[i.INT]:"https://int-api.mx.com",[i.PROD]:"https://api.mx.com"};function o(e){const t=function(e){const t=s[e];if(!t)throw new Error(`Invalid MX environment: ${e}`);return t}(e),n=r[t];if(!n)throw new Error(`Missing host for MX environment: ${e}`);return n}var c;function a(e){return{client_redirect_url:e.clientRedirectUrl,color_scheme:e.colorScheme,current_institution_code:e.currentInstitutionCode,current_institution_guid:e.currentInstitutionGuid,current_member_guid:e.currentMemberGuid,disable_institution_search:e.disableInstitutionSearch,include_transactions:e.includeTransactions,is_mobile_webview:e.isMobileWebview||!1,mode:e.mode,oauth_referral_source:e.oauthReferralSource,ui_message_version:e.uiMessageVersion||4,ui_message_webview_url_scheme:e.uiMessageWebviewUrlScheme,update_credentials:e.updateCredentials,widget_type:e.widgetType}}function u(e){return e.widget_url.url}function d(n){const i=function(n){if(function(e){return"proxy"in e&&"string"==typeof e.proxy}(n))return function(e){return e.proxy}(n);if(e(n))return function(e){const t=o(e.environment),n=e.userGuid;return`${t}/users/${n}/widget_urls`}(n);throw new t}(n),s=function(t){const n={Accept:"application/vnd.mx.api.v1+json","Content-Type":"application/json"};t.language&&(n["Accept-Language"]=t.language);if(e(t)){const{apiKey:e,clientId:i}=t,s=btoa(`${i}:${e}`);n.Authorization=`Basic ${s}`}const i="cors",s="POST",r=JSON.stringify({widget_url:a(t)});return{method:s,headers:n,body:r,mode:i}}(n);return{url:i,options:s}}function g(e){return e}function m(e){if(!e.ok)throw new n(e.status);return e.json()}function p(e){console.error(e)}!function(e){e.AccountsWidget="accounts_widget",e.BudgetsWidget="budgets_widget",e.ConnectWidget="connect_widget",e.ConnectionsWidget="connections_widget",e.DebtsWidget="debts_widget",e.FinstrongWidget="finstrong_widget",e.GoalsWidget="goals_widget",e.HelpWidget="help_widget",e.MasterWidget="master_widget",e.MiniBudgetsWidget="mini_budgets_widget",e.MiniFinstrongWidget="mini_finstrong_widget",e.MiniPulseCarouselWidget="mini_pulse_carousel_widget",e.MiniSpendingWidget="mini_spending_widget",e.PulseWidget="pulse_widget",e.SettingsWidget="settings_widget",e.SpendingWidget="spending_widget",e.TransactionsWidget="transactions_widget",e.TrendsWidget="trends_widget"}(c||(c={}));class l extends Error{messageType;field;expectedType;gotValue;constructor(e,t,n,i){super(`Unable to decode '${t}' from '${e}'`),this.messageType=e,this.field=t,this.expectedType=n,this.gotValue=i,Object.setPrototypeOf(this,l.prototype)}}class _ extends Error{postMessageType;constructor(e){super(`Unknown post message: ${e}`),this.postMessageType=e,Object.setPrototypeOf(this,_.prototype)}}function C(e,t,n,i,s={}){const r=e[n],o=void 0!==r,c="string"==typeof r,a="number"==typeof r,u="object"==typeof r&&!Array.isArray(r),d="boolean"==typeof r,g="string"===i,m="number"===i,p=i instanceof Array,_="object"==typeof i&&!Array.isArray(i),h="boolean"===i;if(o||!s.optional){if(!o)throw new l(t,n,i,r);if(g&&!c)throw new l(t,n,i,r);if(m&&!a)throw new l(t,n,i,r);if(!(!p||c&&i.includes(r)))throw new l(t,n,i,r);if(_&&!u)throw new l(t,n,i,r);if(h&&!d)throw new l(t,n,i,r);_&&u&&Object.keys(i).forEach((e=>{C(r,t,e,i[e])}))}}var h;!function(e){e.Load="mx/load",e.Ping="mx/ping",e.Navigation="mx/navigation",e.FocusTrap="mx/focusTrap",e.ClientOAuthComplete="mx/client/oauthComplete",e.ConnectLoaded="mx/connect/loaded",e.ConnectEnterCredentials="mx/connect/enterCredentials",e.ConnectInstitutionSearch="mx/connect/institutionSearch",e.ConnectSelectedInstitution="mx/connect/selectedInstitution",e.ConnectMemberConnected="mx/connect/memberConnected",e.ConnectConnectedPrimaryAction="mx/connect/connected/primaryAction",e.ConnectMemberDeleted="mx/connect/memberDeleted",e.ConnectCreateMemberError="mx/connect/createMemberError",e.ConnectMemberStatusUpdate="mx/connect/memberStatusUpdate",e.ConnectOAuthError="mx/connect/oauthError",e.ConnectOAuthRequested="mx/connect/oauthRequested",e.ConnectStepChange="mx/connect/stepChange",e.ConnectSubmitMFA="mx/connect/submitMFA",e.ConnectUpdateCredentials="mx/connect/updateCredentials",e.PulseOverdraftWarningCtaTransferFunds="mx/pulse/overdraftWarning/cta/transferFunds",e.AccountCreated="mx/account/created"}(h||(h={}));const b={[h.Load]:h.Load,[h.Ping]:h.Ping,[h.Navigation]:h.Navigation,[h.FocusTrap]:h.FocusTrap,"mx/focustrap":h.FocusTrap,[h.ClientOAuthComplete]:h.ClientOAuthComplete,"mx/client/oauthcomplete":h.ClientOAuthComplete,[h.ConnectLoaded]:h.ConnectLoaded,[h.ConnectEnterCredentials]:h.ConnectEnterCredentials,"mx/connect/entercredentials":h.ConnectEnterCredentials,[h.ConnectInstitutionSearch]:h.ConnectInstitutionSearch,"mx/connect/institutionsearch":h.ConnectInstitutionSearch,[h.ConnectSelectedInstitution]:h.ConnectSelectedInstitution,"mx/connect/selectedinstitution":h.ConnectSelectedInstitution,[h.ConnectMemberConnected]:h.ConnectMemberConnected,"mx/connect/memberconnected":h.ConnectMemberConnected,[h.ConnectConnectedPrimaryAction]:h.ConnectConnectedPrimaryAction,"mx/connect/connected/primaryaction":h.ConnectConnectedPrimaryAction,[h.ConnectMemberDeleted]:h.ConnectMemberDeleted,"mx/connect/memberdeleted":h.ConnectMemberDeleted,[h.ConnectCreateMemberError]:h.ConnectCreateMemberError,"mx/connect/createmembererror":h.ConnectCreateMemberError,[h.ConnectMemberStatusUpdate]:h.ConnectMemberStatusUpdate,"mx/connect/memberstatusupdate":h.ConnectMemberStatusUpdate,[h.ConnectOAuthError]:h.ConnectOAuthError,"mx/connect/oautherror":h.ConnectOAuthError,[h.ConnectOAuthRequested]:h.ConnectOAuthRequested,"mx/connect/oauthrequested":h.ConnectOAuthRequested,[h.ConnectStepChange]:h.ConnectStepChange,"mx/connect/stepchange":h.ConnectStepChange,[h.ConnectSubmitMFA]:h.ConnectSubmitMFA,"mx/connect/submitmfa":h.ConnectSubmitMFA,[h.ConnectUpdateCredentials]:h.ConnectUpdateCredentials,"mx/connect/updatecredentials":h.ConnectUpdateCredentials,[h.PulseOverdraftWarningCtaTransferFunds]:h.PulseOverdraftWarningCtaTransferFunds,"mx/pulse/overdraftwarning/cta/transferfunds":h.PulseOverdraftWarningCtaTransferFunds,[h.AccountCreated]:h.AccountCreated};function x(e){const t=e.type||"type not provided";let n;if(!t||!(t in b))throw new _(t);n=b[t];const i=function(e,t){switch(e){case h.Load:return{type:e};case h.Ping:return C(t,"mx/ping","user_guid","string"),C(t,"mx/ping","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case h.Navigation:return C(t,"mx/navigation","user_guid","string"),C(t,"mx/navigation","session_guid","string"),C(t,"mx/navigation","did_go_back","boolean"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,did_go_back:t.did_go_back};case h.FocusTrap:return C(t,"mx/focusTrap","user_guid","string"),C(t,"mx/focusTrap","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case h.ClientOAuthComplete:return C(t,"mx/client/oauthComplete","url","string"),{type:e,url:t.url};case h.ConnectLoaded:return C(t,"mx/connect/loaded","user_guid","string"),C(t,"mx/connect/loaded","session_guid","string"),C(t,"mx/connect/loaded","initial_step",["search","selectMember","enterCreds","mfa","connected","loginError","disclosure"]),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,initial_step:t.initial_step};case h.ConnectEnterCredentials:return C(t,"mx/connect/enterCredentials","user_guid","string"),C(t,"mx/connect/enterCredentials","session_guid","string"),C(t,"mx/connect/enterCredentials","institution",{code:"string",guid:"string"}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,institution:t.institution};case h.ConnectInstitutionSearch:return C(t,"mx/connect/institutionSearch","user_guid","string"),C(t,"mx/connect/institutionSearch","session_guid","string"),C(t,"mx/connect/institutionSearch","query","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,query:t.query};case h.ConnectSelectedInstitution:return C(t,"mx/connect/selectedInstitution","user_guid","string"),C(t,"mx/connect/selectedInstitution","session_guid","string"),C(t,"mx/connect/selectedInstitution","code","string"),C(t,"mx/connect/selectedInstitution","guid","string"),C(t,"mx/connect/selectedInstitution","name","string"),C(t,"mx/connect/selectedInstitution","url","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,code:t.code,guid:t.guid,name:t.name,url:t.url};case h.ConnectMemberConnected:return C(t,"mx/connect/memberConnected","user_guid","string"),C(t,"mx/connect/memberConnected","session_guid","string"),C(t,"mx/connect/memberConnected","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case h.ConnectConnectedPrimaryAction:return C(t,"mx/connect/connected/primaryAction","user_guid","string"),C(t,"mx/connect/connected/primaryAction","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case h.ConnectMemberDeleted:return C(t,"mx/connect/memberDeleted","user_guid","string"),C(t,"mx/connect/memberDeleted","session_guid","string"),C(t,"mx/connect/memberDeleted","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case h.ConnectCreateMemberError:return C(t,"mx/connect/createMemberError","user_guid","string"),C(t,"mx/connect/createMemberError","session_guid","string"),C(t,"mx/connect/createMemberError","institution_guid","string"),C(t,"mx/connect/createMemberError","institution_code","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,institution_guid:t.institution_guid,institution_code:t.institution_code};case h.ConnectMemberStatusUpdate:return C(t,"mx/connect/memberStatusUpdate","user_guid","string"),C(t,"mx/connect/memberStatusUpdate","session_guid","string"),C(t,"mx/connect/memberStatusUpdate","member_guid","string"),C(t,"mx/connect/memberStatusUpdate","connection_status","number"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid,connection_status:t.connection_status};case h.ConnectOAuthError:return C(t,"mx/connect/oauthError","user_guid","string"),C(t,"mx/connect/oauthError","session_guid","string"),C(t,"mx/connect/oauthError","member_guid","string",{optional:!0}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case h.ConnectOAuthRequested:return C(t,"mx/connect/oauthRequested","user_guid","string"),C(t,"mx/connect/oauthRequested","session_guid","string"),C(t,"mx/connect/oauthRequested","url","string"),C(t,"mx/connect/oauthRequested","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,url:t.url,member_guid:t.member_guid};case h.ConnectStepChange:return C(t,"mx/connect/stepChange","user_guid","string"),C(t,"mx/connect/stepChange","session_guid","string"),C(t,"mx/connect/stepChange","previous","string"),C(t,"mx/connect/stepChange","current","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,previous:t.previous,current:t.current};case h.ConnectSubmitMFA:return C(t,"mx/connect/submitMFA","user_guid","string"),C(t,"mx/connect/submitMFA","session_guid","string"),C(t,"mx/connect/submitMFA","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case h.ConnectUpdateCredentials:return C(t,"mx/connect/updateCredentials","user_guid","string"),C(t,"mx/connect/updateCredentials","session_guid","string"),C(t,"mx/connect/updateCredentials","member_guid","string"),C(t,"mx/connect/updateCredentials","institution",{code:"string",guid:"string"}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid,institution:t.institution};case h.PulseOverdraftWarningCtaTransferFunds:return C(t,"mx/pulse/overdraftWarning/cta/transferFunds","account_guid","string"),C(t,"mx/pulse/overdraftWarning/cta/transferFunds","amount","number"),{type:e,account_guid:t.account_guid,amount:t.amount};case h.AccountCreated:return C(t,"mx/account/created","guid","string"),{type:e,guid:t.guid};default:throw new _(e)}}(n,e.metadata||{});return i}function f(e,t,n){if(t instanceof l)n.onInvalidMessageError?.(e,t);else{if(!(t instanceof _))throw t;n.onInvalidMessageError?.(e,t)}}function y(e,t){t.onMessage?.(e)}function w(e,t){try{y(e,t);!function(e,t){switch(e.type){case h.Load:t.onLoad?.(e);break;case h.Ping:t.onPing?.(e);break;case h.Navigation:t.onNavigation?.(e);break;case h.FocusTrap:t.onFocusTrap?.(e);break;case h.AccountCreated:t.onAccountCreated?.(e);break;default:throw new _(e.type)}}(x(e.data),t)}catch(n){f(e,n,t)}}function M(e,t){try{y(e,t);!function(e,t){switch(e.type){case h.Load:t.onLoad?.(e);break;case h.Ping:t.onPing?.(e);break;case h.Navigation:t.onNavigation?.(e);break;case h.FocusTrap:t.onFocusTrap?.(e);break;case h.AccountCreated:t.onAccountCreated?.(e);break;case h.ConnectLoaded:t.onLoaded?.(e);break;case h.ConnectEnterCredentials:t.onEnterCredentials?.(e);break;case h.ConnectInstitutionSearch:t.onInstitutionSearch?.(e);break;case h.ConnectSelectedInstitution:t.onSelectedInstitution?.(e);break;case h.ConnectMemberConnected:t.onMemberConnected?.(e);break;case h.ConnectConnectedPrimaryAction:t.onConnectedPrimaryAction?.(e);break;case h.ConnectMemberDeleted:t.onMemberDeleted?.(e);break;case h.ConnectCreateMemberError:t.onCreateMemberError?.(e);break;case h.ConnectMemberStatusUpdate:t.onMemberStatusUpdate?.(e);break;case h.ConnectOAuthError:t.onOAuthError?.(e);break;case h.ConnectOAuthRequested:t.onOAuthRequested?.(e);break;case h.ConnectStepChange:t.onStepChange?.(e);break;case h.ConnectSubmitMFA:t.onSubmitMFA?.(e);break;case h.ConnectUpdateCredentials:t.onUpdateCredentials?.(e);break;default:throw new _(e.type)}}(x(e.data),t)}catch(n){f(e,n,t)}}function W(e,t){try{y(e,t);!function(e,t){switch(e.type){case h.Load:t.onLoad?.(e);break;case h.Ping:t.onPing?.(e);break;case h.Navigation:t.onNavigation?.(e);break;case h.FocusTrap:t.onFocusTrap?.(e);break;case h.AccountCreated:t.onAccountCreated?.(e);break;case h.PulseOverdraftWarningCtaTransferFunds:t.onOverdraftWarningCtaTransferFunds?.(e);break;default:throw new _(e.type)}}(x(e.data),t)}catch(n){f(e,n,t)}}class A{constructor(e){if(this.isUnmounting=!1,this.options=e,this.iframe=document.createElement("iframe"),this.style=e.style||{border:"none",height:"550px",width:"320px"},this.messageCallback=e=>{this.handleMXPostMessage(e)},"string"==typeof e.container){const t=document.querySelector(e.container);if(!t)throw new Error(`Unable to find widget container. Ensure that an element matching a selector for '${this.options.container}' is available in the DOM before you initialize the widget.`);this.container=t}else{if(!(e.container instanceof Element))throw new Error("Invalid or missing value for container property, expecting a query selector string or a DOM Element.");this.container=e.container}this.setupIframe(),this.setupListener()}get widgetType(){if(this.options.widgetType)return this.options.widgetType;throw new Error("Missing value for widgetType property, expecting a string (eg. connect_widget).")}get dispatcher(){return w}navigateBack(){return new Promise((e=>{const t=this.iframe.contentWindow,n={mx:!0,type:h.Navigation,payload:{action:"back"}};if(!t)throw new Error("Unable to navigate back, iframe element is not available.");const i=t=>{t.data.type===h.Navigation&&(window.removeEventListener("message",i),e(t.data.metadata.did_go_back))};window.addEventListener("message",i,!1),t.postMessage(JSON.stringify(n),this.targetOrigin)}))}ping(){this.postMessageToWidget({type:"ping"})}unmount(){this.isUnmounting=!0,this.teardownListener(),this.teardownIframe()}get targetOrigin(){var e;const t=/^https?:\/\/[^/]+/i;let n;return this.ssoUrl&&this.ssoUrl.match(t)&&(n=null===(e=this.ssoUrl.match(t))||void 0===e?void 0:e[0]),n||"https://widgets.moneydesktop.com"}handleMXPostMessage(e){e.data.mx&&(this.dispatcher(e,this.options),e.data.type===h.Load&&this.postMessageToWidget({type:"mx/sdk/info",metadata:{sdk:"web",version:"0.0.10"}}))}postMessageToWidget(e){if(!this.iframe.contentWindow)throw new Error("Unable to postMessage to widget, iframe doesn't exist");this.iframe.contentWindow.postMessage(JSON.stringify(e),this.targetOrigin)}setupIframe(){(function(e){if(function(e){return"url"in e&&"string"==typeof e.url}(e))return Promise.resolve(e.url);const t=e.ssoRequestBuilder||d,n=e.ssoRequestPreprocess||g,i=e.ssoRequestPostprocess||u,s=e.onSsoUrlLoadError||p,r=n(t(e));return fetch(r.url,r.options).then(m).then(i).catch(s)})(Object.assign(Object.assign({},this.options),{widgetType:this.widgetType})).then((e=>{!this.isUnmounting&&e&&(this.ssoUrl=e,this.iframe.setAttribute("data-test-id","mx-widget-iframe"),this.iframe.setAttribute("title",this.options.iframeTitle||"Widget Iframe"),this.iframe.setAttribute("src",e),Object.keys(this.style).forEach((e=>{this.iframe.style[e]=this.style[e]})),this.container.appendChild(this.iframe))}))}teardownIframe(){this.container.contains(this.iframe)&&this.container.removeChild(this.iframe)}setupListener(){window.addEventListener("message",this.messageCallback,!1)}teardownListener(){window.removeEventListener("message",this.messageCallback,!1)}}exports.AccountsWidget=class extends A{get widgetType(){return c.AccountsWidget}},exports.BudgetsWidget=class extends A{get widgetType(){return c.BudgetsWidget}},exports.ConnectWidget=class extends A{get widgetType(){return c.ConnectWidget}get dispatcher(){return M}},exports.ConnectionsWidget=class extends A{get widgetType(){return c.ConnectionsWidget}},exports.DebtsWidget=class extends A{get widgetType(){return c.DebtsWidget}},exports.FinstrongWidget=class extends A{get widgetType(){return c.FinstrongWidget}},exports.GoalsWidget=class extends A{get widgetType(){return c.GoalsWidget}},exports.HelpWidget=class extends A{get widgetType(){return c.HelpWidget}},exports.MasterWidget=class extends A{get widgetType(){return c.MasterWidget}},exports.MiniBudgetsWidget=class extends A{get widgetType(){return c.MiniBudgetsWidget}},exports.MiniFinstrongWidget=class extends A{get widgetType(){return c.MiniFinstrongWidget}},exports.MiniPulseCarouselWidget=class extends A{get widgetType(){return c.MiniPulseCarouselWidget}get dispatcher(){return W}},exports.MiniSpendingWidget=class extends A{get widgetType(){return c.MiniSpendingWidget}},exports.PulseWidget=class extends A{get widgetType(){return c.PulseWidget}get dispatcher(){return W}},exports.SettingsWidget=class extends A{get widgetType(){return c.SettingsWidget}},exports.SpendingWidget=class extends A{get widgetType(){return c.SpendingWidget}},exports.TransactionsWidget=class extends A{get widgetType(){return c.TransactionsWidget}},exports.TrendsWidget=class extends A{get widgetType(){return c.TrendsWidget}},exports.Widget=A;

@@ -196,2 +196,4 @@ function isSsoUrlMethodUrl(props) {

const sdkVersion = "0.0.10";
// This is an internal error. Thrown when we are decoding a post message's

@@ -768,5 +770,3 @@ // metadata and we encountered a missing field or an invalid value. This

this.messageCallback = (event) => {
if (event.data.mx) {
this.dispatcher(event, this.options);
}
this.handleMXPostMessage(event);
};

@@ -832,2 +832,17 @@ if (typeof options.container === "string") {

}
handleMXPostMessage(event) {
if (!event.data.mx) {
return;
}
this.dispatcher(event, this.options);
if (event.data.type === Type.Load) {
this.postMessageToWidget({
type: "mx/sdk/info",
metadata: {
sdk: "web",
version: sdkVersion,
},
});
}
}
postMessageToWidget(payload) {

@@ -834,0 +849,0 @@ if (!this.iframe.contentWindow) {

@@ -1,1 +0,1 @@

function e(e){return"clientId"in e&&"string"==typeof e.clientId&&"apiKey"in e&&"string"==typeof e.apiKey&&"userGuid"in e&&"string"==typeof e.userGuid&&"environment"in e&&"string"==typeof e.environment}class t extends Error{constructor(){super("Missing required widget props!\n\nComponent needs one of the following groups of props:\n\n - url\n\n - or -\n\n - proxy\n\n - or -\n\n - apiKey\n - clientId\n - environment\n - userGuid"),Object.setPrototypeOf(this,t.prototype)}}class n extends Error{constructor(e){super(`Request failed: ${e}`),this.statusCode=e,Object.setPrototypeOf(this,n.prototype)}}var i;!function(e){e.SAND="sand",e.QA="qa",e.INT="integration",e.PROD="production"}(i||(i={}));const r={[i.SAND]:i.SAND,[i.QA]:i.QA,[i.INT]:i.INT,[i.PROD]:i.PROD};const s={[i.SAND]:"https://api.sand.internal.mx",[i.QA]:"https://api.qa.internal.mx",[i.INT]:"https://int-api.mx.com",[i.PROD]:"https://api.mx.com"};function o(e){const t=function(e){const t=r[e];if(!t)throw new Error(`Invalid MX environment: ${e}`);return t}(e),n=s[t];if(!n)throw new Error(`Missing host for MX environment: ${e}`);return n}var c,a;function u(e){return{client_redirect_url:e.clientRedirectUrl,color_scheme:e.colorScheme,current_institution_code:e.currentInstitutionCode,current_institution_guid:e.currentInstitutionGuid,current_member_guid:e.currentMemberGuid,disable_institution_search:e.disableInstitutionSearch,include_transactions:e.includeTransactions,is_mobile_webview:e.isMobileWebview||!1,mode:e.mode,oauth_referral_source:e.oauthReferralSource,ui_message_version:e.uiMessageVersion||4,ui_message_webview_url_scheme:e.uiMessageWebviewUrlScheme,update_credentials:e.updateCredentials,widget_type:e.widgetType}}function d(e){return e.widget_url.url}function g(n){const i=function(n){if(function(e){return"proxy"in e&&"string"==typeof e.proxy}(n))return function(e){return e.proxy}(n);if(e(n))return function(e){const t=o(e.environment),n=e.userGuid;return`${t}/users/${n}/widget_urls`}(n);throw new t}(n),r=function(t){const n={Accept:"application/vnd.mx.api.v1+json","Content-Type":"application/json"};t.language&&(n["Accept-Language"]=t.language);if(e(t)){const{apiKey:e,clientId:i}=t,r=btoa(`${i}:${e}`);n.Authorization=`Basic ${r}`}const i="cors",r="POST",s=JSON.stringify({widget_url:u(t)});return{method:r,headers:n,body:s,mode:i}}(n);return{url:i,options:r}}function m(e){return e}function p(e){if(!e.ok)throw new n(e.status);return e.json()}function l(e){console.error(e)}!function(e){e.AccountsWidget="accounts_widget",e.BudgetsWidget="budgets_widget",e.ConnectWidget="connect_widget",e.ConnectionsWidget="connections_widget",e.DebtsWidget="debts_widget",e.FinstrongWidget="finstrong_widget",e.GoalsWidget="goals_widget",e.HelpWidget="help_widget",e.MasterWidget="master_widget",e.MiniBudgetsWidget="mini_budgets_widget",e.MiniFinstrongWidget="mini_finstrong_widget",e.MiniPulseCarouselWidget="mini_pulse_carousel_widget",e.MiniSpendingWidget="mini_spending_widget",e.PulseWidget="pulse_widget",e.SettingsWidget="settings_widget",e.SpendingWidget="spending_widget",e.TransactionsWidget="transactions_widget",e.TrendsWidget="trends_widget"}(c||(c={}));class _ extends Error{messageType;field;expectedType;gotValue;constructor(e,t,n,i){super(`Unable to decode '${t}' from '${e}'`),this.messageType=e,this.field=t,this.expectedType=n,this.gotValue=i,Object.setPrototypeOf(this,_.prototype)}}class C extends Error{postMessageType;constructor(e){super(`Unknown post message: ${e}`),this.postMessageType=e,Object.setPrototypeOf(this,C.prototype)}}function h(e,t,n,i,r={}){const s=e[n],o=void 0!==s,c="string"==typeof s,a="number"==typeof s,u="object"==typeof s&&!Array.isArray(s),d="boolean"==typeof s,g="string"===i,m="number"===i,p=i instanceof Array,l="object"==typeof i&&!Array.isArray(i),C="boolean"===i;if(o||!r.optional){if(!o)throw new _(t,n,i,s);if(g&&!c)throw new _(t,n,i,s);if(m&&!a)throw new _(t,n,i,s);if(!(!p||c&&i.includes(s)))throw new _(t,n,i,s);if(l&&!u)throw new _(t,n,i,s);if(C&&!d)throw new _(t,n,i,s);l&&u&&Object.keys(i).forEach((e=>{h(s,t,e,i[e])}))}}!function(e){e.Load="mx/load",e.Ping="mx/ping",e.Navigation="mx/navigation",e.FocusTrap="mx/focusTrap",e.ClientOAuthComplete="mx/client/oauthComplete",e.ConnectLoaded="mx/connect/loaded",e.ConnectEnterCredentials="mx/connect/enterCredentials",e.ConnectInstitutionSearch="mx/connect/institutionSearch",e.ConnectSelectedInstitution="mx/connect/selectedInstitution",e.ConnectMemberConnected="mx/connect/memberConnected",e.ConnectConnectedPrimaryAction="mx/connect/connected/primaryAction",e.ConnectMemberDeleted="mx/connect/memberDeleted",e.ConnectCreateMemberError="mx/connect/createMemberError",e.ConnectMemberStatusUpdate="mx/connect/memberStatusUpdate",e.ConnectOAuthError="mx/connect/oauthError",e.ConnectOAuthRequested="mx/connect/oauthRequested",e.ConnectStepChange="mx/connect/stepChange",e.ConnectSubmitMFA="mx/connect/submitMFA",e.ConnectUpdateCredentials="mx/connect/updateCredentials",e.PulseOverdraftWarningCtaTransferFunds="mx/pulse/overdraftWarning/cta/transferFunds",e.AccountCreated="mx/account/created"}(a||(a={}));const b={[a.Load]:a.Load,[a.Ping]:a.Ping,[a.Navigation]:a.Navigation,[a.FocusTrap]:a.FocusTrap,"mx/focustrap":a.FocusTrap,[a.ClientOAuthComplete]:a.ClientOAuthComplete,"mx/client/oauthcomplete":a.ClientOAuthComplete,[a.ConnectLoaded]:a.ConnectLoaded,[a.ConnectEnterCredentials]:a.ConnectEnterCredentials,"mx/connect/entercredentials":a.ConnectEnterCredentials,[a.ConnectInstitutionSearch]:a.ConnectInstitutionSearch,"mx/connect/institutionsearch":a.ConnectInstitutionSearch,[a.ConnectSelectedInstitution]:a.ConnectSelectedInstitution,"mx/connect/selectedinstitution":a.ConnectSelectedInstitution,[a.ConnectMemberConnected]:a.ConnectMemberConnected,"mx/connect/memberconnected":a.ConnectMemberConnected,[a.ConnectConnectedPrimaryAction]:a.ConnectConnectedPrimaryAction,"mx/connect/connected/primaryaction":a.ConnectConnectedPrimaryAction,[a.ConnectMemberDeleted]:a.ConnectMemberDeleted,"mx/connect/memberdeleted":a.ConnectMemberDeleted,[a.ConnectCreateMemberError]:a.ConnectCreateMemberError,"mx/connect/createmembererror":a.ConnectCreateMemberError,[a.ConnectMemberStatusUpdate]:a.ConnectMemberStatusUpdate,"mx/connect/memberstatusupdate":a.ConnectMemberStatusUpdate,[a.ConnectOAuthError]:a.ConnectOAuthError,"mx/connect/oautherror":a.ConnectOAuthError,[a.ConnectOAuthRequested]:a.ConnectOAuthRequested,"mx/connect/oauthrequested":a.ConnectOAuthRequested,[a.ConnectStepChange]:a.ConnectStepChange,"mx/connect/stepchange":a.ConnectStepChange,[a.ConnectSubmitMFA]:a.ConnectSubmitMFA,"mx/connect/submitmfa":a.ConnectSubmitMFA,[a.ConnectUpdateCredentials]:a.ConnectUpdateCredentials,"mx/connect/updatecredentials":a.ConnectUpdateCredentials,[a.PulseOverdraftWarningCtaTransferFunds]:a.PulseOverdraftWarningCtaTransferFunds,"mx/pulse/overdraftwarning/cta/transferfunds":a.PulseOverdraftWarningCtaTransferFunds,[a.AccountCreated]:a.AccountCreated};function f(e){const t=e.type||"type not provided";let n;if(!t||!(t in b))throw new C(t);n=b[t];const i=function(e,t){switch(e){case a.Load:return{type:e};case a.Ping:return h(t,"mx/ping","user_guid","string"),h(t,"mx/ping","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case a.Navigation:return h(t,"mx/navigation","user_guid","string"),h(t,"mx/navigation","session_guid","string"),h(t,"mx/navigation","did_go_back","boolean"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,did_go_back:t.did_go_back};case a.FocusTrap:return h(t,"mx/focusTrap","user_guid","string"),h(t,"mx/focusTrap","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case a.ClientOAuthComplete:return h(t,"mx/client/oauthComplete","url","string"),{type:e,url:t.url};case a.ConnectLoaded:return h(t,"mx/connect/loaded","user_guid","string"),h(t,"mx/connect/loaded","session_guid","string"),h(t,"mx/connect/loaded","initial_step",["search","selectMember","enterCreds","mfa","connected","loginError","disclosure"]),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,initial_step:t.initial_step};case a.ConnectEnterCredentials:return h(t,"mx/connect/enterCredentials","user_guid","string"),h(t,"mx/connect/enterCredentials","session_guid","string"),h(t,"mx/connect/enterCredentials","institution",{code:"string",guid:"string"}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,institution:t.institution};case a.ConnectInstitutionSearch:return h(t,"mx/connect/institutionSearch","user_guid","string"),h(t,"mx/connect/institutionSearch","session_guid","string"),h(t,"mx/connect/institutionSearch","query","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,query:t.query};case a.ConnectSelectedInstitution:return h(t,"mx/connect/selectedInstitution","user_guid","string"),h(t,"mx/connect/selectedInstitution","session_guid","string"),h(t,"mx/connect/selectedInstitution","code","string"),h(t,"mx/connect/selectedInstitution","guid","string"),h(t,"mx/connect/selectedInstitution","name","string"),h(t,"mx/connect/selectedInstitution","url","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,code:t.code,guid:t.guid,name:t.name,url:t.url};case a.ConnectMemberConnected:return h(t,"mx/connect/memberConnected","user_guid","string"),h(t,"mx/connect/memberConnected","session_guid","string"),h(t,"mx/connect/memberConnected","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case a.ConnectConnectedPrimaryAction:return h(t,"mx/connect/connected/primaryAction","user_guid","string"),h(t,"mx/connect/connected/primaryAction","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case a.ConnectMemberDeleted:return h(t,"mx/connect/memberDeleted","user_guid","string"),h(t,"mx/connect/memberDeleted","session_guid","string"),h(t,"mx/connect/memberDeleted","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case a.ConnectCreateMemberError:return h(t,"mx/connect/createMemberError","user_guid","string"),h(t,"mx/connect/createMemberError","session_guid","string"),h(t,"mx/connect/createMemberError","institution_guid","string"),h(t,"mx/connect/createMemberError","institution_code","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,institution_guid:t.institution_guid,institution_code:t.institution_code};case a.ConnectMemberStatusUpdate:return h(t,"mx/connect/memberStatusUpdate","user_guid","string"),h(t,"mx/connect/memberStatusUpdate","session_guid","string"),h(t,"mx/connect/memberStatusUpdate","member_guid","string"),h(t,"mx/connect/memberStatusUpdate","connection_status","number"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid,connection_status:t.connection_status};case a.ConnectOAuthError:return h(t,"mx/connect/oauthError","user_guid","string"),h(t,"mx/connect/oauthError","session_guid","string"),h(t,"mx/connect/oauthError","member_guid","string",{optional:!0}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case a.ConnectOAuthRequested:return h(t,"mx/connect/oauthRequested","user_guid","string"),h(t,"mx/connect/oauthRequested","session_guid","string"),h(t,"mx/connect/oauthRequested","url","string"),h(t,"mx/connect/oauthRequested","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,url:t.url,member_guid:t.member_guid};case a.ConnectStepChange:return h(t,"mx/connect/stepChange","user_guid","string"),h(t,"mx/connect/stepChange","session_guid","string"),h(t,"mx/connect/stepChange","previous","string"),h(t,"mx/connect/stepChange","current","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,previous:t.previous,current:t.current};case a.ConnectSubmitMFA:return h(t,"mx/connect/submitMFA","user_guid","string"),h(t,"mx/connect/submitMFA","session_guid","string"),h(t,"mx/connect/submitMFA","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case a.ConnectUpdateCredentials:return h(t,"mx/connect/updateCredentials","user_guid","string"),h(t,"mx/connect/updateCredentials","session_guid","string"),h(t,"mx/connect/updateCredentials","member_guid","string"),h(t,"mx/connect/updateCredentials","institution",{code:"string",guid:"string"}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid,institution:t.institution};case a.PulseOverdraftWarningCtaTransferFunds:return h(t,"mx/pulse/overdraftWarning/cta/transferFunds","account_guid","string"),h(t,"mx/pulse/overdraftWarning/cta/transferFunds","amount","number"),{type:e,account_guid:t.account_guid,amount:t.amount};case a.AccountCreated:return h(t,"mx/account/created","guid","string"),{type:e,guid:t.guid};default:throw new C(e)}}(n,e.metadata||{});return i}function x(e,t,n){if(t instanceof _)n.onInvalidMessageError?.(e,t);else{if(!(t instanceof C))throw t;n.onInvalidMessageError?.(e,t)}}function y(e,t){t.onMessage?.(e)}function w(e,t){try{y(e,t);!function(e,t){switch(e.type){case a.Load:t.onLoad?.(e);break;case a.Ping:t.onPing?.(e);break;case a.Navigation:t.onNavigation?.(e);break;case a.FocusTrap:t.onFocusTrap?.(e);break;case a.AccountCreated:t.onAccountCreated?.(e);break;default:throw new C(e.type)}}(f(e.data),t)}catch(n){x(e,n,t)}}function M(e,t){try{y(e,t);!function(e,t){switch(e.type){case a.Load:t.onLoad?.(e);break;case a.Ping:t.onPing?.(e);break;case a.Navigation:t.onNavigation?.(e);break;case a.FocusTrap:t.onFocusTrap?.(e);break;case a.AccountCreated:t.onAccountCreated?.(e);break;case a.ConnectLoaded:t.onLoaded?.(e);break;case a.ConnectEnterCredentials:t.onEnterCredentials?.(e);break;case a.ConnectInstitutionSearch:t.onInstitutionSearch?.(e);break;case a.ConnectSelectedInstitution:t.onSelectedInstitution?.(e);break;case a.ConnectMemberConnected:t.onMemberConnected?.(e);break;case a.ConnectConnectedPrimaryAction:t.onConnectedPrimaryAction?.(e);break;case a.ConnectMemberDeleted:t.onMemberDeleted?.(e);break;case a.ConnectCreateMemberError:t.onCreateMemberError?.(e);break;case a.ConnectMemberStatusUpdate:t.onMemberStatusUpdate?.(e);break;case a.ConnectOAuthError:t.onOAuthError?.(e);break;case a.ConnectOAuthRequested:t.onOAuthRequested?.(e);break;case a.ConnectStepChange:t.onStepChange?.(e);break;case a.ConnectSubmitMFA:t.onSubmitMFA?.(e);break;case a.ConnectUpdateCredentials:t.onUpdateCredentials?.(e);break;default:throw new C(e.type)}}(f(e.data),t)}catch(n){x(e,n,t)}}function A(e,t){try{y(e,t);!function(e,t){switch(e.type){case a.Load:t.onLoad?.(e);break;case a.Ping:t.onPing?.(e);break;case a.Navigation:t.onNavigation?.(e);break;case a.FocusTrap:t.onFocusTrap?.(e);break;case a.AccountCreated:t.onAccountCreated?.(e);break;case a.PulseOverdraftWarningCtaTransferFunds:t.onOverdraftWarningCtaTransferFunds?.(e);break;default:throw new C(e.type)}}(f(e.data),t)}catch(n){x(e,n,t)}}class v{constructor(e){if(this.isUnmounting=!1,this.options=e,this.iframe=document.createElement("iframe"),this.style=e.style||{border:"none",height:"550px",width:"320px"},this.messageCallback=e=>{e.data.mx&&this.dispatcher(e,this.options)},"string"==typeof e.container){const t=document.querySelector(e.container);if(!t)throw new Error(`Unable to find widget container. Ensure that an element matching a selector for '${this.options.container}' is available in the DOM before you initialize the widget.`);this.container=t}else{if(!(e.container instanceof Element))throw new Error("Invalid or missing value for container property, expecting a query selector string or a DOM Element.");this.container=e.container}this.setupIframe(),this.setupListener()}get widgetType(){if(this.options.widgetType)return this.options.widgetType;throw new Error("Missing value for widgetType property, expecting a string (eg. connect_widget).")}get dispatcher(){return w}navigateBack(){return new Promise((e=>{const t=this.iframe.contentWindow,n={mx:!0,type:a.Navigation,payload:{action:"back"}};if(!t)throw new Error("Unable to navigate back, iframe element is not available.");const i=t=>{t.data.type===a.Navigation&&(window.removeEventListener("message",i),e(t.data.metadata.did_go_back))};window.addEventListener("message",i,!1),t.postMessage(JSON.stringify(n),this.targetOrigin)}))}ping(){this.postMessageToWidget({type:"ping"})}unmount(){this.isUnmounting=!0,this.teardownListener(),this.teardownIframe()}get targetOrigin(){var e;const t=/^https?:\/\/[^/]+/i;let n;return this.ssoUrl&&this.ssoUrl.match(t)&&(n=null===(e=this.ssoUrl.match(t))||void 0===e?void 0:e[0]),n||"https://widgets.moneydesktop.com"}postMessageToWidget(e){if(!this.iframe.contentWindow)throw new Error("Unable to postMessage to widget, iframe doesn't exist");this.iframe.contentWindow.postMessage(JSON.stringify(e),this.targetOrigin)}setupIframe(){(function(e){if(function(e){return"url"in e&&"string"==typeof e.url}(e))return Promise.resolve(e.url);const t=e.ssoRequestBuilder||g,n=e.ssoRequestPreprocess||m,i=e.ssoRequestPostprocess||d,r=e.onSsoUrlLoadError||l,s=n(t(e));return fetch(s.url,s.options).then(p).then(i).catch(r)})(Object.assign(Object.assign({},this.options),{widgetType:this.widgetType})).then((e=>{!this.isUnmounting&&e&&(this.ssoUrl=e,this.iframe.setAttribute("data-test-id","mx-widget-iframe"),this.iframe.setAttribute("title",this.options.iframeTitle||"Widget Iframe"),this.iframe.setAttribute("src",e),Object.keys(this.style).forEach((e=>{this.iframe.style[e]=this.style[e]})),this.container.appendChild(this.iframe))}))}teardownIframe(){this.container.contains(this.iframe)&&this.container.removeChild(this.iframe)}setupListener(){window.addEventListener("message",this.messageCallback,!1)}teardownListener(){window.removeEventListener("message",this.messageCallback,!1)}}class T extends v{get widgetType(){return c.AccountsWidget}}class S extends v{get widgetType(){return c.BudgetsWidget}}class E extends v{get widgetType(){return c.ConnectWidget}get dispatcher(){return M}}class W extends v{get widgetType(){return c.ConnectionsWidget}}class O extends v{get widgetType(){return c.DebtsWidget}}class k extends v{get widgetType(){return c.FinstrongWidget}}class I extends v{get widgetType(){return c.GoalsWidget}}class P extends v{get widgetType(){return c.HelpWidget}}class F extends v{get widgetType(){return c.MasterWidget}}class U extends v{get widgetType(){return c.MiniBudgetsWidget}}class L extends v{get widgetType(){return c.MiniFinstrongWidget}}class q extends v{get widgetType(){return c.MiniPulseCarouselWidget}get dispatcher(){return A}}class D extends v{get widgetType(){return c.MiniSpendingWidget}}class N extends v{get widgetType(){return c.PulseWidget}get dispatcher(){return A}}class R extends v{get widgetType(){return c.SettingsWidget}}class j extends v{get widgetType(){return c.SpendingWidget}}class $ extends v{get widgetType(){return c.TransactionsWidget}}class G extends v{get widgetType(){return c.TrendsWidget}}export{T as AccountsWidget,S as BudgetsWidget,E as ConnectWidget,W as ConnectionsWidget,O as DebtsWidget,k as FinstrongWidget,I as GoalsWidget,P as HelpWidget,F as MasterWidget,U as MiniBudgetsWidget,L as MiniFinstrongWidget,q as MiniPulseCarouselWidget,D as MiniSpendingWidget,N as PulseWidget,R as SettingsWidget,j as SpendingWidget,$ as TransactionsWidget,G as TrendsWidget,v as Widget};
function e(e){return"clientId"in e&&"string"==typeof e.clientId&&"apiKey"in e&&"string"==typeof e.apiKey&&"userGuid"in e&&"string"==typeof e.userGuid&&"environment"in e&&"string"==typeof e.environment}class t extends Error{constructor(){super("Missing required widget props!\n\nComponent needs one of the following groups of props:\n\n - url\n\n - or -\n\n - proxy\n\n - or -\n\n - apiKey\n - clientId\n - environment\n - userGuid"),Object.setPrototypeOf(this,t.prototype)}}class n extends Error{constructor(e){super(`Request failed: ${e}`),this.statusCode=e,Object.setPrototypeOf(this,n.prototype)}}var i;!function(e){e.SAND="sand",e.QA="qa",e.INT="integration",e.PROD="production"}(i||(i={}));const s={[i.SAND]:i.SAND,[i.QA]:i.QA,[i.INT]:i.INT,[i.PROD]:i.PROD};const r={[i.SAND]:"https://api.sand.internal.mx",[i.QA]:"https://api.qa.internal.mx",[i.INT]:"https://int-api.mx.com",[i.PROD]:"https://api.mx.com"};function o(e){const t=function(e){const t=s[e];if(!t)throw new Error(`Invalid MX environment: ${e}`);return t}(e),n=r[t];if(!n)throw new Error(`Missing host for MX environment: ${e}`);return n}var c;function a(e){return{client_redirect_url:e.clientRedirectUrl,color_scheme:e.colorScheme,current_institution_code:e.currentInstitutionCode,current_institution_guid:e.currentInstitutionGuid,current_member_guid:e.currentMemberGuid,disable_institution_search:e.disableInstitutionSearch,include_transactions:e.includeTransactions,is_mobile_webview:e.isMobileWebview||!1,mode:e.mode,oauth_referral_source:e.oauthReferralSource,ui_message_version:e.uiMessageVersion||4,ui_message_webview_url_scheme:e.uiMessageWebviewUrlScheme,update_credentials:e.updateCredentials,widget_type:e.widgetType}}function u(e){return e.widget_url.url}function d(n){const i=function(n){if(function(e){return"proxy"in e&&"string"==typeof e.proxy}(n))return function(e){return e.proxy}(n);if(e(n))return function(e){const t=o(e.environment),n=e.userGuid;return`${t}/users/${n}/widget_urls`}(n);throw new t}(n),s=function(t){const n={Accept:"application/vnd.mx.api.v1+json","Content-Type":"application/json"};t.language&&(n["Accept-Language"]=t.language);if(e(t)){const{apiKey:e,clientId:i}=t,s=btoa(`${i}:${e}`);n.Authorization=`Basic ${s}`}const i="cors",s="POST",r=JSON.stringify({widget_url:a(t)});return{method:s,headers:n,body:r,mode:i}}(n);return{url:i,options:s}}function g(e){return e}function m(e){if(!e.ok)throw new n(e.status);return e.json()}function p(e){console.error(e)}!function(e){e.AccountsWidget="accounts_widget",e.BudgetsWidget="budgets_widget",e.ConnectWidget="connect_widget",e.ConnectionsWidget="connections_widget",e.DebtsWidget="debts_widget",e.FinstrongWidget="finstrong_widget",e.GoalsWidget="goals_widget",e.HelpWidget="help_widget",e.MasterWidget="master_widget",e.MiniBudgetsWidget="mini_budgets_widget",e.MiniFinstrongWidget="mini_finstrong_widget",e.MiniPulseCarouselWidget="mini_pulse_carousel_widget",e.MiniSpendingWidget="mini_spending_widget",e.PulseWidget="pulse_widget",e.SettingsWidget="settings_widget",e.SpendingWidget="spending_widget",e.TransactionsWidget="transactions_widget",e.TrendsWidget="trends_widget"}(c||(c={}));class l extends Error{messageType;field;expectedType;gotValue;constructor(e,t,n,i){super(`Unable to decode '${t}' from '${e}'`),this.messageType=e,this.field=t,this.expectedType=n,this.gotValue=i,Object.setPrototypeOf(this,l.prototype)}}class _ extends Error{postMessageType;constructor(e){super(`Unknown post message: ${e}`),this.postMessageType=e,Object.setPrototypeOf(this,_.prototype)}}function h(e,t,n,i,s={}){const r=e[n],o=void 0!==r,c="string"==typeof r,a="number"==typeof r,u="object"==typeof r&&!Array.isArray(r),d="boolean"==typeof r,g="string"===i,m="number"===i,p=i instanceof Array,_="object"==typeof i&&!Array.isArray(i),C="boolean"===i;if(o||!s.optional){if(!o)throw new l(t,n,i,r);if(g&&!c)throw new l(t,n,i,r);if(m&&!a)throw new l(t,n,i,r);if(!(!p||c&&i.includes(r)))throw new l(t,n,i,r);if(_&&!u)throw new l(t,n,i,r);if(C&&!d)throw new l(t,n,i,r);_&&u&&Object.keys(i).forEach((e=>{h(r,t,e,i[e])}))}}var C;!function(e){e.Load="mx/load",e.Ping="mx/ping",e.Navigation="mx/navigation",e.FocusTrap="mx/focusTrap",e.ClientOAuthComplete="mx/client/oauthComplete",e.ConnectLoaded="mx/connect/loaded",e.ConnectEnterCredentials="mx/connect/enterCredentials",e.ConnectInstitutionSearch="mx/connect/institutionSearch",e.ConnectSelectedInstitution="mx/connect/selectedInstitution",e.ConnectMemberConnected="mx/connect/memberConnected",e.ConnectConnectedPrimaryAction="mx/connect/connected/primaryAction",e.ConnectMemberDeleted="mx/connect/memberDeleted",e.ConnectCreateMemberError="mx/connect/createMemberError",e.ConnectMemberStatusUpdate="mx/connect/memberStatusUpdate",e.ConnectOAuthError="mx/connect/oauthError",e.ConnectOAuthRequested="mx/connect/oauthRequested",e.ConnectStepChange="mx/connect/stepChange",e.ConnectSubmitMFA="mx/connect/submitMFA",e.ConnectUpdateCredentials="mx/connect/updateCredentials",e.PulseOverdraftWarningCtaTransferFunds="mx/pulse/overdraftWarning/cta/transferFunds",e.AccountCreated="mx/account/created"}(C||(C={}));const b={[C.Load]:C.Load,[C.Ping]:C.Ping,[C.Navigation]:C.Navigation,[C.FocusTrap]:C.FocusTrap,"mx/focustrap":C.FocusTrap,[C.ClientOAuthComplete]:C.ClientOAuthComplete,"mx/client/oauthcomplete":C.ClientOAuthComplete,[C.ConnectLoaded]:C.ConnectLoaded,[C.ConnectEnterCredentials]:C.ConnectEnterCredentials,"mx/connect/entercredentials":C.ConnectEnterCredentials,[C.ConnectInstitutionSearch]:C.ConnectInstitutionSearch,"mx/connect/institutionsearch":C.ConnectInstitutionSearch,[C.ConnectSelectedInstitution]:C.ConnectSelectedInstitution,"mx/connect/selectedinstitution":C.ConnectSelectedInstitution,[C.ConnectMemberConnected]:C.ConnectMemberConnected,"mx/connect/memberconnected":C.ConnectMemberConnected,[C.ConnectConnectedPrimaryAction]:C.ConnectConnectedPrimaryAction,"mx/connect/connected/primaryaction":C.ConnectConnectedPrimaryAction,[C.ConnectMemberDeleted]:C.ConnectMemberDeleted,"mx/connect/memberdeleted":C.ConnectMemberDeleted,[C.ConnectCreateMemberError]:C.ConnectCreateMemberError,"mx/connect/createmembererror":C.ConnectCreateMemberError,[C.ConnectMemberStatusUpdate]:C.ConnectMemberStatusUpdate,"mx/connect/memberstatusupdate":C.ConnectMemberStatusUpdate,[C.ConnectOAuthError]:C.ConnectOAuthError,"mx/connect/oautherror":C.ConnectOAuthError,[C.ConnectOAuthRequested]:C.ConnectOAuthRequested,"mx/connect/oauthrequested":C.ConnectOAuthRequested,[C.ConnectStepChange]:C.ConnectStepChange,"mx/connect/stepchange":C.ConnectStepChange,[C.ConnectSubmitMFA]:C.ConnectSubmitMFA,"mx/connect/submitmfa":C.ConnectSubmitMFA,[C.ConnectUpdateCredentials]:C.ConnectUpdateCredentials,"mx/connect/updatecredentials":C.ConnectUpdateCredentials,[C.PulseOverdraftWarningCtaTransferFunds]:C.PulseOverdraftWarningCtaTransferFunds,"mx/pulse/overdraftwarning/cta/transferfunds":C.PulseOverdraftWarningCtaTransferFunds,[C.AccountCreated]:C.AccountCreated};function f(e){const t=e.type||"type not provided";let n;if(!t||!(t in b))throw new _(t);n=b[t];const i=function(e,t){switch(e){case C.Load:return{type:e};case C.Ping:return h(t,"mx/ping","user_guid","string"),h(t,"mx/ping","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case C.Navigation:return h(t,"mx/navigation","user_guid","string"),h(t,"mx/navigation","session_guid","string"),h(t,"mx/navigation","did_go_back","boolean"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,did_go_back:t.did_go_back};case C.FocusTrap:return h(t,"mx/focusTrap","user_guid","string"),h(t,"mx/focusTrap","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case C.ClientOAuthComplete:return h(t,"mx/client/oauthComplete","url","string"),{type:e,url:t.url};case C.ConnectLoaded:return h(t,"mx/connect/loaded","user_guid","string"),h(t,"mx/connect/loaded","session_guid","string"),h(t,"mx/connect/loaded","initial_step",["search","selectMember","enterCreds","mfa","connected","loginError","disclosure"]),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,initial_step:t.initial_step};case C.ConnectEnterCredentials:return h(t,"mx/connect/enterCredentials","user_guid","string"),h(t,"mx/connect/enterCredentials","session_guid","string"),h(t,"mx/connect/enterCredentials","institution",{code:"string",guid:"string"}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,institution:t.institution};case C.ConnectInstitutionSearch:return h(t,"mx/connect/institutionSearch","user_guid","string"),h(t,"mx/connect/institutionSearch","session_guid","string"),h(t,"mx/connect/institutionSearch","query","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,query:t.query};case C.ConnectSelectedInstitution:return h(t,"mx/connect/selectedInstitution","user_guid","string"),h(t,"mx/connect/selectedInstitution","session_guid","string"),h(t,"mx/connect/selectedInstitution","code","string"),h(t,"mx/connect/selectedInstitution","guid","string"),h(t,"mx/connect/selectedInstitution","name","string"),h(t,"mx/connect/selectedInstitution","url","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,code:t.code,guid:t.guid,name:t.name,url:t.url};case C.ConnectMemberConnected:return h(t,"mx/connect/memberConnected","user_guid","string"),h(t,"mx/connect/memberConnected","session_guid","string"),h(t,"mx/connect/memberConnected","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case C.ConnectConnectedPrimaryAction:return h(t,"mx/connect/connected/primaryAction","user_guid","string"),h(t,"mx/connect/connected/primaryAction","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case C.ConnectMemberDeleted:return h(t,"mx/connect/memberDeleted","user_guid","string"),h(t,"mx/connect/memberDeleted","session_guid","string"),h(t,"mx/connect/memberDeleted","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case C.ConnectCreateMemberError:return h(t,"mx/connect/createMemberError","user_guid","string"),h(t,"mx/connect/createMemberError","session_guid","string"),h(t,"mx/connect/createMemberError","institution_guid","string"),h(t,"mx/connect/createMemberError","institution_code","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,institution_guid:t.institution_guid,institution_code:t.institution_code};case C.ConnectMemberStatusUpdate:return h(t,"mx/connect/memberStatusUpdate","user_guid","string"),h(t,"mx/connect/memberStatusUpdate","session_guid","string"),h(t,"mx/connect/memberStatusUpdate","member_guid","string"),h(t,"mx/connect/memberStatusUpdate","connection_status","number"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid,connection_status:t.connection_status};case C.ConnectOAuthError:return h(t,"mx/connect/oauthError","user_guid","string"),h(t,"mx/connect/oauthError","session_guid","string"),h(t,"mx/connect/oauthError","member_guid","string",{optional:!0}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case C.ConnectOAuthRequested:return h(t,"mx/connect/oauthRequested","user_guid","string"),h(t,"mx/connect/oauthRequested","session_guid","string"),h(t,"mx/connect/oauthRequested","url","string"),h(t,"mx/connect/oauthRequested","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,url:t.url,member_guid:t.member_guid};case C.ConnectStepChange:return h(t,"mx/connect/stepChange","user_guid","string"),h(t,"mx/connect/stepChange","session_guid","string"),h(t,"mx/connect/stepChange","previous","string"),h(t,"mx/connect/stepChange","current","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,previous:t.previous,current:t.current};case C.ConnectSubmitMFA:return h(t,"mx/connect/submitMFA","user_guid","string"),h(t,"mx/connect/submitMFA","session_guid","string"),h(t,"mx/connect/submitMFA","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case C.ConnectUpdateCredentials:return h(t,"mx/connect/updateCredentials","user_guid","string"),h(t,"mx/connect/updateCredentials","session_guid","string"),h(t,"mx/connect/updateCredentials","member_guid","string"),h(t,"mx/connect/updateCredentials","institution",{code:"string",guid:"string"}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid,institution:t.institution};case C.PulseOverdraftWarningCtaTransferFunds:return h(t,"mx/pulse/overdraftWarning/cta/transferFunds","account_guid","string"),h(t,"mx/pulse/overdraftWarning/cta/transferFunds","amount","number"),{type:e,account_guid:t.account_guid,amount:t.amount};case C.AccountCreated:return h(t,"mx/account/created","guid","string"),{type:e,guid:t.guid};default:throw new _(e)}}(n,e.metadata||{});return i}function x(e,t,n){if(t instanceof l)n.onInvalidMessageError?.(e,t);else{if(!(t instanceof _))throw t;n.onInvalidMessageError?.(e,t)}}function y(e,t){t.onMessage?.(e)}function w(e,t){try{y(e,t);!function(e,t){switch(e.type){case C.Load:t.onLoad?.(e);break;case C.Ping:t.onPing?.(e);break;case C.Navigation:t.onNavigation?.(e);break;case C.FocusTrap:t.onFocusTrap?.(e);break;case C.AccountCreated:t.onAccountCreated?.(e);break;default:throw new _(e.type)}}(f(e.data),t)}catch(n){x(e,n,t)}}function M(e,t){try{y(e,t);!function(e,t){switch(e.type){case C.Load:t.onLoad?.(e);break;case C.Ping:t.onPing?.(e);break;case C.Navigation:t.onNavigation?.(e);break;case C.FocusTrap:t.onFocusTrap?.(e);break;case C.AccountCreated:t.onAccountCreated?.(e);break;case C.ConnectLoaded:t.onLoaded?.(e);break;case C.ConnectEnterCredentials:t.onEnterCredentials?.(e);break;case C.ConnectInstitutionSearch:t.onInstitutionSearch?.(e);break;case C.ConnectSelectedInstitution:t.onSelectedInstitution?.(e);break;case C.ConnectMemberConnected:t.onMemberConnected?.(e);break;case C.ConnectConnectedPrimaryAction:t.onConnectedPrimaryAction?.(e);break;case C.ConnectMemberDeleted:t.onMemberDeleted?.(e);break;case C.ConnectCreateMemberError:t.onCreateMemberError?.(e);break;case C.ConnectMemberStatusUpdate:t.onMemberStatusUpdate?.(e);break;case C.ConnectOAuthError:t.onOAuthError?.(e);break;case C.ConnectOAuthRequested:t.onOAuthRequested?.(e);break;case C.ConnectStepChange:t.onStepChange?.(e);break;case C.ConnectSubmitMFA:t.onSubmitMFA?.(e);break;case C.ConnectUpdateCredentials:t.onUpdateCredentials?.(e);break;default:throw new _(e.type)}}(f(e.data),t)}catch(n){x(e,n,t)}}function A(e,t){try{y(e,t);!function(e,t){switch(e.type){case C.Load:t.onLoad?.(e);break;case C.Ping:t.onPing?.(e);break;case C.Navigation:t.onNavigation?.(e);break;case C.FocusTrap:t.onFocusTrap?.(e);break;case C.AccountCreated:t.onAccountCreated?.(e);break;case C.PulseOverdraftWarningCtaTransferFunds:t.onOverdraftWarningCtaTransferFunds?.(e);break;default:throw new _(e.type)}}(f(e.data),t)}catch(n){x(e,n,t)}}class v{constructor(e){if(this.isUnmounting=!1,this.options=e,this.iframe=document.createElement("iframe"),this.style=e.style||{border:"none",height:"550px",width:"320px"},this.messageCallback=e=>{this.handleMXPostMessage(e)},"string"==typeof e.container){const t=document.querySelector(e.container);if(!t)throw new Error(`Unable to find widget container. Ensure that an element matching a selector for '${this.options.container}' is available in the DOM before you initialize the widget.`);this.container=t}else{if(!(e.container instanceof Element))throw new Error("Invalid or missing value for container property, expecting a query selector string or a DOM Element.");this.container=e.container}this.setupIframe(),this.setupListener()}get widgetType(){if(this.options.widgetType)return this.options.widgetType;throw new Error("Missing value for widgetType property, expecting a string (eg. connect_widget).")}get dispatcher(){return w}navigateBack(){return new Promise((e=>{const t=this.iframe.contentWindow,n={mx:!0,type:C.Navigation,payload:{action:"back"}};if(!t)throw new Error("Unable to navigate back, iframe element is not available.");const i=t=>{t.data.type===C.Navigation&&(window.removeEventListener("message",i),e(t.data.metadata.did_go_back))};window.addEventListener("message",i,!1),t.postMessage(JSON.stringify(n),this.targetOrigin)}))}ping(){this.postMessageToWidget({type:"ping"})}unmount(){this.isUnmounting=!0,this.teardownListener(),this.teardownIframe()}get targetOrigin(){var e;const t=/^https?:\/\/[^/]+/i;let n;return this.ssoUrl&&this.ssoUrl.match(t)&&(n=null===(e=this.ssoUrl.match(t))||void 0===e?void 0:e[0]),n||"https://widgets.moneydesktop.com"}handleMXPostMessage(e){e.data.mx&&(this.dispatcher(e,this.options),e.data.type===C.Load&&this.postMessageToWidget({type:"mx/sdk/info",metadata:{sdk:"web",version:"0.0.10"}}))}postMessageToWidget(e){if(!this.iframe.contentWindow)throw new Error("Unable to postMessage to widget, iframe doesn't exist");this.iframe.contentWindow.postMessage(JSON.stringify(e),this.targetOrigin)}setupIframe(){(function(e){if(function(e){return"url"in e&&"string"==typeof e.url}(e))return Promise.resolve(e.url);const t=e.ssoRequestBuilder||d,n=e.ssoRequestPreprocess||g,i=e.ssoRequestPostprocess||u,s=e.onSsoUrlLoadError||p,r=n(t(e));return fetch(r.url,r.options).then(m).then(i).catch(s)})(Object.assign(Object.assign({},this.options),{widgetType:this.widgetType})).then((e=>{!this.isUnmounting&&e&&(this.ssoUrl=e,this.iframe.setAttribute("data-test-id","mx-widget-iframe"),this.iframe.setAttribute("title",this.options.iframeTitle||"Widget Iframe"),this.iframe.setAttribute("src",e),Object.keys(this.style).forEach((e=>{this.iframe.style[e]=this.style[e]})),this.container.appendChild(this.iframe))}))}teardownIframe(){this.container.contains(this.iframe)&&this.container.removeChild(this.iframe)}setupListener(){window.addEventListener("message",this.messageCallback,!1)}teardownListener(){window.removeEventListener("message",this.messageCallback,!1)}}class T extends v{get widgetType(){return c.AccountsWidget}}class S extends v{get widgetType(){return c.BudgetsWidget}}class E extends v{get widgetType(){return c.ConnectWidget}get dispatcher(){return M}}class W extends v{get widgetType(){return c.ConnectionsWidget}}class O extends v{get widgetType(){return c.DebtsWidget}}class k extends v{get widgetType(){return c.FinstrongWidget}}class P extends v{get widgetType(){return c.GoalsWidget}}class I extends v{get widgetType(){return c.HelpWidget}}class F extends v{get widgetType(){return c.MasterWidget}}class U extends v{get widgetType(){return c.MiniBudgetsWidget}}class L extends v{get widgetType(){return c.MiniFinstrongWidget}}class q extends v{get widgetType(){return c.MiniPulseCarouselWidget}get dispatcher(){return A}}class D extends v{get widgetType(){return c.MiniSpendingWidget}}class N extends v{get widgetType(){return c.PulseWidget}get dispatcher(){return A}}class R extends v{get widgetType(){return c.SettingsWidget}}class j extends v{get widgetType(){return c.SpendingWidget}}class $ extends v{get widgetType(){return c.TransactionsWidget}}class G extends v{get widgetType(){return c.TrendsWidget}}export{T as AccountsWidget,S as BudgetsWidget,E as ConnectWidget,W as ConnectionsWidget,O as DebtsWidget,k as FinstrongWidget,P as GoalsWidget,I as HelpWidget,F as MasterWidget,U as MiniBudgetsWidget,L as MiniFinstrongWidget,q as MiniPulseCarouselWidget,D as MiniSpendingWidget,N as PulseWidget,R as SettingsWidget,j as SpendingWidget,$ as TransactionsWidget,G as TrendsWidget,v as Widget};

@@ -24,2 +24,3 @@ import { Props as UrlLoadingProps, Type, ConnectWidgetConfigurationProps } from "./sso";

get targetOrigin(): string;
private handleMXPostMessage;
private postMessageToWidget;

@@ -26,0 +27,0 @@ private setupIframe;

@@ -202,2 +202,4 @@ (function (global, factory) {

const sdkVersion = "0.0.10";
// This is an internal error. Thrown when we are decoding a post message's

@@ -774,5 +776,3 @@ // metadata and we encountered a missing field or an invalid value. This

this.messageCallback = (event) => {
if (event.data.mx) {
this.dispatcher(event, this.options);
}
this.handleMXPostMessage(event);
};

@@ -838,2 +838,17 @@ if (typeof options.container === "string") {

}
handleMXPostMessage(event) {
if (!event.data.mx) {
return;
}
this.dispatcher(event, this.options);
if (event.data.type === Type.Load) {
this.postMessageToWidget({
type: "mx/sdk/info",
metadata: {
sdk: "web",
version: sdkVersion,
},
});
}
}
postMessageToWidget(payload) {

@@ -840,0 +855,0 @@ if (!this.iframe.contentWindow) {

@@ -1,1 +0,1 @@

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).widgetSdk={})}(this,(function(e){"use strict";function t(e){return"clientId"in e&&"string"==typeof e.clientId&&"apiKey"in e&&"string"==typeof e.apiKey&&"userGuid"in e&&"string"==typeof e.userGuid&&"environment"in e&&"string"==typeof e.environment}class n extends Error{constructor(){super("Missing required widget props!\n\nComponent needs one of the following groups of props:\n\n - url\n\n - or -\n\n - proxy\n\n - or -\n\n - apiKey\n - clientId\n - environment\n - userGuid"),Object.setPrototypeOf(this,n.prototype)}}class i extends Error{constructor(e){super(`Request failed: ${e}`),this.statusCode=e,Object.setPrototypeOf(this,i.prototype)}}var s;!function(e){e.SAND="sand",e.QA="qa",e.INT="integration",e.PROD="production"}(s||(s={}));const r={[s.SAND]:s.SAND,[s.QA]:s.QA,[s.INT]:s.INT,[s.PROD]:s.PROD};const o={[s.SAND]:"https://api.sand.internal.mx",[s.QA]:"https://api.qa.internal.mx",[s.INT]:"https://int-api.mx.com",[s.PROD]:"https://api.mx.com"};function c(e){const t=function(e){const t=r[e];if(!t)throw new Error(`Invalid MX environment: ${e}`);return t}(e),n=o[t];if(!n)throw new Error(`Missing host for MX environment: ${e}`);return n}var a,u;function d(e){return{client_redirect_url:e.clientRedirectUrl,color_scheme:e.colorScheme,current_institution_code:e.currentInstitutionCode,current_institution_guid:e.currentInstitutionGuid,current_member_guid:e.currentMemberGuid,disable_institution_search:e.disableInstitutionSearch,include_transactions:e.includeTransactions,is_mobile_webview:e.isMobileWebview||!1,mode:e.mode,oauth_referral_source:e.oauthReferralSource,ui_message_version:e.uiMessageVersion||4,ui_message_webview_url_scheme:e.uiMessageWebviewUrlScheme,update_credentials:e.updateCredentials,widget_type:e.widgetType}}function g(e){return e.widget_url.url}function m(e){const i=function(e){if(function(e){return"proxy"in e&&"string"==typeof e.proxy}(e))return function(e){return e.proxy}(e);if(t(e))return function(e){const t=c(e.environment),n=e.userGuid;return`${t}/users/${n}/widget_urls`}(e);throw new n}(e),s=function(e){const n={Accept:"application/vnd.mx.api.v1+json","Content-Type":"application/json"};e.language&&(n["Accept-Language"]=e.language);if(t(e)){const{apiKey:t,clientId:i}=e,s=btoa(`${i}:${t}`);n.Authorization=`Basic ${s}`}const i="cors",s="POST",r=JSON.stringify({widget_url:d(e)});return{method:s,headers:n,body:r,mode:i}}(e);return{url:i,options:s}}function p(e){return e}function l(e){if(!e.ok)throw new i(e.status);return e.json()}function _(e){console.error(e)}!function(e){e.AccountsWidget="accounts_widget",e.BudgetsWidget="budgets_widget",e.ConnectWidget="connect_widget",e.ConnectionsWidget="connections_widget",e.DebtsWidget="debts_widget",e.FinstrongWidget="finstrong_widget",e.GoalsWidget="goals_widget",e.HelpWidget="help_widget",e.MasterWidget="master_widget",e.MiniBudgetsWidget="mini_budgets_widget",e.MiniFinstrongWidget="mini_finstrong_widget",e.MiniPulseCarouselWidget="mini_pulse_carousel_widget",e.MiniSpendingWidget="mini_spending_widget",e.PulseWidget="pulse_widget",e.SettingsWidget="settings_widget",e.SpendingWidget="spending_widget",e.TransactionsWidget="transactions_widget",e.TrendsWidget="trends_widget"}(a||(a={}));class C extends Error{messageType;field;expectedType;gotValue;constructor(e,t,n,i){super(`Unable to decode '${t}' from '${e}'`),this.messageType=e,this.field=t,this.expectedType=n,this.gotValue=i,Object.setPrototypeOf(this,C.prototype)}}class h extends Error{postMessageType;constructor(e){super(`Unknown post message: ${e}`),this.postMessageType=e,Object.setPrototypeOf(this,h.prototype)}}function b(e,t,n,i,s={}){const r=e[n],o=void 0!==r,c="string"==typeof r,a="number"==typeof r,u="object"==typeof r&&!Array.isArray(r),d="boolean"==typeof r,g="string"===i,m="number"===i,p=i instanceof Array,l="object"==typeof i&&!Array.isArray(i),_="boolean"===i;if(o||!s.optional){if(!o)throw new C(t,n,i,r);if(g&&!c)throw new C(t,n,i,r);if(m&&!a)throw new C(t,n,i,r);if(!(!p||c&&i.includes(r)))throw new C(t,n,i,r);if(l&&!u)throw new C(t,n,i,r);if(_&&!d)throw new C(t,n,i,r);l&&u&&Object.keys(i).forEach((e=>{b(r,t,e,i[e])}))}}!function(e){e.Load="mx/load",e.Ping="mx/ping",e.Navigation="mx/navigation",e.FocusTrap="mx/focusTrap",e.ClientOAuthComplete="mx/client/oauthComplete",e.ConnectLoaded="mx/connect/loaded",e.ConnectEnterCredentials="mx/connect/enterCredentials",e.ConnectInstitutionSearch="mx/connect/institutionSearch",e.ConnectSelectedInstitution="mx/connect/selectedInstitution",e.ConnectMemberConnected="mx/connect/memberConnected",e.ConnectConnectedPrimaryAction="mx/connect/connected/primaryAction",e.ConnectMemberDeleted="mx/connect/memberDeleted",e.ConnectCreateMemberError="mx/connect/createMemberError",e.ConnectMemberStatusUpdate="mx/connect/memberStatusUpdate",e.ConnectOAuthError="mx/connect/oauthError",e.ConnectOAuthRequested="mx/connect/oauthRequested",e.ConnectStepChange="mx/connect/stepChange",e.ConnectSubmitMFA="mx/connect/submitMFA",e.ConnectUpdateCredentials="mx/connect/updateCredentials",e.PulseOverdraftWarningCtaTransferFunds="mx/pulse/overdraftWarning/cta/transferFunds",e.AccountCreated="mx/account/created"}(u||(u={}));const f={[u.Load]:u.Load,[u.Ping]:u.Ping,[u.Navigation]:u.Navigation,[u.FocusTrap]:u.FocusTrap,"mx/focustrap":u.FocusTrap,[u.ClientOAuthComplete]:u.ClientOAuthComplete,"mx/client/oauthcomplete":u.ClientOAuthComplete,[u.ConnectLoaded]:u.ConnectLoaded,[u.ConnectEnterCredentials]:u.ConnectEnterCredentials,"mx/connect/entercredentials":u.ConnectEnterCredentials,[u.ConnectInstitutionSearch]:u.ConnectInstitutionSearch,"mx/connect/institutionsearch":u.ConnectInstitutionSearch,[u.ConnectSelectedInstitution]:u.ConnectSelectedInstitution,"mx/connect/selectedinstitution":u.ConnectSelectedInstitution,[u.ConnectMemberConnected]:u.ConnectMemberConnected,"mx/connect/memberconnected":u.ConnectMemberConnected,[u.ConnectConnectedPrimaryAction]:u.ConnectConnectedPrimaryAction,"mx/connect/connected/primaryaction":u.ConnectConnectedPrimaryAction,[u.ConnectMemberDeleted]:u.ConnectMemberDeleted,"mx/connect/memberdeleted":u.ConnectMemberDeleted,[u.ConnectCreateMemberError]:u.ConnectCreateMemberError,"mx/connect/createmembererror":u.ConnectCreateMemberError,[u.ConnectMemberStatusUpdate]:u.ConnectMemberStatusUpdate,"mx/connect/memberstatusupdate":u.ConnectMemberStatusUpdate,[u.ConnectOAuthError]:u.ConnectOAuthError,"mx/connect/oautherror":u.ConnectOAuthError,[u.ConnectOAuthRequested]:u.ConnectOAuthRequested,"mx/connect/oauthrequested":u.ConnectOAuthRequested,[u.ConnectStepChange]:u.ConnectStepChange,"mx/connect/stepchange":u.ConnectStepChange,[u.ConnectSubmitMFA]:u.ConnectSubmitMFA,"mx/connect/submitmfa":u.ConnectSubmitMFA,[u.ConnectUpdateCredentials]:u.ConnectUpdateCredentials,"mx/connect/updatecredentials":u.ConnectUpdateCredentials,[u.PulseOverdraftWarningCtaTransferFunds]:u.PulseOverdraftWarningCtaTransferFunds,"mx/pulse/overdraftwarning/cta/transferfunds":u.PulseOverdraftWarningCtaTransferFunds,[u.AccountCreated]:u.AccountCreated};function x(e){const t=e.type||"type not provided";let n;if(!t||!(t in f))throw new h(t);n=f[t];const i=function(e,t){switch(e){case u.Load:return{type:e};case u.Ping:return b(t,"mx/ping","user_guid","string"),b(t,"mx/ping","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case u.Navigation:return b(t,"mx/navigation","user_guid","string"),b(t,"mx/navigation","session_guid","string"),b(t,"mx/navigation","did_go_back","boolean"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,did_go_back:t.did_go_back};case u.FocusTrap:return b(t,"mx/focusTrap","user_guid","string"),b(t,"mx/focusTrap","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case u.ClientOAuthComplete:return b(t,"mx/client/oauthComplete","url","string"),{type:e,url:t.url};case u.ConnectLoaded:return b(t,"mx/connect/loaded","user_guid","string"),b(t,"mx/connect/loaded","session_guid","string"),b(t,"mx/connect/loaded","initial_step",["search","selectMember","enterCreds","mfa","connected","loginError","disclosure"]),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,initial_step:t.initial_step};case u.ConnectEnterCredentials:return b(t,"mx/connect/enterCredentials","user_guid","string"),b(t,"mx/connect/enterCredentials","session_guid","string"),b(t,"mx/connect/enterCredentials","institution",{code:"string",guid:"string"}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,institution:t.institution};case u.ConnectInstitutionSearch:return b(t,"mx/connect/institutionSearch","user_guid","string"),b(t,"mx/connect/institutionSearch","session_guid","string"),b(t,"mx/connect/institutionSearch","query","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,query:t.query};case u.ConnectSelectedInstitution:return b(t,"mx/connect/selectedInstitution","user_guid","string"),b(t,"mx/connect/selectedInstitution","session_guid","string"),b(t,"mx/connect/selectedInstitution","code","string"),b(t,"mx/connect/selectedInstitution","guid","string"),b(t,"mx/connect/selectedInstitution","name","string"),b(t,"mx/connect/selectedInstitution","url","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,code:t.code,guid:t.guid,name:t.name,url:t.url};case u.ConnectMemberConnected:return b(t,"mx/connect/memberConnected","user_guid","string"),b(t,"mx/connect/memberConnected","session_guid","string"),b(t,"mx/connect/memberConnected","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case u.ConnectConnectedPrimaryAction:return b(t,"mx/connect/connected/primaryAction","user_guid","string"),b(t,"mx/connect/connected/primaryAction","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case u.ConnectMemberDeleted:return b(t,"mx/connect/memberDeleted","user_guid","string"),b(t,"mx/connect/memberDeleted","session_guid","string"),b(t,"mx/connect/memberDeleted","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case u.ConnectCreateMemberError:return b(t,"mx/connect/createMemberError","user_guid","string"),b(t,"mx/connect/createMemberError","session_guid","string"),b(t,"mx/connect/createMemberError","institution_guid","string"),b(t,"mx/connect/createMemberError","institution_code","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,institution_guid:t.institution_guid,institution_code:t.institution_code};case u.ConnectMemberStatusUpdate:return b(t,"mx/connect/memberStatusUpdate","user_guid","string"),b(t,"mx/connect/memberStatusUpdate","session_guid","string"),b(t,"mx/connect/memberStatusUpdate","member_guid","string"),b(t,"mx/connect/memberStatusUpdate","connection_status","number"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid,connection_status:t.connection_status};case u.ConnectOAuthError:return b(t,"mx/connect/oauthError","user_guid","string"),b(t,"mx/connect/oauthError","session_guid","string"),b(t,"mx/connect/oauthError","member_guid","string",{optional:!0}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case u.ConnectOAuthRequested:return b(t,"mx/connect/oauthRequested","user_guid","string"),b(t,"mx/connect/oauthRequested","session_guid","string"),b(t,"mx/connect/oauthRequested","url","string"),b(t,"mx/connect/oauthRequested","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,url:t.url,member_guid:t.member_guid};case u.ConnectStepChange:return b(t,"mx/connect/stepChange","user_guid","string"),b(t,"mx/connect/stepChange","session_guid","string"),b(t,"mx/connect/stepChange","previous","string"),b(t,"mx/connect/stepChange","current","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,previous:t.previous,current:t.current};case u.ConnectSubmitMFA:return b(t,"mx/connect/submitMFA","user_guid","string"),b(t,"mx/connect/submitMFA","session_guid","string"),b(t,"mx/connect/submitMFA","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case u.ConnectUpdateCredentials:return b(t,"mx/connect/updateCredentials","user_guid","string"),b(t,"mx/connect/updateCredentials","session_guid","string"),b(t,"mx/connect/updateCredentials","member_guid","string"),b(t,"mx/connect/updateCredentials","institution",{code:"string",guid:"string"}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid,institution:t.institution};case u.PulseOverdraftWarningCtaTransferFunds:return b(t,"mx/pulse/overdraftWarning/cta/transferFunds","account_guid","string"),b(t,"mx/pulse/overdraftWarning/cta/transferFunds","amount","number"),{type:e,account_guid:t.account_guid,amount:t.amount};case u.AccountCreated:return b(t,"mx/account/created","guid","string"),{type:e,guid:t.guid};default:throw new h(e)}}(n,e.metadata||{});return i}function y(e,t,n){if(t instanceof C)n.onInvalidMessageError?.(e,t);else{if(!(t instanceof h))throw t;n.onInvalidMessageError?.(e,t)}}function w(e,t){t.onMessage?.(e)}function M(e,t){try{w(e,t);!function(e,t){switch(e.type){case u.Load:t.onLoad?.(e);break;case u.Ping:t.onPing?.(e);break;case u.Navigation:t.onNavigation?.(e);break;case u.FocusTrap:t.onFocusTrap?.(e);break;case u.AccountCreated:t.onAccountCreated?.(e);break;default:throw new h(e.type)}}(x(e.data),t)}catch(n){y(e,n,t)}}function W(e,t){try{w(e,t);!function(e,t){switch(e.type){case u.Load:t.onLoad?.(e);break;case u.Ping:t.onPing?.(e);break;case u.Navigation:t.onNavigation?.(e);break;case u.FocusTrap:t.onFocusTrap?.(e);break;case u.AccountCreated:t.onAccountCreated?.(e);break;case u.ConnectLoaded:t.onLoaded?.(e);break;case u.ConnectEnterCredentials:t.onEnterCredentials?.(e);break;case u.ConnectInstitutionSearch:t.onInstitutionSearch?.(e);break;case u.ConnectSelectedInstitution:t.onSelectedInstitution?.(e);break;case u.ConnectMemberConnected:t.onMemberConnected?.(e);break;case u.ConnectConnectedPrimaryAction:t.onConnectedPrimaryAction?.(e);break;case u.ConnectMemberDeleted:t.onMemberDeleted?.(e);break;case u.ConnectCreateMemberError:t.onCreateMemberError?.(e);break;case u.ConnectMemberStatusUpdate:t.onMemberStatusUpdate?.(e);break;case u.ConnectOAuthError:t.onOAuthError?.(e);break;case u.ConnectOAuthRequested:t.onOAuthRequested?.(e);break;case u.ConnectStepChange:t.onStepChange?.(e);break;case u.ConnectSubmitMFA:t.onSubmitMFA?.(e);break;case u.ConnectUpdateCredentials:t.onUpdateCredentials?.(e);break;default:throw new h(e.type)}}(x(e.data),t)}catch(n){y(e,n,t)}}function A(e,t){try{w(e,t);!function(e,t){switch(e.type){case u.Load:t.onLoad?.(e);break;case u.Ping:t.onPing?.(e);break;case u.Navigation:t.onNavigation?.(e);break;case u.FocusTrap:t.onFocusTrap?.(e);break;case u.AccountCreated:t.onAccountCreated?.(e);break;case u.PulseOverdraftWarningCtaTransferFunds:t.onOverdraftWarningCtaTransferFunds?.(e);break;default:throw new h(e.type)}}(x(e.data),t)}catch(n){y(e,n,t)}}class T{constructor(e){if(this.isUnmounting=!1,this.options=e,this.iframe=document.createElement("iframe"),this.style=e.style||{border:"none",height:"550px",width:"320px"},this.messageCallback=e=>{e.data.mx&&this.dispatcher(e,this.options)},"string"==typeof e.container){const t=document.querySelector(e.container);if(!t)throw new Error(`Unable to find widget container. Ensure that an element matching a selector for '${this.options.container}' is available in the DOM before you initialize the widget.`);this.container=t}else{if(!(e.container instanceof Element))throw new Error("Invalid or missing value for container property, expecting a query selector string or a DOM Element.");this.container=e.container}this.setupIframe(),this.setupListener()}get widgetType(){if(this.options.widgetType)return this.options.widgetType;throw new Error("Missing value for widgetType property, expecting a string (eg. connect_widget).")}get dispatcher(){return M}navigateBack(){return new Promise((e=>{const t=this.iframe.contentWindow,n={mx:!0,type:u.Navigation,payload:{action:"back"}};if(!t)throw new Error("Unable to navigate back, iframe element is not available.");const i=t=>{t.data.type===u.Navigation&&(window.removeEventListener("message",i),e(t.data.metadata.did_go_back))};window.addEventListener("message",i,!1),t.postMessage(JSON.stringify(n),this.targetOrigin)}))}ping(){this.postMessageToWidget({type:"ping"})}unmount(){this.isUnmounting=!0,this.teardownListener(),this.teardownIframe()}get targetOrigin(){var e;const t=/^https?:\/\/[^/]+/i;let n;return this.ssoUrl&&this.ssoUrl.match(t)&&(n=null===(e=this.ssoUrl.match(t))||void 0===e?void 0:e[0]),n||"https://widgets.moneydesktop.com"}postMessageToWidget(e){if(!this.iframe.contentWindow)throw new Error("Unable to postMessage to widget, iframe doesn't exist");this.iframe.contentWindow.postMessage(JSON.stringify(e),this.targetOrigin)}setupIframe(){(function(e){if(function(e){return"url"in e&&"string"==typeof e.url}(e))return Promise.resolve(e.url);const t=e.ssoRequestBuilder||m,n=e.ssoRequestPreprocess||p,i=e.ssoRequestPostprocess||g,s=e.onSsoUrlLoadError||_,r=n(t(e));return fetch(r.url,r.options).then(l).then(i).catch(s)})(Object.assign(Object.assign({},this.options),{widgetType:this.widgetType})).then((e=>{!this.isUnmounting&&e&&(this.ssoUrl=e,this.iframe.setAttribute("data-test-id","mx-widget-iframe"),this.iframe.setAttribute("title",this.options.iframeTitle||"Widget Iframe"),this.iframe.setAttribute("src",e),Object.keys(this.style).forEach((e=>{this.iframe.style[e]=this.style[e]})),this.container.appendChild(this.iframe))}))}teardownIframe(){this.container.contains(this.iframe)&&this.container.removeChild(this.iframe)}setupListener(){window.addEventListener("message",this.messageCallback,!1)}teardownListener(){window.removeEventListener("message",this.messageCallback,!1)}}e.AccountsWidget=class extends T{get widgetType(){return a.AccountsWidget}},e.BudgetsWidget=class extends T{get widgetType(){return a.BudgetsWidget}},e.ConnectWidget=class extends T{get widgetType(){return a.ConnectWidget}get dispatcher(){return W}},e.ConnectionsWidget=class extends T{get widgetType(){return a.ConnectionsWidget}},e.DebtsWidget=class extends T{get widgetType(){return a.DebtsWidget}},e.FinstrongWidget=class extends T{get widgetType(){return a.FinstrongWidget}},e.GoalsWidget=class extends T{get widgetType(){return a.GoalsWidget}},e.HelpWidget=class extends T{get widgetType(){return a.HelpWidget}},e.MasterWidget=class extends T{get widgetType(){return a.MasterWidget}},e.MiniBudgetsWidget=class extends T{get widgetType(){return a.MiniBudgetsWidget}},e.MiniFinstrongWidget=class extends T{get widgetType(){return a.MiniFinstrongWidget}},e.MiniPulseCarouselWidget=class extends T{get widgetType(){return a.MiniPulseCarouselWidget}get dispatcher(){return A}},e.MiniSpendingWidget=class extends T{get widgetType(){return a.MiniSpendingWidget}},e.PulseWidget=class extends T{get widgetType(){return a.PulseWidget}get dispatcher(){return A}},e.SettingsWidget=class extends T{get widgetType(){return a.SettingsWidget}},e.SpendingWidget=class extends T{get widgetType(){return a.SpendingWidget}},e.TransactionsWidget=class extends T{get widgetType(){return a.TransactionsWidget}},e.TrendsWidget=class extends T{get widgetType(){return a.TrendsWidget}},e.Widget=T,Object.defineProperty(e,"__esModule",{value:!0})}));
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).widgetSdk={})}(this,(function(e){"use strict";function t(e){return"clientId"in e&&"string"==typeof e.clientId&&"apiKey"in e&&"string"==typeof e.apiKey&&"userGuid"in e&&"string"==typeof e.userGuid&&"environment"in e&&"string"==typeof e.environment}class n extends Error{constructor(){super("Missing required widget props!\n\nComponent needs one of the following groups of props:\n\n - url\n\n - or -\n\n - proxy\n\n - or -\n\n - apiKey\n - clientId\n - environment\n - userGuid"),Object.setPrototypeOf(this,n.prototype)}}class i extends Error{constructor(e){super(`Request failed: ${e}`),this.statusCode=e,Object.setPrototypeOf(this,i.prototype)}}var s;!function(e){e.SAND="sand",e.QA="qa",e.INT="integration",e.PROD="production"}(s||(s={}));const r={[s.SAND]:s.SAND,[s.QA]:s.QA,[s.INT]:s.INT,[s.PROD]:s.PROD};const o={[s.SAND]:"https://api.sand.internal.mx",[s.QA]:"https://api.qa.internal.mx",[s.INT]:"https://int-api.mx.com",[s.PROD]:"https://api.mx.com"};function c(e){const t=function(e){const t=r[e];if(!t)throw new Error(`Invalid MX environment: ${e}`);return t}(e),n=o[t];if(!n)throw new Error(`Missing host for MX environment: ${e}`);return n}var a;function d(e){return{client_redirect_url:e.clientRedirectUrl,color_scheme:e.colorScheme,current_institution_code:e.currentInstitutionCode,current_institution_guid:e.currentInstitutionGuid,current_member_guid:e.currentMemberGuid,disable_institution_search:e.disableInstitutionSearch,include_transactions:e.includeTransactions,is_mobile_webview:e.isMobileWebview||!1,mode:e.mode,oauth_referral_source:e.oauthReferralSource,ui_message_version:e.uiMessageVersion||4,ui_message_webview_url_scheme:e.uiMessageWebviewUrlScheme,update_credentials:e.updateCredentials,widget_type:e.widgetType}}function u(e){return e.widget_url.url}function g(e){const i=function(e){if(function(e){return"proxy"in e&&"string"==typeof e.proxy}(e))return function(e){return e.proxy}(e);if(t(e))return function(e){const t=c(e.environment),n=e.userGuid;return`${t}/users/${n}/widget_urls`}(e);throw new n}(e),s=function(e){const n={Accept:"application/vnd.mx.api.v1+json","Content-Type":"application/json"};e.language&&(n["Accept-Language"]=e.language);if(t(e)){const{apiKey:t,clientId:i}=e,s=btoa(`${i}:${t}`);n.Authorization=`Basic ${s}`}const i="cors",s="POST",r=JSON.stringify({widget_url:d(e)});return{method:s,headers:n,body:r,mode:i}}(e);return{url:i,options:s}}function m(e){return e}function p(e){if(!e.ok)throw new i(e.status);return e.json()}function l(e){console.error(e)}!function(e){e.AccountsWidget="accounts_widget",e.BudgetsWidget="budgets_widget",e.ConnectWidget="connect_widget",e.ConnectionsWidget="connections_widget",e.DebtsWidget="debts_widget",e.FinstrongWidget="finstrong_widget",e.GoalsWidget="goals_widget",e.HelpWidget="help_widget",e.MasterWidget="master_widget",e.MiniBudgetsWidget="mini_budgets_widget",e.MiniFinstrongWidget="mini_finstrong_widget",e.MiniPulseCarouselWidget="mini_pulse_carousel_widget",e.MiniSpendingWidget="mini_spending_widget",e.PulseWidget="pulse_widget",e.SettingsWidget="settings_widget",e.SpendingWidget="spending_widget",e.TransactionsWidget="transactions_widget",e.TrendsWidget="trends_widget"}(a||(a={}));class _ extends Error{messageType;field;expectedType;gotValue;constructor(e,t,n,i){super(`Unable to decode '${t}' from '${e}'`),this.messageType=e,this.field=t,this.expectedType=n,this.gotValue=i,Object.setPrototypeOf(this,_.prototype)}}class h extends Error{postMessageType;constructor(e){super(`Unknown post message: ${e}`),this.postMessageType=e,Object.setPrototypeOf(this,h.prototype)}}function C(e,t,n,i,s={}){const r=e[n],o=void 0!==r,c="string"==typeof r,a="number"==typeof r,d="object"==typeof r&&!Array.isArray(r),u="boolean"==typeof r,g="string"===i,m="number"===i,p=i instanceof Array,l="object"==typeof i&&!Array.isArray(i),h="boolean"===i;if(o||!s.optional){if(!o)throw new _(t,n,i,r);if(g&&!c)throw new _(t,n,i,r);if(m&&!a)throw new _(t,n,i,r);if(!(!p||c&&i.includes(r)))throw new _(t,n,i,r);if(l&&!d)throw new _(t,n,i,r);if(h&&!u)throw new _(t,n,i,r);l&&d&&Object.keys(i).forEach((e=>{C(r,t,e,i[e])}))}}var b;!function(e){e.Load="mx/load",e.Ping="mx/ping",e.Navigation="mx/navigation",e.FocusTrap="mx/focusTrap",e.ClientOAuthComplete="mx/client/oauthComplete",e.ConnectLoaded="mx/connect/loaded",e.ConnectEnterCredentials="mx/connect/enterCredentials",e.ConnectInstitutionSearch="mx/connect/institutionSearch",e.ConnectSelectedInstitution="mx/connect/selectedInstitution",e.ConnectMemberConnected="mx/connect/memberConnected",e.ConnectConnectedPrimaryAction="mx/connect/connected/primaryAction",e.ConnectMemberDeleted="mx/connect/memberDeleted",e.ConnectCreateMemberError="mx/connect/createMemberError",e.ConnectMemberStatusUpdate="mx/connect/memberStatusUpdate",e.ConnectOAuthError="mx/connect/oauthError",e.ConnectOAuthRequested="mx/connect/oauthRequested",e.ConnectStepChange="mx/connect/stepChange",e.ConnectSubmitMFA="mx/connect/submitMFA",e.ConnectUpdateCredentials="mx/connect/updateCredentials",e.PulseOverdraftWarningCtaTransferFunds="mx/pulse/overdraftWarning/cta/transferFunds",e.AccountCreated="mx/account/created"}(b||(b={}));const f={[b.Load]:b.Load,[b.Ping]:b.Ping,[b.Navigation]:b.Navigation,[b.FocusTrap]:b.FocusTrap,"mx/focustrap":b.FocusTrap,[b.ClientOAuthComplete]:b.ClientOAuthComplete,"mx/client/oauthcomplete":b.ClientOAuthComplete,[b.ConnectLoaded]:b.ConnectLoaded,[b.ConnectEnterCredentials]:b.ConnectEnterCredentials,"mx/connect/entercredentials":b.ConnectEnterCredentials,[b.ConnectInstitutionSearch]:b.ConnectInstitutionSearch,"mx/connect/institutionsearch":b.ConnectInstitutionSearch,[b.ConnectSelectedInstitution]:b.ConnectSelectedInstitution,"mx/connect/selectedinstitution":b.ConnectSelectedInstitution,[b.ConnectMemberConnected]:b.ConnectMemberConnected,"mx/connect/memberconnected":b.ConnectMemberConnected,[b.ConnectConnectedPrimaryAction]:b.ConnectConnectedPrimaryAction,"mx/connect/connected/primaryaction":b.ConnectConnectedPrimaryAction,[b.ConnectMemberDeleted]:b.ConnectMemberDeleted,"mx/connect/memberdeleted":b.ConnectMemberDeleted,[b.ConnectCreateMemberError]:b.ConnectCreateMemberError,"mx/connect/createmembererror":b.ConnectCreateMemberError,[b.ConnectMemberStatusUpdate]:b.ConnectMemberStatusUpdate,"mx/connect/memberstatusupdate":b.ConnectMemberStatusUpdate,[b.ConnectOAuthError]:b.ConnectOAuthError,"mx/connect/oautherror":b.ConnectOAuthError,[b.ConnectOAuthRequested]:b.ConnectOAuthRequested,"mx/connect/oauthrequested":b.ConnectOAuthRequested,[b.ConnectStepChange]:b.ConnectStepChange,"mx/connect/stepchange":b.ConnectStepChange,[b.ConnectSubmitMFA]:b.ConnectSubmitMFA,"mx/connect/submitmfa":b.ConnectSubmitMFA,[b.ConnectUpdateCredentials]:b.ConnectUpdateCredentials,"mx/connect/updatecredentials":b.ConnectUpdateCredentials,[b.PulseOverdraftWarningCtaTransferFunds]:b.PulseOverdraftWarningCtaTransferFunds,"mx/pulse/overdraftwarning/cta/transferfunds":b.PulseOverdraftWarningCtaTransferFunds,[b.AccountCreated]:b.AccountCreated};function x(e){const t=e.type||"type not provided";let n;if(!t||!(t in f))throw new h(t);n=f[t];const i=function(e,t){switch(e){case b.Load:return{type:e};case b.Ping:return C(t,"mx/ping","user_guid","string"),C(t,"mx/ping","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case b.Navigation:return C(t,"mx/navigation","user_guid","string"),C(t,"mx/navigation","session_guid","string"),C(t,"mx/navigation","did_go_back","boolean"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,did_go_back:t.did_go_back};case b.FocusTrap:return C(t,"mx/focusTrap","user_guid","string"),C(t,"mx/focusTrap","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case b.ClientOAuthComplete:return C(t,"mx/client/oauthComplete","url","string"),{type:e,url:t.url};case b.ConnectLoaded:return C(t,"mx/connect/loaded","user_guid","string"),C(t,"mx/connect/loaded","session_guid","string"),C(t,"mx/connect/loaded","initial_step",["search","selectMember","enterCreds","mfa","connected","loginError","disclosure"]),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,initial_step:t.initial_step};case b.ConnectEnterCredentials:return C(t,"mx/connect/enterCredentials","user_guid","string"),C(t,"mx/connect/enterCredentials","session_guid","string"),C(t,"mx/connect/enterCredentials","institution",{code:"string",guid:"string"}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,institution:t.institution};case b.ConnectInstitutionSearch:return C(t,"mx/connect/institutionSearch","user_guid","string"),C(t,"mx/connect/institutionSearch","session_guid","string"),C(t,"mx/connect/institutionSearch","query","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,query:t.query};case b.ConnectSelectedInstitution:return C(t,"mx/connect/selectedInstitution","user_guid","string"),C(t,"mx/connect/selectedInstitution","session_guid","string"),C(t,"mx/connect/selectedInstitution","code","string"),C(t,"mx/connect/selectedInstitution","guid","string"),C(t,"mx/connect/selectedInstitution","name","string"),C(t,"mx/connect/selectedInstitution","url","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,code:t.code,guid:t.guid,name:t.name,url:t.url};case b.ConnectMemberConnected:return C(t,"mx/connect/memberConnected","user_guid","string"),C(t,"mx/connect/memberConnected","session_guid","string"),C(t,"mx/connect/memberConnected","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case b.ConnectConnectedPrimaryAction:return C(t,"mx/connect/connected/primaryAction","user_guid","string"),C(t,"mx/connect/connected/primaryAction","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case b.ConnectMemberDeleted:return C(t,"mx/connect/memberDeleted","user_guid","string"),C(t,"mx/connect/memberDeleted","session_guid","string"),C(t,"mx/connect/memberDeleted","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case b.ConnectCreateMemberError:return C(t,"mx/connect/createMemberError","user_guid","string"),C(t,"mx/connect/createMemberError","session_guid","string"),C(t,"mx/connect/createMemberError","institution_guid","string"),C(t,"mx/connect/createMemberError","institution_code","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,institution_guid:t.institution_guid,institution_code:t.institution_code};case b.ConnectMemberStatusUpdate:return C(t,"mx/connect/memberStatusUpdate","user_guid","string"),C(t,"mx/connect/memberStatusUpdate","session_guid","string"),C(t,"mx/connect/memberStatusUpdate","member_guid","string"),C(t,"mx/connect/memberStatusUpdate","connection_status","number"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid,connection_status:t.connection_status};case b.ConnectOAuthError:return C(t,"mx/connect/oauthError","user_guid","string"),C(t,"mx/connect/oauthError","session_guid","string"),C(t,"mx/connect/oauthError","member_guid","string",{optional:!0}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case b.ConnectOAuthRequested:return C(t,"mx/connect/oauthRequested","user_guid","string"),C(t,"mx/connect/oauthRequested","session_guid","string"),C(t,"mx/connect/oauthRequested","url","string"),C(t,"mx/connect/oauthRequested","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,url:t.url,member_guid:t.member_guid};case b.ConnectStepChange:return C(t,"mx/connect/stepChange","user_guid","string"),C(t,"mx/connect/stepChange","session_guid","string"),C(t,"mx/connect/stepChange","previous","string"),C(t,"mx/connect/stepChange","current","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,previous:t.previous,current:t.current};case b.ConnectSubmitMFA:return C(t,"mx/connect/submitMFA","user_guid","string"),C(t,"mx/connect/submitMFA","session_guid","string"),C(t,"mx/connect/submitMFA","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case b.ConnectUpdateCredentials:return C(t,"mx/connect/updateCredentials","user_guid","string"),C(t,"mx/connect/updateCredentials","session_guid","string"),C(t,"mx/connect/updateCredentials","member_guid","string"),C(t,"mx/connect/updateCredentials","institution",{code:"string",guid:"string"}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid,institution:t.institution};case b.PulseOverdraftWarningCtaTransferFunds:return C(t,"mx/pulse/overdraftWarning/cta/transferFunds","account_guid","string"),C(t,"mx/pulse/overdraftWarning/cta/transferFunds","amount","number"),{type:e,account_guid:t.account_guid,amount:t.amount};case b.AccountCreated:return C(t,"mx/account/created","guid","string"),{type:e,guid:t.guid};default:throw new h(e)}}(n,e.metadata||{});return i}function y(e,t,n){if(t instanceof _)n.onInvalidMessageError?.(e,t);else{if(!(t instanceof h))throw t;n.onInvalidMessageError?.(e,t)}}function w(e,t){t.onMessage?.(e)}function M(e,t){try{w(e,t);!function(e,t){switch(e.type){case b.Load:t.onLoad?.(e);break;case b.Ping:t.onPing?.(e);break;case b.Navigation:t.onNavigation?.(e);break;case b.FocusTrap:t.onFocusTrap?.(e);break;case b.AccountCreated:t.onAccountCreated?.(e);break;default:throw new h(e.type)}}(x(e.data),t)}catch(n){y(e,n,t)}}function W(e,t){try{w(e,t);!function(e,t){switch(e.type){case b.Load:t.onLoad?.(e);break;case b.Ping:t.onPing?.(e);break;case b.Navigation:t.onNavigation?.(e);break;case b.FocusTrap:t.onFocusTrap?.(e);break;case b.AccountCreated:t.onAccountCreated?.(e);break;case b.ConnectLoaded:t.onLoaded?.(e);break;case b.ConnectEnterCredentials:t.onEnterCredentials?.(e);break;case b.ConnectInstitutionSearch:t.onInstitutionSearch?.(e);break;case b.ConnectSelectedInstitution:t.onSelectedInstitution?.(e);break;case b.ConnectMemberConnected:t.onMemberConnected?.(e);break;case b.ConnectConnectedPrimaryAction:t.onConnectedPrimaryAction?.(e);break;case b.ConnectMemberDeleted:t.onMemberDeleted?.(e);break;case b.ConnectCreateMemberError:t.onCreateMemberError?.(e);break;case b.ConnectMemberStatusUpdate:t.onMemberStatusUpdate?.(e);break;case b.ConnectOAuthError:t.onOAuthError?.(e);break;case b.ConnectOAuthRequested:t.onOAuthRequested?.(e);break;case b.ConnectStepChange:t.onStepChange?.(e);break;case b.ConnectSubmitMFA:t.onSubmitMFA?.(e);break;case b.ConnectUpdateCredentials:t.onUpdateCredentials?.(e);break;default:throw new h(e.type)}}(x(e.data),t)}catch(n){y(e,n,t)}}function A(e,t){try{w(e,t);!function(e,t){switch(e.type){case b.Load:t.onLoad?.(e);break;case b.Ping:t.onPing?.(e);break;case b.Navigation:t.onNavigation?.(e);break;case b.FocusTrap:t.onFocusTrap?.(e);break;case b.AccountCreated:t.onAccountCreated?.(e);break;case b.PulseOverdraftWarningCtaTransferFunds:t.onOverdraftWarningCtaTransferFunds?.(e);break;default:throw new h(e.type)}}(x(e.data),t)}catch(n){y(e,n,t)}}class v{constructor(e){if(this.isUnmounting=!1,this.options=e,this.iframe=document.createElement("iframe"),this.style=e.style||{border:"none",height:"550px",width:"320px"},this.messageCallback=e=>{this.handleMXPostMessage(e)},"string"==typeof e.container){const t=document.querySelector(e.container);if(!t)throw new Error(`Unable to find widget container. Ensure that an element matching a selector for '${this.options.container}' is available in the DOM before you initialize the widget.`);this.container=t}else{if(!(e.container instanceof Element))throw new Error("Invalid or missing value for container property, expecting a query selector string or a DOM Element.");this.container=e.container}this.setupIframe(),this.setupListener()}get widgetType(){if(this.options.widgetType)return this.options.widgetType;throw new Error("Missing value for widgetType property, expecting a string (eg. connect_widget).")}get dispatcher(){return M}navigateBack(){return new Promise((e=>{const t=this.iframe.contentWindow,n={mx:!0,type:b.Navigation,payload:{action:"back"}};if(!t)throw new Error("Unable to navigate back, iframe element is not available.");const i=t=>{t.data.type===b.Navigation&&(window.removeEventListener("message",i),e(t.data.metadata.did_go_back))};window.addEventListener("message",i,!1),t.postMessage(JSON.stringify(n),this.targetOrigin)}))}ping(){this.postMessageToWidget({type:"ping"})}unmount(){this.isUnmounting=!0,this.teardownListener(),this.teardownIframe()}get targetOrigin(){var e;const t=/^https?:\/\/[^/]+/i;let n;return this.ssoUrl&&this.ssoUrl.match(t)&&(n=null===(e=this.ssoUrl.match(t))||void 0===e?void 0:e[0]),n||"https://widgets.moneydesktop.com"}handleMXPostMessage(e){e.data.mx&&(this.dispatcher(e,this.options),e.data.type===b.Load&&this.postMessageToWidget({type:"mx/sdk/info",metadata:{sdk:"web",version:"0.0.10"}}))}postMessageToWidget(e){if(!this.iframe.contentWindow)throw new Error("Unable to postMessage to widget, iframe doesn't exist");this.iframe.contentWindow.postMessage(JSON.stringify(e),this.targetOrigin)}setupIframe(){(function(e){if(function(e){return"url"in e&&"string"==typeof e.url}(e))return Promise.resolve(e.url);const t=e.ssoRequestBuilder||g,n=e.ssoRequestPreprocess||m,i=e.ssoRequestPostprocess||u,s=e.onSsoUrlLoadError||l,r=n(t(e));return fetch(r.url,r.options).then(p).then(i).catch(s)})(Object.assign(Object.assign({},this.options),{widgetType:this.widgetType})).then((e=>{!this.isUnmounting&&e&&(this.ssoUrl=e,this.iframe.setAttribute("data-test-id","mx-widget-iframe"),this.iframe.setAttribute("title",this.options.iframeTitle||"Widget Iframe"),this.iframe.setAttribute("src",e),Object.keys(this.style).forEach((e=>{this.iframe.style[e]=this.style[e]})),this.container.appendChild(this.iframe))}))}teardownIframe(){this.container.contains(this.iframe)&&this.container.removeChild(this.iframe)}setupListener(){window.addEventListener("message",this.messageCallback,!1)}teardownListener(){window.removeEventListener("message",this.messageCallback,!1)}}e.AccountsWidget=class extends v{get widgetType(){return a.AccountsWidget}},e.BudgetsWidget=class extends v{get widgetType(){return a.BudgetsWidget}},e.ConnectWidget=class extends v{get widgetType(){return a.ConnectWidget}get dispatcher(){return W}},e.ConnectionsWidget=class extends v{get widgetType(){return a.ConnectionsWidget}},e.DebtsWidget=class extends v{get widgetType(){return a.DebtsWidget}},e.FinstrongWidget=class extends v{get widgetType(){return a.FinstrongWidget}},e.GoalsWidget=class extends v{get widgetType(){return a.GoalsWidget}},e.HelpWidget=class extends v{get widgetType(){return a.HelpWidget}},e.MasterWidget=class extends v{get widgetType(){return a.MasterWidget}},e.MiniBudgetsWidget=class extends v{get widgetType(){return a.MiniBudgetsWidget}},e.MiniFinstrongWidget=class extends v{get widgetType(){return a.MiniFinstrongWidget}},e.MiniPulseCarouselWidget=class extends v{get widgetType(){return a.MiniPulseCarouselWidget}get dispatcher(){return A}},e.MiniSpendingWidget=class extends v{get widgetType(){return a.MiniSpendingWidget}},e.PulseWidget=class extends v{get widgetType(){return a.PulseWidget}get dispatcher(){return A}},e.SettingsWidget=class extends v{get widgetType(){return a.SettingsWidget}},e.SpendingWidget=class extends v{get widgetType(){return a.SpendingWidget}},e.TransactionsWidget=class extends v{get widgetType(){return a.TransactionsWidget}},e.TrendsWidget=class extends v{get widgetType(){return a.TrendsWidget}},e.Widget=v,Object.defineProperty(e,"__esModule",{value:!0})}));
{
"name": "@mxenabled/web-widget-sdk",
"version": "0.0.9",
"version": "0.0.10",
"description": "MX Web Widget SDK",

@@ -26,3 +26,3 @@ "main": "./dist/cjs/index.js",

"clean:dist": "[ -d dist ] && rm -r dist || true",
"compile": "npm run compile:sdk && npm run compile:types && npm run compile:cypress && npm run compile:jest",
"compile": "npm run compile:version && npm run compile:sdk && npm run compile:types && npm run compile:cypress && npm run compile:jest",
"compile:cypress": "tsc --strict --noEmit --types cypress,node $(find cypress -not -path 'cypress/application/*' -type f -name *.ts)",

@@ -32,2 +32,3 @@ "compile:jest": "tsc --strict --noEmit --types jest,node $(find jest -type f -name *.ts)",

"compile:types": "tsc --declaration --emitDeclarationOnly --outDir dist/types",
"compile:version": "ts-node bin/generate-version-file.ts",
"documentation": "cp node_modules/@mxenabled/widget-post-message-definitions/docs/web-sdk-generated.md docs/widget_callback_props.md",

@@ -34,0 +35,0 @@ "format": "npm run prettier -- -w",

# MX Web Widget SDK
## Introduction
The purpose of this project is to help simplify your integration experience.
Giving you as few steps as possible to get up and running with an MX web widget.
Giving you as few steps as possible to get up and running with an MX web
widget. Please refer to our [Web Widget SDK documentation][sdk_docs] to get
started.
After following the Getting Started instructions below, you will be able to
import and load MX widgets in your web applications, and configure them
for your specific needs.
## Getting Started
Please refer to the official [MX Docs](https://docs.mx.com/) for an in-depth
explanation of the MX platform. The general outline for incorporating the
`web-widget-sdk` into your project is as follow:
- Sign up for a developer account at the developer portal.
- Install and setup the SDK via `npm` or `yarn`.
- Generate an authenticated SSO widget url.
- Import the widget into your project providing it with the needed
configuration object.
### Acquire your developer account
A developer account can be obtained by signing up on our [Client
Portal](https://dashboard.mx.com) site.
### Installing the SDK
Open a terminal and run the commands below at the root of your project to
install the SDK:
Using npm
```
npm install --save @mxenabled/web-widget-sdk
```
Using yarn
```
yarn add @mxenabled/web-widget-sdk
```
### Incorporating the SDK into your application
The Widget SDK provides multiple modules that you can import and use in your
application. There is currently a [CommonJS module][commonjs_module], an ES
module, an [AMD module][amd_module], and an [UMD module][umd_module] that you
can use depending on your build process.
#### CommonJS module
A CommonJS module is exported by this package and available by requiring
`@mxenabled/web-widget-sdk`. Require this module and build your project with a
build tool that supports CommonJS modules (such as [browserify][browserify]):
```js
const widgetSdk = require("@mxenabled/web-widget-sdk")
const widget = new widgetSdk.ConnectWidget({
container: "<CONTAINER SELECTOR>",
url: "<SSO URL>"
// additional widget options
})
```
#### ES module
An ES module is exported by this package and available by importing
`@mxenabled/web-widget-sdk`. Import this module and build your project with a
build tool that supports ES modules (such as [webpack][webpack]):
```js
import * as widgetSdk from "@mxenabled/web-widget-sdk"
const widget = new widgetSdk.ConnectWidget({
container: "<CONTAINER SELECTOR>",
url: "<SSO URL>"
// additional widget options
})
```
#### AMD module
The AMD module can be found in
`node_modules/@mxenabled/web-widget-sdk/dist/amd/index.js`. In order to serve
this file in your application, you will have to host it yourself. Transfer this
file into any location where it can be made publicly available from. Once the
file is available, you can import and use it like so:
```html
<div id="container"></div>
<script src="https://requirejs.org/docs/release/2.3.6/minified/require.js"></script>
<script>
requirejs(["node_modules/@mxenabled/web-widget-sdk/dist/amd/index.js"], function (widgetSdk) {
const widget = new widgetSdk.ConnectWidget({
container: "#container",
url: "<SSO URL>"
// additional widget options
})
})
</script>
```
#### UMD module
The UMD module can be found in
`node_modules/@mxenabled/web-widget-sdk/dist/umd/index.js`. In order to serve
this file in your application, you will have to host it yourself. Transfer this
file into any location where it can be made publicly available from. Once the
file is available, you can import and use it like so:
```html
<div id="container"></div>
<script src="node_modules/@mxenabled/web-widget-sdk/dist/umd/index.js"></script>
<script>
const widget = new widgetSdk.ConnectWidget({
container: "#container",
url: "<SSO URL>"
// additional widget options
})
</script>
```
### Generating your Widget SSO URL
Refer to our [authentication][authentication_and_security] and [SSO Widget URL
documentation][api_request_widget_url] for instructions and information related
to making an SSO URL request. If loading the Connect Widget, follow the
instructions located in [Connect SSO Widget URL
documentation][api_request_connect_url]. The SSO URL should be passed to a
Widget class via the `url` option.
```js
const options = {
container: "#widget",
url: "https://int-widgets.moneydesktop.com/md/connect/..."
}
```
#### Proxy server
The SDK also has the option of making the SSO request on your behalf to your
backend service that is able to make requests to our API. If used, the proxy
URL should passed to a Widget class via the `proxy` option.
##### Connect Widget configuration
When you are not using the `proxy` setting, you must pass the widget
configuration in the SSO request that generates the SSO URL. However, when
using the `proxy` setting with the Connect Widget, those configuration settings
may be passed directly to the widget class.
- `colorScheme`: Load the widget in the specified colorScheme; options are
`light` and `dark`. Defaults to `light`.
- `currentInstitutionCode`: Load the widget into the credential view for the
specified institution.
- `currentInstitutionGuid`: Load the widget into the credential view for the
specified institution.
- `currentMemberGuid`: Load to a specific member that contains an error or
requires MFA from the most recent job. `currentMemberGuid` takes precedence
over `currentInstitutionCode`.
- `disableInstitutionSearch`: When set to true, the institution search feature
will be disabled and end users will not be able to navigate to it. Must be
used with `currentInstitutionCode`, `currentInstitutionGuid`, or
`currentMemberGuid`.
- `includeTransactions`: When set to false while creating or updating a member,
transaction data will not be automatically aggregated. Future manual or
background aggregations will not be affected. Defaults to true.
- `uiMessageWebviewUrlScheme`: Used as the scheme that MX will redirect to at
the end of OAuth. This must be a scheme that your application responds to.
See [OAuth redirects](#oauth-redirects) for additional information.
- `updateCredentials`: Loads widget to the update credential view of a current
member. Optionally used with `currentMemberGuid`. This option should be used
sparingly. The best practice is to use `currentMemberGuid` and let the widget
resolve the issue.
```js
const options = {
container: "#widget",
proxy: "https://server.com/mx-sso-proxy",
colorScheme: "dark",
disableInstitutionSearch: true
}
```
### Mounting and Unmounting the widget
When you instantiate a widget with options, it will mount itself in the DOM, and set up various event listeners.
You'll need to call the `unmount` method when closing the widget and before creating a new instance.
```js
const options = {
container: "#widget",
url: "https://int-widgets.moneydesktop.com/md/connect/...."
}
// Calling `new sdk.ConnectWidget(...)` here will mount the widget in the DOM
const widget = new widgetSdk.ConnectWidget(options)
// When you are ready to close the widget, you'll want to call `unmount`. This
// will remove the element and any event listeners added.
widget.unmount()
```
### Interacting with the widget
You can listen to post message events by passing callback functions in the widget
options object to the class. The option names follow this naming scheme:
* For widget events: `on<event name>`,
* For entity events: `on<entity><action>`
For example, the `mx/connect/selectInstitution` event is made available via
`onSelectInstitution` in the `ConnectWidget` class. Refer to [this
document](docs/widget_callback_props.md) for a list of events and their
payloads.
### Widget options
You can configure the state and behavior of the widget with the following
class options:
- `language`: Load the widget in the specified language. Defaults to `en-US`.
See [language
options](https://docs.mx.com/api#connect_configuring_connect_language_options)
for additional information.
- `proxy`: SSO proxy server URL.
- `style`: Styles applied to the view containing the widget. The default styles are:
- `border: "none"`
- `height: "550px"`
- `width: "320px"`
- `iframeTitle`: Allows for the title attribute of the iframe to be set.
- `url`: Widget SSO URL. See [Generating your Widget SSO
URL](#generating-your-widget-sso-url) for additional information. **This prop
is required.**
### Available widget classes
This SDK exposes the following classes:
- `AccountsWidget`
- `BudgetsWidget`
- `ConnectAggregationWidget`
- `ConnectVerificationWidget`
- `ConnectWidget`
- `ConnectionsWidget`
- `DebtsWidget`
- `FinstrongWidget`
- `GoalsWidget`
- `HelpWidget`
- `MasterWidget`
- `MiniBudgetsWidget`
- `MiniFinstrongWidget`
- `MiniPulseCarouselWidget`
- `MiniSpendingWidget`
- `PulseWidget`
- `SettingsWidget`
- `SpendingWidget`
- `TransactionsWidget`
- `TrendsWidget`
### Troubleshooting
#### Post messages not working
Check the following items if widget post message callbacks are not being
triggered in your application.
- Ensure your SSO request is correctly configured for the Web SDK:
- `ui_message_version` should be set to `4`.
- `is_mobile_webview` should be set to `false`.
- Ensure you are using the corresponding widget class for the `widget_type`
used in the SSO request. For example, if you set `widget_type` to
`connect_widget`, then you should use the `ConnectWidget` class.
- Ensure you are serving your application's HTML from a web server and not
loading it from your file system.
- Ensure your application's [`Referrer-Policy`][referrer_policy] is one that
allows origin information to be passed to the widget. We recommend using
the default, which is `strict-origin-when-cross-origin`.
---
[![Build SDK](https://github.com/mxenabled/web-widget-sdk/actions/workflows/build-sdk.yml/badge.svg)](https://github.com/mxenabled/web-widget-sdk/actions/workflows/build-sdk.yml)
[![Integration Tests](https://github.com/mxenabled/web-widget-sdk/actions/workflows/integration-tests.yml/badge.svg)](https://github.com/mxenabled/web-widget-sdk/actions/workflows/integration-tests.yml)
[![Package Audit](https://github.com/mxenabled/web-widget-sdk/actions/workflows/package-audit.yml/badge.svg)](https://github.com/mxenabled/web-widget-sdk/actions/workflows/package-audit.yml)
[authentication_and_security]: https://docs.mx.com/api#authentication_and_security "Authentication and security"
[amd_module]: https://requirejs.org/docs/whyamd.html "AMD modules"
[api_request_connect_url]: https://docs.mx.com/api#connect_request_a_url "Request a Connect URL"
[api_request_widget_url]: https://docs.mx.com/api#widgets_mx_widgets_request_widget_url "Request a widget URL"
[browserify]: https://browserify.org/ "Browserify"
[commonjs_module]: https://nodejs.org/api/modules.html "CommonJS modules"
[react_native_style]: https://reactnative.dev/docs/style "React Native Style"
[umd_module]: https://github.com/umdjs/umd "UMD modules"
[webpack]: https://webpack.js.org/ "webpack"
[referrer_policy]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy "Referrer-Policy"
[sdk_docs]: https://docs.mx.com/connect/guides/sdk#web "Web Widget SDK"
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc