ofx4js
Version:
A javascript OFX library, ported from OFX4J
1 lines • 280 kB
JavaScript
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var assert=require("assert"),UUID=require("uuid"),sax=require("sax");class OFXException extends Error{constructor(e=null,t=null){super(e),this.message=e,this.innerError=t}}class OFXRuntimeException extends OFXException{constructor(e=null){super(e)}}class OFXStatusException extends OFXException{constructor(e,t){super(t),this.status=e}getStatus(){return this.status}}class OFXTransactionException extends OFXException{constructor(e=null){super(e)}}class UnsupportedOFXSecurityTypeException extends OFXException{constructor(e){super(e)}}class NoOFXResponseException extends OFXException{constructor(e=null){super(e)}}class DefaultApplicationContext{constructor(e,t){this.appId=e,this.appVersion=t}getAppId(){return this.appId}getAppVersion(){return this.appVersion}}class OFXApplicationContextHolder{static getCurrentContext(){return this.CURRENT_CONTEXT}static setCurrentContext(e){this.CURRENT_CONTEXT=e}}OFXApplicationContextHolder.CURRENT_CONTEXT=new DefaultApplicationContext("Money","1600"),function(e){e[e.signon=0]="signon",e[e.signup=1]="signup",e[e.banking=2]="banking",e[e.creditcard=3]="creditcard",e[e.investment=4]="investment",e[e.interbank_transfer=5]="interbank_transfer",e[e.wire_transfer=6]="wire_transfer",e[e.payments=7]="payments",e[e.email=8]="email",e[e.investment_security=9]="investment_security",e[e.profile=10]="profile",e[e.tax1099=11]="tax1099"}(exports.MessageSetType||(exports.MessageSetType={})),function(e){e[e.CHECKING=0]="CHECKING",e[e.SAVINGS=1]="SAVINGS",e[e.MONEYMRKT=2]="MONEYMRKT",e[e.CREDITLINE=3]="CREDITLINE"}(exports.AccountType||(exports.AccountType={}));class SortedSet{constructor(e){this.valueArray=[],this.compareFcn=e}values(){return this.isSorted||(assert.ok(this.compareFcn),this.valueArray.sort(this.compareFcn),this.isSorted=!0),this.valueArray}insert(e){-1==this.valueArray.indexOf(e)&&(this.isSorted=!1,this.valueArray.push(e))}push(e){this.insert(e)}remove(e){var t=this.valueArray.indexOf(e);if(-1==t)return!1;this.valueArray=this.valueArray.splice(t,1)}count(){return this.valueArray.length}}function _default(e,t){return void 0!==e?e:t}function isAssignableFrom(e,t){return t===e||"function"==typeof e&&t.prototype instanceof e}class PropertyDescriptor{constructor(e){this.propertyType=e.type,this.readMethod=e.read,this.writeMethod=e.write}getPropertyType(){return this.propertyType}getReadMethod(){return this.readMethod}getWriteMethod(){return this.writeMethod}}class ChildAggregate extends PropertyDescriptor{constructor(e){super(e),this._order=e.order,this._name=_default(e.name,"##not_specified##"),this._required=_default(e.required,!1),this._collectionEntryType=_default(e.collectionEntryType,null)}name(){return this._name}required(){return this._required}order(){return this._order}collectionEntryType(){return this._collectionEntryType}}class Element extends PropertyDescriptor{constructor(e){super(e),this._name=e.name,this._required=_default(e.required,!1),this._order=e.order,this._collectionEntryType=_default(e.collectionEntryType,null)}name(){return this._name}required(){return this._required}order(){return this._order}collectionEntryType(){return this._collectionEntryType}}!function(e){e[e.CHILD_AGGREGATE=0]="CHILD_AGGREGATE",e[e.ELEMENT=1]="ELEMENT"}(exports.AggregateAttributeType||(exports.AggregateAttributeType={}));class AggregateAttribute{constructor(e){if(e instanceof Element)this.AggregateAttributeFromElement(e);else{if(!(e instanceof ChildAggregate))throw new OFXException("invalid type");this.AggregateAttributeFromChildAggregate(e)}}AggregateAttributeFromElement(e){if(this.readMethod=e.getReadMethod(),this.writeMethod=e.getWriteMethod(),null==this.readMethod)throw new OFXException("Illegal property for aggregate: no read method.");if(null==this.writeMethod)throw new OFXException("Illegal property for aggregate: no write method.");this.attributeType=e.getPropertyType(),this.collectionEntryType=null,this.name=e.name(),this.order=e.order(),this.required=e.required(),this.type=exports.AggregateAttributeType.ELEMENT,this.toString_="Element '"+this.name+"'",this.collection=!1}AggregateAttributeFromChildAggregate(e){if(this.readMethod=e.getReadMethod(),this.writeMethod=e.getWriteMethod(),null==this.readMethod)throw new OFXException("Illegal property for aggregate: no read method.");if(null==this.writeMethod)throw new OFXException("Illegal property for aggregate: no write method.");if(this.attributeType=e.getPropertyType(),this.collection=!1,e.collectionEntryType())this.collection=!0,this.name=null,this.collectionEntryType=e.collectionEntryType();else if("##not_specified##"===e.name()){var t=AggregateIntrospector.getAggregateInfo(this.attributeType);if(null==t)throw new OFXException("Illegal child aggregate type '"+e.getPropertyType()+"': no aggregate information available.");if(this.name=t.getName(),"##not_specified##"===this.name)throw new OFXException("Illegal child aggregate type '"+e.getPropertyType()+"': a child aggregate name must be specified.");this.collectionEntryType=null}else this.name=e.name(),this.collectionEntryType=null;this.order=e.order(),this.required=e.required(),this.type=exports.AggregateAttributeType.CHILD_AGGREGATE,this.toString_="ChildAggregate '"+this.name+"'"}get(e){let t=this.readMethod.call(e);return this.attributeType&&t in this.attributeType&&(t=this.attributeType[t]),t}set(e,t){if(this.collection){var r=this.get(t);null==r&&(this.attributeType===SortedSet?(assert.ok("contentCompare"in this.collectionEntryType),r=new SortedSet(this.collectionEntryType.contentCompare)):r=new this.attributeType),r.push(e),e=r}this.writeMethod.call(t,e)}getAttributeType(){return this.attributeType}getArrayEntryType(){return this.collectionEntryType}getName(){return this.name}isRequired(){return this.required}getOrder(){return this.order}getType(){return this.type}static contentCompare(e,t){return e.order-t.order}isArray(){return this.collection}toString(){return this.toString_}}class AggregateInfo{constructor(e,t,r){if(this.name=e,this.owner=t,this.headers={},this.attributes=new SortedSet(AggregateAttribute.contentCompare),r){for(var n in r.headers)this.headers[n]=r.headers[n];var s=r.attributes.values();for(var o in s){var a=s[o];this.attributes.insert(a)}}}getName(){return this.name}setName(e){this.name=e}getOwner(){return this.owner}getAttributes(){return this.attributes}getAttribute(e,t,r=null){var n=new Array,s=null;for(var o in this.attributes.values()){var a=this.attributes.values()[o];if(e===a.getName())n.push(a);else if(a.isArray()){if(null!=r){var i=a.getArrayEntryType();if(null!=i&&!isAssignableFrom(i,r))continue}(null==s||s.getOrder()<t)&&(s=a)}}if(0!=n.length){if(1==n.length)return n[0];for(var p of n)if(p.getOrder()>=t)return p}return s}hasHeaders(){return 0!=Object.keys(this.headers).length}getHeaders(e){var t={};for(var r in this.headers){var n=this.headers[r],s=n.getReadMethod().call(e);t[n.name()]=s}return t}getHeaderType(e){return e in this.headers?this.headers[e].getPropertyType():null}setHeader(e,t,r){t in this.headers&&this.headers[t].getWriteMethod().call(e,r)}addChildAggregate(e){var t=new AggregateAttribute(e);this.attributes.insert(t)}addElement(e){var t=new AggregateAttribute(e);this.attributes.insert(t)}addHeader(e){assert.ok(e.name()),this.headers[e.name()]=e}}class AggregateIntrospector{static getAggregateInfo(e){var t=e.Aggregate;return null!=t&&t.getOwner()===e?t:null}static getAncestorAggregateInfo(e){for(var t=e.prototype;t;t=Object.getPrototypeOf(t))if(t.constructor&&t.constructor.Aggregate)return t.constructor.Aggregate;return null}static findAggregateByName(e){return AggregateIntrospector.AGGREGATE_CLASSES_BY_NAME[e]}static addAggregate(e,t){AggregateIntrospector.AGGREGATE_CLASSES_BY_NAME[t]=e;var r=AggregateIntrospector.getAggregateInfo(e);if(r)assert.ok(r.getName()===AggregateIntrospector.placeholderName),r.setName(t);else{var n=AggregateIntrospector.getAncestorAggregateInfo(e);e.Aggregate=new AggregateInfo(t,e,n)}}static addChildAggregate(e,t){var r=AggregateIntrospector.getAggregateInfo(e);if(!r){var n=AggregateIntrospector.getAncestorAggregateInfo(e);r=e.Aggregate=new AggregateInfo(AggregateIntrospector.placeholderName,e,n)}assert.ok(null!=r),r&&r.addChildAggregate(t)}static addElement(e,t){var r=AggregateIntrospector.getAggregateInfo(e);if(!r){var n=AggregateIntrospector.getAncestorAggregateInfo(e);r=e.Aggregate=new AggregateInfo(AggregateIntrospector.placeholderName,e,n)}assert.ok(null!=r),r&&r.addElement(t)}static addHeader(e,t){var r=AggregateIntrospector.getAggregateInfo(e);if(!r){var n=AggregateIntrospector.getAncestorAggregateInfo(e);r=e.Aggregate=new AggregateInfo(AggregateIntrospector.placeholderName,e,n)}assert.ok(null!=r),r&&r.addHeader(t)}}function Aggregate_add(e,t="#NOT_SET#"){AggregateIntrospector.addAggregate(e,t)}function Element_add(e,t){assert.ok(null!=t.type),AggregateIntrospector.addElement(e,new Element(t))}AggregateIntrospector.AGGREGATE_CLASSES_BY_NAME={},AggregateIntrospector.placeholderName="##PLACEHOLDER##";class BankAccountDetails{getBankId(){return this.bankId}setBankId(e){this.bankId=e}getRoutingNumber(){return this.getBankId()}setRoutingNumber(e){this.setBankId(e)}getBranchId(){return this.branchId}setBranchId(e){this.branchId=e}getAccountNumber(){return this.accountNumber}setAccountNumber(e){this.accountNumber=e}getAccountType(){return this.accountType}setAccountType(e){this.accountType=e}getAccountKey(){return this.accountKey}setAccountKey(e){this.accountKey=e}}Aggregate_add(BankAccountDetails),Element_add(BankAccountDetails,{name:"BANKID",required:!0,order:0,type:String,read:BankAccountDetails.prototype.getBankId,write:BankAccountDetails.prototype.setBankId}),Element_add(BankAccountDetails,{name:"BRANCHID",order:10,type:String,read:BankAccountDetails.prototype.getBranchId,write:BankAccountDetails.prototype.setBranchId}),Element_add(BankAccountDetails,{name:"ACCTID",required:!0,order:20,type:String,read:BankAccountDetails.prototype.getAccountNumber,write:BankAccountDetails.prototype.setAccountNumber}),Element_add(BankAccountDetails,{name:"ACCTTYPE",required:!0,order:30,type:exports.AccountType,read:BankAccountDetails.prototype.getAccountType,write:BankAccountDetails.prototype.setAccountType}),Element_add(BankAccountDetails,{name:"ACCTKEY",order:40,type:String,read:BankAccountDetails.prototype.getAccountKey,write:BankAccountDetails.prototype.setAccountKey});class CreditCardAccountDetails{getAccountNumber(){return this.accountNumber}setAccountNumber(e){this.accountNumber=e}getAccountKey(){return this.accountKey}setAccountKey(e){this.accountKey=e}}Aggregate_add(CreditCardAccountDetails),Element_add(CreditCardAccountDetails,{name:"ACCTID",required:!0,order:0,type:String,read:CreditCardAccountDetails.prototype.getAccountNumber,write:CreditCardAccountDetails.prototype.setAccountNumber}),Element_add(CreditCardAccountDetails,{name:"ACCTKEY",order:10,type:String,read:CreditCardAccountDetails.prototype.getAccountKey,write:CreditCardAccountDetails.prototype.setAccountKey});class InvestmentAccountDetails{getBrokerId(){return this.brokerId}setBrokerId(e){this.brokerId=e}getAccountNumber(){return this.accountNumber}setAccountNumber(e){this.accountNumber=e}getAccountKey(){return this.accountKey}setAccountKey(e){this.accountKey=e}}Aggregate_add(InvestmentAccountDetails),Element_add(InvestmentAccountDetails,{name:"BROKERID",required:!0,order:0,type:String,read:InvestmentAccountDetails.prototype.getBrokerId,write:InvestmentAccountDetails.prototype.setBrokerId}),Element_add(InvestmentAccountDetails,{name:"ACCTID",required:!0,order:20,type:String,read:InvestmentAccountDetails.prototype.getAccountNumber,write:InvestmentAccountDetails.prototype.setAccountNumber}),Element_add(InvestmentAccountDetails,{name:"ACCTKEY",order:40,type:String,read:InvestmentAccountDetails.prototype.getAccountKey,write:InvestmentAccountDetails.prototype.setAccountKey});class StatementRange{constructor(){this.includeTransactions=!0}getStart(){return this.start}setStart(e){this.start=e}getEnd(){return this.end}setEnd(e){this.end=e}getIncludeTransactions(){return this.includeTransactions}setIncludeTransactions(e){this.includeTransactions=e}}Aggregate_add(StatementRange,"INCTRAN"),Element_add(StatementRange,{name:"DTSTART",order:0,type:Date,read:StatementRange.prototype.getStart,write:StatementRange.prototype.setStart}),Element_add(StatementRange,{name:"DTEND",order:10,type:Date,read:StatementRange.prototype.getEnd,write:StatementRange.prototype.setEnd}),Element_add(StatementRange,{name:"INCLUDE",required:!0,order:20,type:Boolean,read:StatementRange.prototype.getIncludeTransactions,write:StatementRange.prototype.setIncludeTransactions});class BaseAccountImpl{constructor(e,t,r,n){this.details=e,this.username=t,this.password=r,this.institution=n,this.messageType=this.getMessageSetType(e)}getMessageSetType(e){var t;if(e instanceof BankAccountDetails)t=exports.MessageSetType.banking;else if(this.getDetails()instanceof CreditCardAccountDetails)t=exports.MessageSetType.creditcard;else{if(!(this.getDetails()instanceof InvestmentAccountDetails))throw new OFXException("Illegal details");t=exports.MessageSetType.investment}return t}readStatement(e,t){var r=new StatementRange;r.setIncludeTransactions(!0),r.setStart(e),r.setEnd(t);var n=this.institution.createAuthenticatedRequest(this.username,this.password),s=this.createTransaction();return s.setWrappedMessage(this.createStatementRequest(this.getDetails(),r)),n.getMessageSets().insert(this.createRequestMessageSet(s)),this.institution.sendRequest(n).then(e=>(this.institution.doGeneralValidationChecks(n,e),this.unwrapStatementResponse(e)))}getDetails(){return this.details}getMessageType(){return this.messageType}}class RequestMessageSet{constructor(){this.version="1"}cast(){return this}getVersion(){return this.version}setVersion(e){this.version=e}static contentCompare(e,t){return e.getType()-t.getType()}}class RequestMessage{}class TransactionWrappedRequestMessage extends RequestMessage{constructor(e=UUID.v1()){super(),this.UID=e}getUID(){return this.UID}setUID(e){this.UID=e}getClientCookie(){return this.clientCookie}setClientCookie(e){this.clientCookie=e}getTransactionAuthorizationNumber(){return this.transactionAuthorizationNumber}setTransactionAuthorizationNumber(e){this.transactionAuthorizationNumber=e}}function ChildAggregate_add(e,t){assert.ok(null!=t.type),AggregateIntrospector.addChildAggregate(e,new ChildAggregate(t))}Element_add(TransactionWrappedRequestMessage,{name:"TRNUID",required:!0,order:0,type:String,read:TransactionWrappedRequestMessage.prototype.getUID,write:TransactionWrappedRequestMessage.prototype.setUID}),Element_add(TransactionWrappedRequestMessage,{name:"CLTCOOKIE",order:10,type:String,read:TransactionWrappedRequestMessage.prototype.getClientCookie,write:TransactionWrappedRequestMessage.prototype.setClientCookie}),Element_add(TransactionWrappedRequestMessage,{name:"TAN",order:20,type:String,read:TransactionWrappedRequestMessage.prototype.getTransactionAuthorizationNumber,write:TransactionWrappedRequestMessage.prototype.setTransactionAuthorizationNumber});class StatementRequest extends RequestMessage{getStatementRange(){return this.statementRange}setStatementRange(e){this.statementRange=e}}Aggregate_add(StatementRequest,"STMTRQ"),ChildAggregate_add(StatementRequest,{name:"INCTRAN",required:!1,order:10,type:StatementRange,read:StatementRequest.prototype.getStatementRange,write:StatementRequest.prototype.setStatementRange});class BankStatementRequest extends StatementRequest{getAccount(){return this.account}setAccount(e){this.account=e}}Aggregate_add(BankStatementRequest,"STMTRQ"),ChildAggregate_add(BankStatementRequest,{name:"BANKACCTFROM",required:!0,order:0,type:BankAccountDetails,read:BankStatementRequest.prototype.getAccount,write:BankStatementRequest.prototype.setAccount});class BankStatementRequestTransaction extends TransactionWrappedRequestMessage{getMessage(){return this.message}setMessage(e){this.message=e}setWrappedMessage(e){this.setMessage(e)}}Aggregate_add(BankStatementRequestTransaction,"STMTTRNRQ"),ChildAggregate_add(BankStatementRequestTransaction,{required:!0,order:30,type:BankStatementRequest,read:BankStatementRequestTransaction.prototype.getMessage,write:BankStatementRequestTransaction.prototype.setMessage});class BankingRequestMessageSet extends RequestMessageSet{getType(){return exports.MessageSetType.banking}getStatementRequest(){return this.statementRequest}setStatementRequest(e){this.statementRequest=e}getRequestMessages(){var e=[];return null!=this.getStatementRequest()&&e.push(this.getStatementRequest()),e}}Aggregate_add(BankingRequestMessageSet,"BANKMSGSRQV1"),ChildAggregate_add(BankingRequestMessageSet,{order:0,type:BankStatementRequestTransaction,read:BankingRequestMessageSet.prototype.getStatementRequest,write:BankingRequestMessageSet.prototype.setStatementRequest});class BankingAccountImpl extends BaseAccountImpl{constructor(e,t,r,n){super(e,t,r,n)}unwrapStatementResponse(e){var t=e.getMessageSet(exports.MessageSetType.banking);if(null==t)throw new OFXException("No banking response message set.");var r=t.getStatementResponse();if(null==r)throw new OFXException("No banking statement response transaction.");var n=r.getMessage();if(null==n)throw new OFXException("No banking statement in the transaction.");return n}createRequestMessageSet(e){var t=new BankingRequestMessageSet;return t.setStatementRequest(e),t}createTransaction(){return new BankStatementRequestTransaction}createStatementRequest(e,t){var r=new BankStatementRequest;return r.setAccount(e),r.setStatementRange(t),r}}class BaseFinancialInstitutionData{constructor(e){this.id=e}getId(){return this.id}setId(e){this.id=e}getFinancialInstitutionId(){return this.fid}setFinancialInstitutionId(e){this.fid=e}getName(){return this.name}setName(e){this.name=e}getOrganization(){return this.organization}setOrganization(e){this.organization=e}getOFXURL(){return this.ofxUrl}setOFXURL(e){this.ofxUrl=e}getBrokerId(){return this.brokerId}setBrokerId(e){this.brokerId=e}}class CreditCardStatementRequest extends StatementRequest{getAccount(){return this.account}setAccount(e){this.account=e}}Aggregate_add(CreditCardStatementRequest,"CCSTMTRQ"),ChildAggregate_add(CreditCardStatementRequest,{name:"CCACCTFROM",required:!0,order:0,type:CreditCardAccountDetails,read:CreditCardStatementRequest.prototype.getAccount,write:CreditCardStatementRequest.prototype.setAccount});class CreditCardStatementRequestTransaction extends TransactionWrappedRequestMessage{getMessage(){return this.message}setMessage(e){this.message=e}setWrappedMessage(e){this.setMessage(e)}}Aggregate_add(CreditCardStatementRequestTransaction,"CCSTMTTRNRQ"),ChildAggregate_add(CreditCardStatementRequestTransaction,{required:!0,order:30,type:CreditCardStatementRequest,read:CreditCardStatementRequestTransaction.prototype.getMessage,write:CreditCardStatementRequestTransaction.prototype.setMessage});class CreditCardRequestMessageSet extends RequestMessageSet{getType(){return exports.MessageSetType.creditcard}getStatementRequest(){return this.statementRequest}setStatementRequest(e){this.statementRequest=e}getRequestMessages(){var e=[];return null!=this.getStatementRequest()&&e.push(this.getStatementRequest()),e}}Aggregate_add(CreditCardRequestMessageSet,"CREDITCARDMSGSRQV1"),ChildAggregate_add(CreditCardRequestMessageSet,{order:0,type:CreditCardStatementRequestTransaction,read:CreditCardRequestMessageSet.prototype.getStatementRequest,write:CreditCardRequestMessageSet.prototype.setStatementRequest});class CreditCardAccountImpl extends BaseAccountImpl{constructor(e,t,r,n){super(e,t,r,n)}unwrapStatementResponse(e){var t=e.getMessageSet(exports.MessageSetType.creditcard);if(null==t)throw new OFXException("No credit card response message set.");var r=t.getStatementResponse();if(null==r)throw new OFXException("No credit card statement response transaction.");var n=r.getMessage();if(null==n)throw new OFXException("No credit card statement in the transaction.");return n}createRequestMessageSet(e){var t=new CreditCardRequestMessageSet;return t.setStatementRequest(e),t}createTransaction(){return new CreditCardStatementRequestTransaction}createStatementRequest(e,t){var r=new CreditCardStatementRequest;return r.setAccount(e),r.setStatementRange(t),r}}function Aggregate_add$1(e,t="#NOT_SET#"){AggregateIntrospector.addAggregate(e,t)}class Header extends PropertyDescriptor{constructor(e){super(e),this._name=e.name}name(){return this._name}}function Header_add(e,t){assert.ok(null!=t.type),AggregateIntrospector.addHeader(e,new Header(t))}!function(e){e[e.NONE=0]="NONE",e[e.TYPE1=1]="TYPE1"}(exports.ApplicationSecurity||(exports.ApplicationSecurity={}));class RequestEnvelope{constructor(e=UUID.v1()){this.security=exports.ApplicationSecurity.NONE,this.UID=e}getSecurity(){return this.security}setSecurity(e){this.security=e}getUID(){return this.UID}setUID(e){this.UID=e}getLastProcessedUID(){return this.lastProcessedUID}setLastProcessedUID(e){this.lastProcessedUID=e}getMessageSets(){return this.messageSets}setMessageSets(e){this.messageSets=e}}Aggregate_add$1(RequestEnvelope,"OFX"),Header_add(RequestEnvelope,{name:"SECURITY",type:exports.ApplicationSecurity,read:RequestEnvelope.prototype.getSecurity,write:RequestEnvelope.prototype.setSecurity}),Header_add(RequestEnvelope,{name:"NEWFILEUID",type:String,read:RequestEnvelope.prototype.getUID,write:RequestEnvelope.prototype.setUID}),Header_add(RequestEnvelope,{name:"OLDFILEUID",type:String,read:RequestEnvelope.prototype.getLastProcessedUID,write:RequestEnvelope.prototype.setLastProcessedUID}),ChildAggregate_add(RequestEnvelope,{order:1,type:SortedSet,collectionEntryType:RequestMessageSet,read:RequestEnvelope.prototype.getMessageSets,write:RequestEnvelope.prototype.setMessageSets});class FinancialInstitutionInfo{getId(){return this.id}setId(e){this.id=e}getOrganization(){return this.organization}setOrganization(e){this.organization=e}}Aggregate_add(FinancialInstitutionInfo,"FI"),Element_add(FinancialInstitutionInfo,{name:"FID",order:10,type:String,read:FinancialInstitutionInfo.prototype.getId,write:FinancialInstitutionInfo.prototype.setId}),Element_add(FinancialInstitutionInfo,{name:"ORG",required:!0,order:0,type:String,read:FinancialInstitutionInfo.prototype.getOrganization,write:FinancialInstitutionInfo.prototype.setOrganization});class SignonRequest extends RequestMessage{constructor(){super(),this.language="ENG",this.applicationId="Money",this.applicationVersion="1600"}getTimestamp(){return this.timestamp}setTimestamp(e){this.timestamp=e}getUserId(){return this.userId}setUserId(e){this.userId=e}getPassword(){return this.password}setPassword(e){this.password=e}getUserKey(){return this.userKey}setUserKey(e){this.userKey=e}getGenerateUserKey(){return this.generateUserKey}setGenerateUserKey(e){this.generateUserKey=e}getLanguage(){return this.language}setLanguage(e){this.language=e}getFinancialInstitution(){return this.financialInstitution}setFinancialInstitution(e){this.financialInstitution=e}getSessionId(){return this.sessionId}setSessionId(e){this.sessionId=e}getApplicationId(){return this.applicationId}setApplicationId(e){this.applicationId=e}getApplicationVersion(){return this.applicationVersion}setApplicationVersion(e){this.applicationVersion=e}getClientUID(){return this.clientUID}setClientUID(e){this.clientUID=e}getAdditionalCredentials1(){return this.additionalCredentials1}setAdditionalCredentials1(e){this.additionalCredentials1=e}getAdditionalCredentials2(){return this.additionalCredentials2}setAdditionalCredentials2(e){this.additionalCredentials2=e}getAuthToken(){return this.authToken}setAuthToken(e){this.authToken=e}getAccessKey(){return this.accessKey}setAccessKey(e){this.accessKey=e}}SignonRequest.ANONYMOUS_USER="anonymous00000000000000000000000",Aggregate_add(SignonRequest,"SONRQ"),Element_add(SignonRequest,{name:"DTCLIENT",required:!0,order:0,type:Date,read:SignonRequest.prototype.getTimestamp,write:SignonRequest.prototype.setTimestamp}),Element_add(SignonRequest,{name:"USERID",order:10,type:String,read:SignonRequest.prototype.getUserId,write:SignonRequest.prototype.setUserId}),Element_add(SignonRequest,{name:"USERPASS",order:20,type:String,read:SignonRequest.prototype.getPassword,write:SignonRequest.prototype.setPassword}),Element_add(SignonRequest,{name:"USERKEY",order:30,type:String,read:SignonRequest.prototype.getUserKey,write:SignonRequest.prototype.setUserKey}),Element_add(SignonRequest,{name:"GENUSERKEY",order:40,type:Boolean,read:SignonRequest.prototype.getGenerateUserKey,write:SignonRequest.prototype.setGenerateUserKey}),Element_add(SignonRequest,{name:"LANGUAGE",required:!0,order:50,type:String,read:SignonRequest.prototype.getLanguage,write:SignonRequest.prototype.setLanguage}),ChildAggregate_add(SignonRequest,{order:60,type:FinancialInstitutionInfo,read:SignonRequest.prototype.getFinancialInstitution,write:SignonRequest.prototype.setFinancialInstitution}),Element_add(SignonRequest,{name:"SESSCOOKIE",order:70,type:String,read:SignonRequest.prototype.getSessionId,write:SignonRequest.prototype.setSessionId}),Element_add(SignonRequest,{name:"APPID",required:!0,order:80,type:String,read:SignonRequest.prototype.getApplicationId,write:SignonRequest.prototype.setApplicationId}),Element_add(SignonRequest,{name:"APPVER",required:!0,order:90,type:String,read:SignonRequest.prototype.getApplicationVersion,write:SignonRequest.prototype.setApplicationVersion}),Element_add(SignonRequest,{name:"CLIENTUID",order:100,type:String,read:SignonRequest.prototype.getClientUID,write:SignonRequest.prototype.setClientUID}),Element_add(SignonRequest,{name:"USERCRED1",order:110,type:String,read:SignonRequest.prototype.getAdditionalCredentials1,write:SignonRequest.prototype.setAdditionalCredentials1}),Element_add(SignonRequest,{name:"USERCRED2",order:120,type:String,read:SignonRequest.prototype.getAdditionalCredentials2,write:SignonRequest.prototype.setAdditionalCredentials2}),Element_add(SignonRequest,{name:"AUTHTOKEN",order:130,type:String,read:SignonRequest.prototype.getAuthToken,write:SignonRequest.prototype.setAuthToken}),Element_add(SignonRequest,{name:"ACCESSKEY",order:140,type:String,read:SignonRequest.prototype.getAccessKey,write:SignonRequest.prototype.setAccessKey}),function(e){e[e.NONE=0]="NONE",e[e.SERVICE=1]="SERVICE",e[e.MESSAGE_SET=2]="MESSAGE_SET"}(exports.ClientRoutingCapability||(exports.ClientRoutingCapability={}));class ProfileRequest extends RequestMessage{constructor(){super(),this.routingCapability=exports.ClientRoutingCapability.MESSAGE_SET}getRoutingCapability(){return this.routingCapability}setRoutingCapability(e){this.routingCapability=e}getProfileLastUpdated(){return this.profileLastUpdated}setProfileLastUpdated(e){this.profileLastUpdated=e}}Aggregate_add(ProfileRequest,"PROFRQ"),Element_add(ProfileRequest,{name:"CLIENTROUTING",order:0,type:exports.ClientRoutingCapability,read:ProfileRequest.prototype.getRoutingCapability,write:ProfileRequest.prototype.setRoutingCapability}),Element_add(ProfileRequest,{name:"DTPROFUP",order:10,type:Date,read:ProfileRequest.prototype.getProfileLastUpdated,write:ProfileRequest.prototype.setProfileLastUpdated});class ProfileRequestTransaction extends TransactionWrappedRequestMessage{getMessage(){return this.message}setMessage(e){this.message=e}setWrappedMessage(e){this.setMessage(e)}}Aggregate_add(ProfileRequestTransaction,"PROFTRNRQ"),ChildAggregate_add(ProfileRequestTransaction,{required:!0,order:30,type:ProfileRequest,read:ProfileRequestTransaction.prototype.getMessage,write:ProfileRequestTransaction.prototype.setMessage});class ProfileRequestMessageSet extends RequestMessageSet{getType(){return exports.MessageSetType.profile}getProfileRequest(){return this.profileRequest}setProfileRequest(e){this.profileRequest=e}getRequestMessages(){var e=new Array;return null!=this.getProfileRequest()&&e.push(this.getProfileRequest()),e}}Aggregate_add(ProfileRequestMessageSet,"PROFMSGSRQV1"),ChildAggregate_add(ProfileRequestMessageSet,{required:!0,order:0,type:ProfileRequestTransaction,read:ProfileRequestMessageSet.prototype.getProfileRequest,write:ProfileRequestMessageSet.prototype.setProfileRequest});class AccountInfoRequest extends RequestMessage{constructor(){super(),this.lastUpdated=new Date(0)}getLastUpdated(){return this.lastUpdated}setLastUpdated(e){this.lastUpdated=e}}Aggregate_add(AccountInfoRequest,"ACCTINFORQ"),Element_add(AccountInfoRequest,{name:"DTACCTUP",required:!0,order:0,type:Date,read:AccountInfoRequest.prototype.getLastUpdated,write:AccountInfoRequest.prototype.setLastUpdated});class AccountInfoRequestTransaction extends TransactionWrappedRequestMessage{getMessage(){return this.message}setMessage(e){this.message=e}setWrappedMessage(e){this.setMessage(e)}}Aggregate_add(AccountInfoRequestTransaction,"ACCTINFOTRNRQ"),ChildAggregate_add(AccountInfoRequestTransaction,{required:!0,order:30,type:AccountInfoRequest,read:AccountInfoRequestTransaction.prototype.getMessage,write:AccountInfoRequestTransaction.prototype.setMessage});class SignupRequestMessageSet extends RequestMessageSet{getType(){return exports.MessageSetType.signup}getAccountInfoRequest(){return this.accountInfoRequest}setAccountInfoRequest(e){this.accountInfoRequest=e}getRequestMessages(){var e=new Array;return null!=this.getAccountInfoRequest()&&e.push(this.getAccountInfoRequest()),e}}Aggregate_add(SignupRequestMessageSet,"SIGNUPMSGSRQV1"),ChildAggregate_add(SignupRequestMessageSet,{order:0,type:AccountInfoRequestTransaction,read:SignupRequestMessageSet.prototype.getAccountInfoRequest,write:SignupRequestMessageSet.prototype.setAccountInfoRequest});class IncludePosition{constructor(){this.includePositions=!0}getDateSentDown(){return this.sentDownDate}setDateSentDown(e){this.sentDownDate=e}getIncludePositions(){return this.includePositions}setIncludePositions(e){this.includePositions=e}}Aggregate_add(IncludePosition,"INCPOS"),Element_add(IncludePosition,{name:"DTASOF",order:0,type:Date,read:IncludePosition.prototype.getDateSentDown,write:IncludePosition.prototype.setDateSentDown}),Element_add(IncludePosition,{name:"INCLUDE",order:10,type:Boolean,read:IncludePosition.prototype.getIncludePositions,write:IncludePosition.prototype.setIncludePositions});class InvestmentStatementRequest extends StatementRequest{constructor(){super(),this.includeOpenOrders=!1,this.includeBalance=!0}getAccount(){return this.account}setAccount(e){this.account=e}getIncludeOpenOrders(){return this.includeOpenOrders}setIncludeOpenOrders(e){this.includeOpenOrders=e}getIncludePosition(){return this.includePosition}setIncludePosition(e){this.includePosition=e}getIncludeBalance(){return this.includeBalance}setIncludeBalance(e){this.includeBalance=e}}Aggregate_add(InvestmentStatementRequest,"INVSTMTRQ"),ChildAggregate_add(InvestmentStatementRequest,{name:"INVACCTFROM",required:!0,order:0,type:InvestmentAccountDetails,read:InvestmentStatementRequest.prototype.getAccount,write:InvestmentStatementRequest.prototype.setAccount}),Element_add(InvestmentStatementRequest,{name:"INCOO",order:20,type:Boolean,read:InvestmentStatementRequest.prototype.getIncludeOpenOrders,write:InvestmentStatementRequest.prototype.setIncludeOpenOrders}),ChildAggregate_add(InvestmentStatementRequest,{name:"INCPOS",required:!0,order:30,type:IncludePosition,read:InvestmentStatementRequest.prototype.getIncludePosition,write:InvestmentStatementRequest.prototype.setIncludePosition}),Element_add(InvestmentStatementRequest,{name:"INCBAL",required:!0,order:40,type:Boolean,read:InvestmentStatementRequest.prototype.getIncludeBalance,write:InvestmentStatementRequest.prototype.setIncludeBalance});class InvestmentStatementRequestTransaction extends TransactionWrappedRequestMessage{getMessage(){return this.message}setMessage(e){this.message=e}setWrappedMessage(e){this.setMessage(e)}}Aggregate_add(InvestmentStatementRequestTransaction,"INVSTMTTRNRQ"),ChildAggregate_add(InvestmentStatementRequestTransaction,{required:!0,order:30,type:InvestmentStatementRequest,read:InvestmentStatementRequestTransaction.prototype.getMessage,write:InvestmentStatementRequestTransaction.prototype.setMessage});class SecurityId{getUniqueId(){return this.uniqueId}setUniqueId(e){this.uniqueId=e}getUniqueIdType(){return this.uniqueIdType}setUniqueIdType(e){this.uniqueIdType=e}}Aggregate_add(SecurityId,"SECID"),Element_add(SecurityId,{name:"UNIQUEID",required:!0,order:10,type:String,read:SecurityId.prototype.getUniqueId,write:SecurityId.prototype.setUniqueId}),Element_add(SecurityId,{name:"UNIQUEIDTYPE",required:!0,order:20,type:String,read:SecurityId.prototype.getUniqueIdType,write:SecurityId.prototype.setUniqueIdType});class SecurityRequest{getSecurityId(){return this.securityId}setSecurityId(e){this.securityId=e,this.tickerSymbol=null,this.fiId=null}getTickerSymbol(){return this.tickerSymbol}setTickerSymbol(e){this.tickerSymbol=e,this.securityId=null,this.fiId=null}getFiId(){return this.fiId}setFiId(e){this.fiId=e,this.securityId=null,this.tickerSymbol=null}}Aggregate_add(SecurityRequest,"SECRQ"),Element_add(SecurityRequest,{name:"SECID",order:10,type:SecurityId,read:SecurityRequest.prototype.getSecurityId,write:SecurityRequest.prototype.setSecurityId}),Element_add(SecurityRequest,{name:"TICKER",order:20,type:String,read:SecurityRequest.prototype.getTickerSymbol,write:SecurityRequest.prototype.setTickerSymbol}),Element_add(SecurityRequest,{name:"FIID",order:30,type:String,read:SecurityRequest.prototype.getFiId,write:SecurityRequest.prototype.setFiId});class SecurityListRequest extends RequestMessage{getSecurityRequests(){return this.securityRequests}setSecurityRequests(e){this.securityRequests=e}}Aggregate_add(SecurityListRequest,"SECLISTRQ"),ChildAggregate_add(SecurityListRequest,{required:!0,order:10,type:Array,collectionEntryType:SecurityRequest,read:SecurityListRequest.prototype.getSecurityRequests,write:SecurityListRequest.prototype.setSecurityRequests});class SecurityListRequestTransaction extends TransactionWrappedRequestMessage{getMessage(){return this.message}setMessage(e){this.message=e}setWrappedMessage(e){this.setMessage(e)}}Aggregate_add(SecurityListRequestTransaction,"SECLISTTRNRQ"),ChildAggregate_add(SecurityListRequestTransaction,{required:!0,order:30,type:SecurityListRequest,read:SecurityListRequestTransaction.prototype.getMessage,write:SecurityListRequestTransaction.prototype.setMessage});class InvestmentStatementRequestMessageSet extends RequestMessageSet{getType(){return exports.MessageSetType.investment}getStatementRequest(){return this.statementRequest}setStatementRequest(e){this.statementRequest=e}getRequestMessages(){var e=new Array;return null!=this.getStatementRequest()&&e.push(this.getStatementRequest()),e}}Aggregate_add(InvestmentStatementRequestMessageSet,"INVSTMTMSGSRQV1"),ChildAggregate_add(InvestmentStatementRequestMessageSet,{order:0,type:InvestmentStatementRequestTransaction,read:InvestmentStatementRequestMessageSet.prototype.getStatementRequest,write:InvestmentStatementRequestMessageSet.prototype.setStatementRequest});class SecurityListRequestMessageSet extends RequestMessageSet{getType(){return exports.MessageSetType.investment}getSecurityListRequest(){return this.securityListRequest}setSecurityListRequest(e){this.securityListRequest=e}getRequestMessages(){var e=new Array;return null!=this.getSecurityListRequest()&&e.push(this.getSecurityListRequest()),e}}Aggregate_add(SecurityListRequestMessageSet,"SECLISTMSGSRQV1"),ChildAggregate_add(SecurityListRequestMessageSet,{order:0,type:SecurityListRequestTransaction,read:SecurityListRequestMessageSet.prototype.getSecurityListRequest,write:SecurityListRequestMessageSet.prototype.setSecurityListRequest});class InvestmentAccountImpl{constructor(e,t,r,n){this.details=e,this.username=t,this.password=r,this.institution=n}readStatement(e,t){var r=new StatementRange;r.setIncludeTransactions(!0),r.setStart(e),r.setEnd(t);var n=this.institution.createAuthenticatedRequest(this.username,this.password),s=new InvestmentStatementRequestTransaction;return s.setWrappedMessage(this.createStatementRequest(this.getDetails(),r)),n.getMessageSets().insert(this.createStatementRequestMessageSet(s)),this.institution.sendRequest(n).then(e=>(this.institution.doGeneralValidationChecks(n,e),this.unwrapStatementResponse(e)))}readSecurityList(e){var t=this.institution.createAuthenticatedRequest(this.username,this.password),r=new SecurityListRequestTransaction;return r.setWrappedMessage(this.createSecurityListRequest(e)),t.getMessageSets().insert(this.createSecurityListRequestMessageSet(r)),this.institution.sendRequest(t).then(e=>(this.institution.doGeneralValidationChecks(t,e),this.unwrapSecurityList(e)))}getDetails(){return this.details}unwrapStatementResponse(e){var t=e.getMessageSet(exports.MessageSetType.investment);if(null==t)throw new OFXException("No investment response message set.");var r=t.getStatementResponse();if(null==r)throw new OFXException("No investment statement response transaction.");var n=r.getMessage();if(null==n)throw new OFXException("No investment statement in the transaction.");var s=e.getMessageSet(exports.MessageSetType.investment_security);return null!=s&&n.setSecurityList(s.getSecurityList()),n}createStatementRequestMessageSet(e){var t=new InvestmentStatementRequestMessageSet;return t.setStatementRequest(e),t}createStatementRequest(e,t){var r=new InvestmentStatementRequest;return r.setAccount(e),r.setStatementRange(t),r.setIncludePosition(new IncludePosition),r}createSecurityListRequestMessageSet(e){var t=new SecurityListRequestMessageSet;return t.setSecurityListRequest(e),t}createSecurityListRequest(e){var t=new SecurityListRequest;return t.setSecurityRequests(e),t}unwrapSecurityList(e){var t=e.getMessageSet(exports.MessageSetType.investment_security);if(null==t)throw new OFXException("No security list response message set.");var r=t.getSecurityList();if(null==r)throw new OFXException("No security list response transaction.");return r}}class PasswordChangeRequest extends RequestMessage{getUserId(){return this.userId}setUserId(e){this.userId=e}getNewPassword(){return this.newPassword}setNewPassword(e){this.newPassword=e}}Aggregate_add(PasswordChangeRequest,"PINCHRQ"),Element_add(PasswordChangeRequest,{name:"USERID",required:!0,order:0,type:String,read:PasswordChangeRequest.prototype.getUserId,write:PasswordChangeRequest.prototype.setUserId}),Element_add(PasswordChangeRequest,{name:"NEWUSERPASS",required:!0,order:10,type:String,read:PasswordChangeRequest.prototype.getNewPassword,write:PasswordChangeRequest.prototype.setNewPassword});class PasswordChangeRequestTransaction extends TransactionWrappedRequestMessage{getMessage(){return this.message}setMessage(e){this.message=e}setWrappedMessage(e){this.setMessage(e)}}Aggregate_add(PasswordChangeRequestTransaction,"PINCHTRNRQ"),ChildAggregate_add(PasswordChangeRequestTransaction,{required:!0,order:30,type:PasswordChangeRequest,read:PasswordChangeRequestTransaction.prototype.getMessage,write:PasswordChangeRequestTransaction.prototype.setMessage});class SignonRequestMessageSet extends RequestMessageSet{getType(){return exports.MessageSetType.signon}getSignonRequest(){return this.signonRequest}setSignonRequest(e){this.signonRequest=e}getPasswordChangeRequest(){return this.passwordChangeRequest}setPasswordChangeRequest(e){this.passwordChangeRequest=e}getRequestMessages(){var e=new Array;return null!=this.getSignonRequest()&&e.push(this.getSignonRequest()),null!=this.getPasswordChangeRequest()&&e.push(this.getPasswordChangeRequest()),e}}function instanceof_StatusHolder(e){return e instanceof Object&&"function"==typeof e.getStatusHolderName&&"function"==typeof e.getStatus}Aggregate_add(SignonRequestMessageSet,"SIGNONMSGSRQV1"),ChildAggregate_add(SignonRequestMessageSet,{required:!0,order:0,type:SignonRequest,read:SignonRequestMessageSet.prototype.getSignonRequest,write:SignonRequestMessageSet.prototype.setSignonRequest}),ChildAggregate_add(SignonRequestMessageSet,{order:10,type:PasswordChangeRequestTransaction,read:SignonRequestMessageSet.prototype.getPasswordChangeRequest,write:SignonRequestMessageSet.prototype.setPasswordChangeRequest});class ResponseMessage{}!function(e){e[e.INFO=0]="INFO",e[e.WARN=1]="WARN",e[e.ERROR=2]="ERROR"}(exports.Severity||(exports.Severity={}));class StatusCode{getCode(){throw new OFXException("abstract")}getMessage(){throw new OFXException("abstract")}getDefaultSeverity(){throw new OFXException("abstract")}}class KnownCode extends StatusCode{constructor(e,t,r){super(),this.code=e,this.message=t,this.defaultSeverity=r}getCode(){return this.code}getMessage(){return this.message}getDefaultSeverity(){return this.defaultSeverity}static fromCode(e){for(var t in KnownCode.KnownCodes){var r=KnownCode.KnownCodes[t];if(r.getCode()==e)return r}return null}toString(){return this.code.toString()}}KnownCode.SUCCESS=new KnownCode(0,"Success",exports.Severity.INFO),KnownCode.CLIENT_UP_TO_DATE=new KnownCode(1,"Client is up-to-date",exports.Severity.INFO),KnownCode.GENERAL_ERROR=new KnownCode(2e3,"General error.",exports.Severity.ERROR),KnownCode.GENERAL_ACCOUNT_ERROR=new KnownCode(2002,"General account error.",exports.Severity.ERROR),KnownCode.ACCOUNT_NOT_FOUND=new KnownCode(2003,"Account not found.",exports.Severity.ERROR),KnownCode.ACCOUNT_CLOSED=new KnownCode(2004,"Account closed.",exports.Severity.ERROR),KnownCode.ACCOUNT_NOT_AUTHORIZED=new KnownCode(2005,"Account not authorized.",exports.Severity.ERROR),KnownCode.DATE_TOO_SOON=new KnownCode(2014,"Date too soon",exports.Severity.ERROR),KnownCode.DUPLICATE_REQUEST=new KnownCode(2019,"Duplicate request.",exports.Severity.ERROR),KnownCode.UNSUPPORTED_VERSION=new KnownCode(2021,"Unsupported version",exports.Severity.ERROR),KnownCode.INVALID_TAN=new KnownCode(2022,"Invalid transaction authorization number.",exports.Severity.ERROR),KnownCode.MFA_CHALLENGE_REQUIRED=new KnownCode(3e3,"Further authentication required.",exports.Severity.ERROR),KnownCode.MFA_CHALLENGE_FAILED=new KnownCode(3001,"MFA failed.",exports.Severity.ERROR),KnownCode.PASSWORD_CHANGE_REQUIRED=new KnownCode(15e3,"Password change required.",exports.Severity.INFO),KnownCode.SIGNON_INVALID=new KnownCode(15500,"Invalid signon",exports.Severity.ERROR),KnownCode.CUSTOMER_ACCOUNT_IN_USE=new KnownCode(15501,"Customer account in use.",exports.Severity.ERROR),KnownCode.PASSWORD_LOCKED=new KnownCode(15502,"Password locked.",exports.Severity.ERROR),KnownCode.INVALID_CLIENT_UID=new KnownCode(15510,"Invalid client UID.",exports.Severity.ERROR),KnownCode.CONTACT_FI=new KnownCode(15511,"User must contact FI.",exports.Severity.ERROR),KnownCode.AUTHTOKEN_REQUIRED=new KnownCode(15512,"Auth token required.",exports.Severity.ERROR),KnownCode.INVALID_AUTHTOKEN=new KnownCode(15513,"Invalid auth token.",exports.Severity.ERROR),KnownCode.NO_DATA=new KnownCode(14701,"No Tax Data for Account.",exports.Severity.ERROR),KnownCode.DB_EXCEPTION=new KnownCode(14702,"Database error has occured.",exports.Severity.ERROR),KnownCode.NO_TAXSUPPORT=new KnownCode(14703,"This Tax Year is not supported.",exports.Severity.ERROR),KnownCode.KnownCodes=[KnownCode.SUCCESS,KnownCode.CLIENT_UP_TO_DATE,KnownCode.GENERAL_ERROR,KnownCode.GENERAL_ACCOUNT_ERROR,KnownCode.ACCOUNT_NOT_FOUND,KnownCode.ACCOUNT_CLOSED,KnownCode.ACCOUNT_NOT_AUTHORIZED,KnownCode.DATE_TOO_SOON,KnownCode.DUPLICATE_REQUEST,KnownCode.UNSUPPORTED_VERSION,KnownCode.INVALID_TAN,KnownCode.MFA_CHALLENGE_REQUIRED,KnownCode.MFA_CHALLENGE_FAILED,KnownCode.PASSWORD_CHANGE_REQUIRED,KnownCode.SIGNON_INVALID,KnownCode.CUSTOMER_ACCOUNT_IN_USE,KnownCode.PASSWORD_LOCKED,KnownCode.INVALID_CLIENT_UID,KnownCode.CONTACT_FI,KnownCode.AUTHTOKEN_REQUIRED,KnownCode.INVALID_AUTHTOKEN,KnownCode.NO_DATA,KnownCode.DB_EXCEPTION,KnownCode.NO_TAXSUPPORT];class Status{constructor(){this.code=KnownCode.SUCCESS,this.severity=void 0}getCode(){return this.code}setCode(e){this.code=e,void 0===this.severity&&(this.severity=e.getDefaultSeverity())}getSeverity(){return this.severity}setSeverity(e){this.severity=e}getMessage(){return this.message}setMessage(e){this.message=e}}Aggregate_add$1(Status,"STATUS"),Element_add(Status,{name:"CODE",required:!0,order:0,type:StatusCode,read:Status.prototype.getCode,write:Status.prototype.setCode}),Element_add(Status,{name:"SEVERITY",required:!0,order:10,type:exports.Severity,read:Status.prototype.getSeverity,write:Status.prototype.setSeverity}),Element_add(Status,{name:"MESSAGE",order:20,type:String,read:Status.prototype.getMessage,write:Status.prototype.setMessage});class TransactionWrappedResponseMessage extends ResponseMessage{getUID(){return this.UID}setUID(e){this.UID=e}getClientCookie(){return this.clientCookie}setClientCookie(e){this.clientCookie=e}getStatusHolderName(){return this.getResponseMessageName()}getResponseMessageName(){var e="transaction response";return null!=this.getWrappedMessage()&&(e=this.getWrappedMessage().getResponseMessageName()+" transaction"),e}getStatus(){return this.status}setStatus(e){this.status=e}}Element_add(TransactionWrappedResponseMessage,{name:"TRNUID",required:!0,order:0,type:String,read:TransactionWrappedResponseMessage.prototype.getUID,write:TransactionWrappedResponseMessage.prototype.setUID}),Element_add(TransactionWrappedResponseMessage,{name:"CLTCOOKIE",order:20,type:String,read:TransactionWrappedResponseMessage.prototype.getClientCookie,write:TransactionWrappedResponseMessage.prototype.setClientCookie}),ChildAggregate_add(TransactionWrappedResponseMessage,{required:!0,order:10,type:Status,read:TransactionWrappedResponseMessage.prototype.getStatus,write:TransactionWrappedResponseMessage.prototype.setStatus});class FinancialInstitutionImpl extends FinancialInstitutionInfo{constructor(e,t){if(super(),null==e)throw new OFXException("Data cannot be null");if(null==t)throw new OFXException("An OFX connection must be supplied");this.data=e,this.connection=t}readProfile(){var e=this.createAuthenticatedRequest(SignonRequest.ANONYMOUS_USER,SignonRequest.ANONYMOUS_USER),t=new ProfileRequestMessageSet;return t.setProfileRequest(this.createProfileTransaction()),e.getMessageSets().insert(t),this.sendRequest(e,this.getData().getOFXURL()).then(t=>(this.doGeneralValidationChecks(e,t),this.getProfile(t)))}readAccountProfiles(e,t){var r=this.createAuthenticatedRequest(e,t),n=new SignupRequestMessageSet;return n.setAccountInfoRequest(this.createAccountInfoTransaction()),r.getMessageSets().insert(n),this.sendRequest(r,this.getData().getOFXURL()).then(e=>(this.doGeneralValidationChecks(r,e),this.getAccountProfiles(e)))}loadBankAccount(e,t,r){return new BankingAccountImpl(e,t,r,this)}loadCreditCardAccount(e,t,r){return new CreditCardAccountImpl(e,t,r,this)}loadInvestmentAccount(e,t,r){return new InvestmentAccountImpl(e,t,r,this)}createAuthenticatedRequest(e,t){var r=new RequestEnvelope,n=new SortedSet(RequestMessageSet.contentCompare),s=new SignonRequestMessageSet;return s.setSignonRequest(this.createSignonRequest(e,t)),n.insert(s),r.setMessageSets(n),r}sendRequest(e,t=this.getData().getOFXURL()){return this.getConnection().sendRequest(e,t)}getProfile(e){var t=e.getMessageSet(exports.MessageSetType.profile);if(null==t)throw new OFXException("No profile response set.");var r=t.getProfileResponse();if(null==r)throw new OFXException("No profile transaction wrapper.");var n=r.getMessage();if(null==n)throw new OFXException("No profile message.");return n}doGeneralValidationChecks(e,t){if(t.getSecurity()!=exports.ApplicationSecurity.NONE)throw new UnsupportedOFXSecurityTypeException("Unable to participate in "+t.getSecurity()+" security.");if(e.getUID()!==t.getUID())throw new OFXException("Invalid transaction ID '"+t.getUID()+"' in response. Expected: "+e);for(var r of e.getMessageSets().values()){var n=t.getMessageSet(r.getType());if(null==n)throw new NoOFXResponseException("No response for the "+r.getType()+" request.");if(n.getType()==exports.MessageSetType.signon)if(null==n.getSignonResponse())throw new NoOFXResponseException("No signon response.");var s={};for(var o of r.getRequestMessages())o instanceof TransactionWrappedRequestMessage&&(s[o.getUID()]=!0);for(var a of n.getResponseMessages())if(instanceof_StatusHolder(a)&&this.validateStatus(a),a instanceof TransactionWrappedResponseMessage){var i=a.getUID();if(null==i)throw new OFXTransactionException("Invalid response transaction: no UID.");if(!(i in s))throw new OFXTransactionException("Response to an unknown transaction: "+i+".");delete s[i]}if(0!=Object.keys(s).length)throw new OFXTransactionException("No response to the following transactions: "+s)}}validateStatus(e){var t=e.getStatus();if(null==t)throw new OFXException("Invalid OFX response: no status returned in the "+e.getStatusHolderName()+" response.");if(KnownCode.SUCCESS!=t.getCode()){var r=t.getMessage();throw null==r&&(r="No response status code.",null!=t.getCode()&&(r=t.getCode().getMessage())),new OFXStatusException(t,"Invalid "+e.getStatusHolderName()+": "+r)}}createProfileTransaction(){var e=new ProfileRequestTransaction;return e.setMessage(this.createProfileRequest()),e}createProfileRequest(){var e=new ProfileRequest;return e.setProfileLastUpdated(new Date(0)),e}createSignonRequest(e,t){var r=new SignonRequest;r.setTimestamp(new Date);var n=new FinancialInstitutionInfo;return n.setId(this.getData().getFinancialInstitutionId()),n.setOrganization(this.getData().getOrganization()),r.setFinancialInstitution(n),r.setUserId(e),r.setPassword(t),r.setApplicationId(OFXApplicationContextHolder.getCurrentContext().getAppId()),r.setApplicationVersion(OFXApplicationContextHolder.getCurrentContext().getAppVersion()),r}createAccountInfoTransaction(){var e=new AccountInfoRequestTransaction;return e.setMessage(this.createAccountInfoRequest()),e}createAccountInfoRequest(){return new AccountInfoRequest}getAccountProfiles(e){var t=e.getMessageSet(exports.MessageSetType.signup);if(null==t)throw new OFXException("No signup response message set.");var r=t.getAccountInfoResponse();if(null==r)throw new OF