{"version":3,"file":"src_app_master_master_module_ts.js","mappings":"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CAAC,CAAC;QAC7C,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,CAAC;CACF;;YAvBQ,4DAAU;;AASN,cAAc;IAH1B,yDAAU,CAAC;QACV,UAAU,EAAE,MAAM;KACnB,CAAC;GACW,cAAc,CAc1B;AAd0B;;;;;;;;;;;;;;;;;;ACTsC;IAKpD,aAAa,SAAb,aAAa;IAIxB;QAFY,kBAAa,GAAsB,IAAI,uDAAY,EAAE,CAAC;IAElD,CAAC;CAClB;;;4BAHI,iDAAM;;AAFE,aAAa;IAHzB,yDAAU,CAAC;QACV,UAAU,EAAE,MAAM;KACnB,CAAC;GACW,aAAa,CAKzB;AALyB;;;;;;;;;;;;;;;ACL1B;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AC1BA;AACA;AACsC;AACc;AACV;AACP;AACa;AAChD,+BAA+B,oCAAoC;AAC5D,gCAAgC,mDAAU;AACjD,uCAAuC,2CAA2C,sBAAsB,kCAAkC;AAC1I;AACA;AACA,4CAA4C,mDAAe;AAC3D,mCAAmC,6DAAe;AAClD;AACA;AACA,mCAAmC,yDAAa;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,+CAAU;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACZA;AACA;AACA;AACO;AACP,sCAAsC,mCAAmC;AACzE;AACA,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB;AACA;AACA;AACA,iBAAiB,aAAa,iBAAiB,WAAW;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,sCAAsC,sCAAsC;AAC5E;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP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A+B,wCAAwC;AAChE;AACP;AACA,QAAQ,kDAAc;AACtB;AACA;AACA;AACA;AACA;AACA,8BAA8B,iDAAa;AAC3C;AACA;AACA,8BAA8B,iDAAa;AAC3C;AACA;AACA;AACA;AACA,QAAQ,kDAAc;AACtB,QAAQ,kDAAc;AACtB;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wCAAwC;AAChE;AACA,eAAe,cAAc,cAAc,uCAAuC;AAClF;AACA;AACA,QAAQ,kDAAc;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,2EAAsB;AAC7D;AACA;AACA,uCAAuC,2EAAsB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,wCAAwC;AAC3D;AACA,iBAAiB,eAAe,gBAAgB,uCAAuC;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,2DAAc;AAC7C,eAAe,gEAAoB,4BAA4B,yDAAmB,uBAAuB,6DAAe;AACxH;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;AChHA;AACA;AACA;AACO;AACP;AACA,2EAA2E,4CAA4C;AACvH;AACA,0EAA0E,4CAA4C;AACtH;AACA,0EAA0E,4CAA4C;AACtH;AACA,iFAAiF,kDAAkD;AACnI;AACA,iFAAiF,kDAAkD;AACnI;AACA,oEAAoE,sCAAsC;AAC1G;AACA,qEAAqE,uCAAuC;AAC5G;AACA,CAAC,kCAAkC;;;;;;;;;;;;;;;ACnBnC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4BAA4B;;;;;;;;;;;;;;;;ACvB7B;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8CAA8C;AAC/C;AACO;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,wCAAwC;;;;;;;;;;;;;;;;;;;;ACtBzC;AACA;AAC6C;AACR;AACS;AACP;AACiB;AACxD;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,4DAAmB;AACjD;AACA,6BAA6B,qCAAqC;AAClE;AACA,eAAe,QAAQ;AACvB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,yDAAmB;AACxC;AACA;AACA,yBAAyB,uEAAuB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,iEAAsB;AAC3C;AACA;AACA,qBAAqB,iEAAsB;AAC3C;AACA;AACA,qBAAqB,iEAAsB;AAC3C;AACA;AACA,qBAAqB,2DAAgB;AACrC;AACA;AACA,qBAAqB,4DAAiB;AACtC;AACA;AACA;AACA;AACA,+BAA+B,0DAAoB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,qCAAqC;AACnE;AACA,eAAe,YAAY;AAC3B,iBAAiB,QAAQ;AACzB;AACA;AACA,eAAe,uEAAuB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACrGA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,oCAAoC;AACvE;;;;;;;;;;;;;;;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;CAEA;;AACA;;AACO,MAAMjN,oBAAN,CAA2B;AAC9BnE,EAAAA,WAAW,CAACyF,UAAD,EAAa2B,kBAAb,EAAiCnH,MAAjC,EAAyC0E,OAAzC,EAAkD;AACzD,SAAKa,WAAL,GAAmBC,UAAnB;AACA,SAAK0B,mBAAL,GAA2BC,kBAA3B;AACA,SAAKlH,OAAL,GAAeD,MAAf;AACA,SAAK8V,UAAL,GAAkB,IAAInV,6DAAJ,EAAlB;AACA,SAAKgF,QAAL,GAAgBjB,OAAhB;AACA,SAAKqR,QAAL,GAAg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","sources":["./src/app/components/bank/bank-account/bank-account.component.ts","./src/app/components/components.module.ts","./src/app/components/exchange/exchange-bs/exchange-bs.component.ts","./src/app/components/exchange/exchange-rs/exchange-rs.component.ts","./src/app/components/exchange/exchange-us/exchange-us.component.ts","./src/app/components/extracts/all-transactions/all-transactions.component.ts","./src/app/components/extracts/transactions/transactions.component.ts","./src/app/components/form-debug/form-debug.component.ts","./src/app/components/headbar/headbar.component.ts","./src/app/components/loading-small/loading-small.component.ts","./src/app/components/loading/loading.component.ts","./src/app/components/menu/menu.component.ts","./src/app/components/modals/modal-change-password/modal-change-password.component.ts","./src/app/components/modals/modal-help-deposit/modal-help-deposit.component.ts","./src/app/components/modals/modal-qr-code/modal-qr-code.component.ts","./src/app/components/modals/modal-settings/modal-settings.component.ts","./src/app/components/wallet/wallet-card/wallet-card.component.ts","./src/app/components/wallet/wallet-menu/wallet-menu.component.ts","./src/app/components/withdraw/withdraw-by-delivery/withdraw-by-delivery.component.ts","./src/app/components/withdraw/withdraw-by-transfer/withdraw-by-transfer.component.ts","./src/app/master/master-routing.module.ts","./src/app/master/master.module.ts","./src/app/master/master.page.ts","./src/app/models/allBalanceUser.ts","./src/app/services/bank.service.ts","./src/app/services/city.service.ts","./src/app/services/notify.service.ts","./src/app/services/order.service.ts","./src/app/services/theme.service.ts","./src/app/services/version.service.ts","./src/app/services/wallet.service.ts","./node_modules/@microsoft/signalr/dist/esm/AbortController.js","./node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js","./node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js","./node_modules/@microsoft/signalr/dist/esm/Errors.js","./node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js","./node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js","./node_modules/@microsoft/signalr/dist/esm/HeaderNames.js","./node_modules/@microsoft/signalr/dist/esm/HttpClient.js","./node_modules/@microsoft/signalr/dist/esm/HttpConnection.js","./node_modules/@microsoft/signalr/dist/esm/HubConnection.js","./node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js","./node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js","./node_modules/@microsoft/signalr/dist/esm/ILogger.js","./node_modules/@microsoft/signalr/dist/esm/ITransport.js","./node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js","./node_modules/@microsoft/signalr/dist/esm/Loggers.js","./node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js","./node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js","./node_modules/@microsoft/signalr/dist/esm/Subject.js","./node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js","./node_modules/@microsoft/signalr/dist/esm/Utils.js","./node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js","./node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js"],"sourcesContent":["import { Component, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { LoadingController, ModalController, ToastController } from '@ionic/angular';\r\nimport { BankThatWeWorkViewModel } from 'src/app/models/bankThatWeWorkViewModel';\r\nimport { BankService } from 'src/app/services/bank.service';\r\nimport { Security } from 'src/app/utils/security.util';\r\n\r\n@Component({\r\n selector: 'app-bank-account',\r\n templateUrl: './bank-account.component.html',\r\n styleUrls: ['./bank-account.component.scss'],\r\n})\r\nexport class BankAccountComponent implements OnInit {\r\n\r\n form: FormGroup;\r\n banks: BankThatWeWorkViewModel[] = [];\r\n bond;\r\n typeKey = 0;\r\n\r\n constructor(private modalCrtl: ModalController, private service: BankService, private toastCtrl: ToastController,\r\n private fb: FormBuilder, private loadingCtrl: LoadingController) {\r\n this.form = this.fb.group({\r\n nameBank: [\"PIX\", Validators.compose([\r\n Validators.required\r\n ])],\r\n favored: ['', Validators.compose([\r\n Validators.minLength(10),\r\n Validators.maxLength(100),\r\n Validators.required\r\n ])],\r\n agency: ['', Validators.compose([\r\n ])],\r\n account: ['', Validators.compose([\r\n ])],\r\n document: ['', Validators.compose([\r\n Validators.required\r\n ])],\r\n bond: [0, Validators.compose([\r\n Validators.required\r\n ])],\r\n keyPix: [''],\r\n typeKeyPix:[0]\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.loadBond();\r\n this.loadBanks();\r\n }\r\n\r\n async loadBanks() {\r\n //this.bond = Security.getCoin();\r\n\r\n const loading = await this.loadingCtrl.create({ message: 'Carregando...' });\r\n loading.present();\r\n\r\n this.service.getBankThatWeWorkByCoin(this.bond).subscribe(result => {\r\n\r\n if (result.success) {\r\n this.banks = result.data;\r\n loading.dismiss();\r\n }\r\n });\r\n }\r\n\r\n async changeType(event){\r\n this.typeKey = event;\r\n this.form.patchValue({\r\n typeKeyPix: event,\r\n keyPix: \"\",\r\n });\r\n }\r\n\r\n\r\n loadBond(){\r\n const coin = Security.getCoin();\r\n if (coin === '1') {\r\n this.bond = 1;\r\n }\r\n\r\n if (coin === '2') {\r\n this.bond = 2;\r\n }\r\n\r\n if (coin === '3') {\r\n this.bond = 3;\r\n }\r\n }\r\n\r\n async save() {\r\n const loading = await this.loadingCtrl.create({ message: 'Salvando...' });\r\n loading.present();\r\n\r\n this.form.patchValue({\r\n bond: this.bond,\r\n });\r\n\r\n\r\n this.service.createBank(this.form.value).subscribe(result => {\r\n if (result.success) {\r\n loading.dismiss();\r\n this.close();\r\n this.showMessage(result.message);\r\n }\r\n this.showMessage(result.message);\r\n loading.dismiss();\r\n }, error => {\r\n this.showMessage(error.message);\r\n });\r\n }\r\n\r\n async showMessage(messagen) {\r\n const error = await this.toastCtrl.create({ message: messagen, duration: 3000 });\r\n error.present();\r\n }\r\n\r\n\r\n close() {\r\n this.modalCrtl.dismiss();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { BrMaskerModule } from 'br-mask';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { MenuComponent } from './menu/menu.component';\r\nimport { HeadbarComponent } from './headbar/headbar.component';\r\nimport { WalletCardComponent } from './wallet/wallet-card/wallet-card.component';\r\nimport { TransactionsComponent } from './extracts/transactions/transactions.component';\r\nimport { LoadingComponent } from './loading/loading.component';\r\nimport { LoadingSmallComponent } from './loading-small/loading-small.component';\r\nimport { ModalSettingsComponent } from './modals/modal-settings/modal-settings.component';\r\nimport { ModalChangePasswordComponent } from './modals/modal-change-password/modal-change-password.component';\r\nimport { WalletMenuComponent } from './wallet/wallet-menu/wallet-menu.component';\r\nimport { ModalHelpDepositComponent } from './modals/modal-help-deposit/modal-help-deposit.component';\r\nimport { WithdrawByTransferComponent } from './withdraw/withdraw-by-transfer/withdraw-by-transfer.component';\r\nimport { WithdrawByDeliveryComponent } from './withdraw/withdraw-by-delivery/withdraw-by-delivery.component';\r\nimport { ExchangeRsComponent } from './exchange/exchange-rs/exchange-rs.component';\r\nimport { ExchangeBsComponent } from './exchange/exchange-bs/exchange-bs.component';\r\nimport { ExchangeUsComponent } from './exchange/exchange-us/exchange-us.component';\r\nimport { AllTransactionsComponent } from './extracts/all-transactions/all-transactions.component';\r\nimport { BankAccountComponent } from './bank/bank-account/bank-account.component';\r\nimport { FormDebugComponent } from './form-debug/form-debug.component';\r\nimport { ModalQrCodeComponent } from './modals/modal-qr-code/modal-qr-code.component';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n FormDebugComponent,\r\n MenuComponent,\r\n HeadbarComponent,\r\n WalletCardComponent,\r\n WalletMenuComponent,\r\n TransactionsComponent,\r\n AllTransactionsComponent,\r\n LoadingComponent,\r\n LoadingSmallComponent,\r\n ModalSettingsComponent,\r\n ModalChangePasswordComponent,\r\n ModalHelpDepositComponent,\r\n ModalQrCodeComponent,\r\n\r\n WithdrawByTransferComponent,\r\n WithdrawByDeliveryComponent,\r\n\r\n ExchangeRsComponent,\r\n ExchangeBsComponent,\r\n ExchangeUsComponent,\r\n\r\n BankAccountComponent\r\n\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n BrMaskerModule,\r\n TranslateModule\r\n ],\r\n exports: [\r\n FormDebugComponent,\r\n MenuComponent,\r\n HeadbarComponent,\r\n WalletCardComponent,\r\n WalletMenuComponent,\r\n TransactionsComponent,\r\n AllTransactionsComponent,\r\n LoadingComponent,\r\n LoadingSmallComponent,\r\n ModalSettingsComponent,\r\n ModalChangePasswordComponent,\r\n ModalHelpDepositComponent,\r\n ModalQrCodeComponent,\r\n\r\n WithdrawByTransferComponent,\r\n WithdrawByDeliveryComponent,\r\n\r\n ExchangeRsComponent,\r\n ExchangeBsComponent,\r\n ExchangeUsComponent,\r\n\r\n BankAccountComponent\r\n\r\n ]\r\n})\r\nexport class ComponentsModule { }\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { LoadingController, NavController, ToastController } from '@ionic/angular';\r\nimport { ClientService } from 'src/app/services/client.service';\r\nimport { OrderService } from 'src/app/services/order.service';\r\nimport { SystemService } from 'src/app/services/system.service';\r\n\r\n@Component({\r\n selector: 'app-exchange-bs',\r\n templateUrl: './exchange-bs.component.html',\r\n styleUrls: ['./exchange-bs.component.scss'],\r\n})\r\nexport class ExchangeBsComponent implements OnInit {\r\n\r\n form: FormGroup;\r\n valueBalanceReal = 0.00;\r\n valueBalanceBs = 0.00;\r\n valueBalanceDolar = 0.00;\r\n\r\n valueBsDay = 0.00;\r\n valueUsDay = 0.00;\r\n feeExchangeRs = 0.00;\r\n feeExchangeUs = 0.00;\r\n\r\n customerValue = 0.00;\r\n customerFee = 0.00;\r\n\r\n targetCoin = 1;\r\n amount;\r\n taxIdentification;\r\n document;\r\n result: any;\r\n\r\n constructor(private fb: FormBuilder, private toastCtrl: ToastController, private loadingCtrl: LoadingController,\r\n private systemSerevice: SystemService, private clientService: ClientService,\r\n private orderService: OrderService, private navCtrl: NavController) {\r\n this.form = this.fb.group({\r\n value: ['', Validators.compose([\r\n Validators.required,\r\n ])],\r\n taxIdentification: ['', Validators.compose([\r\n Validators.required,\r\n Validators.min(10)\r\n ])],\r\n document: ['', Validators.compose([\r\n Validators.required,\r\n Validators.min(5)\r\n ])],\r\n });\r\n }\r\n\r\n async ngOnInit() {\r\n const loading = await this.loadingCtrl.create({ message: 'Carregando...' });\r\n loading.present();\r\n\r\n //Carrega o saldo da carteira\r\n this.loadBalanceRs();\r\n this.loadBalanceBs();\r\n this.loadBalanceUs();\r\n\r\n //Carregar dados para cambio de bs a Rs\r\n this.loadValueBsRs();\r\n this.loadFeeExchangeBsRs();\r\n\r\n //Carregar dados para cambio de reais a dolar\r\n this.loadValueBsUs();\r\n this.loadFeeExchangeBsUs();\r\n\r\n loading.dismiss();\r\n\r\n }\r\n\r\n changeTargetCoin(value) {\r\n this.targetCoin = value;\r\n\r\n this.calcExchage(this.amount);\r\n }\r\n\r\n loadBalanceRs() {\r\n this.clientService.getBalanceReal().subscribe(result => {\r\n this.valueBalanceReal = result.data.toFixed(2);\r\n });\r\n }\r\n\r\n loadBalanceBs() {\r\n this.clientService.getBalanceBs().subscribe(result => {\r\n this.valueBalanceBs = result.data.toFixed(2);\r\n });\r\n }\r\n\r\n loadBalanceUs() {\r\n this.clientService.getBalanceDolar().subscribe(result => {\r\n this.valueBalanceDolar = result.data.toFixed(2);\r\n });\r\n }\r\n\r\n loadValueBsRs() {\r\n this.systemSerevice.getValueBsReal().subscribe(result => {\r\n this.valueBsDay = result.data;\r\n });\r\n }\r\n\r\n loadFeeExchangeBsRs() {\r\n this.systemSerevice.getFeeEchangeBsReal().subscribe(result => {\r\n this.feeExchangeRs = result.data;\r\n });\r\n }\r\n\r\n loadValueBsUs() {\r\n this.systemSerevice.getValueBsDolar().subscribe(result => {\r\n this.valueUsDay = result.data;\r\n });\r\n }\r\n loadFeeExchangeBsUs() {\r\n this.systemSerevice.getFeeEchangeBsDolar().subscribe(result => {\r\n this.feeExchangeUs = result.data;\r\n });\r\n }\r\n\r\n addTaxIdentification(value){\r\n this.form.patchValue({\r\n taxIdentification: value,\r\n });\r\n }\r\n\r\n addDocument(value){\r\n this.form.patchValue({\r\n document: value,\r\n });\r\n }\r\n\r\n calcExchage(total: string) {\r\n // Remove caracteres não numéricos, exceto ponto decimal\r\n const numericValue = parseFloat(total.replace(/[^\\d.,-]/g, '').replace(',', '.'));\r\n\r\n if (isNaN(numericValue) || numericValue <= 0) {\r\n // Valor inválido, limpa o resultado e retorna\r\n this.result = '';\r\n return;\r\n }\r\n\r\n this.amount = numericValue.toFixed(2);\r\n this.form.patchValue({\r\n value: total,\r\n });\r\n\r\n if (this.amount > this.valueBalanceBs) {\r\n // Valor maior que o saldo disponível\r\n this.result = 'Insufficient balance';\r\n this.amount = '';\r\n return;\r\n }\r\n\r\n if (this.amount > 0 && this.valueBalanceBs >= this.amount) {\r\n if (this.targetCoin === 1) {\r\n this.customerFee = this.amount * this.feeExchangeRs;\r\n this.customerValue = (this.amount / this.valueBsDay) - this.customerFee;\r\n this.result = this.customerValue.toFixed(2);\r\n } else {\r\n this.customerFee = this.amount * this.feeExchangeUs;\r\n this.customerValue = (this.amount / this.valueUsDay) - this.customerFee;\r\n this.result = this.customerValue.toFixed(2);\r\n }\r\n }\r\n }\r\n\r\n\r\n use25() {\r\n const exchange = (this.valueBalanceBs * 0.25);\r\n this.form.patchValue({\r\n value: exchange,\r\n });\r\n\r\n this.amount = exchange;\r\n\r\n if (this.targetCoin === 1) {\r\n this.customerFee = exchange * this.feeExchangeRs;\r\n this.customerValue = (exchange / this.valueBsDay) - this.customerFee;\r\n this.result = this.customerValue;\r\n }\r\n\r\n if (this.targetCoin === 3) {\r\n this.customerFee = exchange * this.feeExchangeUs;\r\n this.customerValue = (exchange / this.valueUsDay) - this.customerFee;\r\n this.result = this.customerValue;\r\n }\r\n\r\n }\r\n\r\n use50() {\r\n const exchange = (this.valueBalanceBs * 0.50);\r\n this.form.patchValue({\r\n value: exchange,\r\n });\r\n\r\n this.amount = exchange;\r\n\r\n if (this.targetCoin === 1) {\r\n this.customerFee = exchange * this.feeExchangeRs;\r\n this.customerValue = (exchange / this.valueBsDay) - this.customerFee;\r\n this.result = this.customerValue;\r\n }\r\n\r\n if (this.targetCoin === 3) {\r\n this.customerFee = exchange * this.feeExchangeUs;\r\n this.customerValue = (exchange / this.valueUsDay) - this.customerFee;\r\n this.result = this.customerValue;\r\n }\r\n }\r\n\r\n use75() {\r\n const exchange = (this.valueBalanceBs * 0.75);\r\n this.form.patchValue({\r\n value: exchange,\r\n });\r\n\r\n this.amount = exchange;\r\n\r\n if (this.targetCoin === 1) {\r\n this.customerFee = exchange * this.feeExchangeRs;\r\n this.customerValue = (exchange / this.valueBsDay) - this.customerFee;\r\n this.result = this.customerValue;\r\n }\r\n\r\n if (this.targetCoin === 3) {\r\n this.customerFee = exchange * this.feeExchangeUs;\r\n this.customerValue = (exchange / this.valueUsDay) - this.customerFee;\r\n this.result = this.customerValue;\r\n }\r\n }\r\n\r\n use100() {\r\n const exchange = (this.valueBalanceBs * 1);\r\n this.form.patchValue({\r\n value: exchange,\r\n });\r\n\r\n this.amount = exchange;\r\n\r\n if (this.targetCoin === 1) {\r\n this.customerFee = exchange * this.feeExchangeRs;\r\n this.customerValue = (exchange / this.valueBsDay) - this.customerFee;\r\n this.result = this.customerValue;\r\n }\r\n\r\n if (this.targetCoin === 3) {\r\n this.customerFee = exchange * this.feeExchangeUs;\r\n this.customerValue = (exchange / this.valueUsDay) - this.customerFee;\r\n this.result = this.customerValue;\r\n }\r\n }\r\n\r\n async exchangeOrder() {\r\n const loading = await this.loadingCtrl.create({ message: 'Processando...' });\r\n loading.present();\r\n\r\n if (this.calcExchange(this.amount)) {\r\n\r\n if (this.targetCoin === 1) {\r\n this.orderService.exchangeBsByReal(this.form.value).subscribe(result => {\r\n if (result.success) {\r\n loading.dismiss();\r\n this.showMessage(result.message);\r\n this.goToPage('/master/wallet/home');\r\n } else {\r\n loading.dismiss();\r\n this.showMessage(result.message);\r\n }\r\n }, error => {\r\n loading.dismiss();\r\n this.showMessage(error.message);\r\n });\r\n }\r\n\r\n if (this.targetCoin === 3) {\r\n this.orderService.exchangeBsByDolar(this.form.value).subscribe(result => {\r\n if (result.success) {\r\n loading.dismiss();\r\n this.showMessage(result.message);\r\n this.goToPage('/master/wallet/home');\r\n } else {\r\n loading.dismiss();\r\n this.showMessage(result.message);\r\n }\r\n }, error => {\r\n loading.dismiss();\r\n this.showMessage(error.message);\r\n });\r\n }\r\n } else {\r\n loading.dismiss();\r\n this.showMessage('Opz... Parece que não ha saldo suficiente!');\r\n }\r\n }\r\n\r\n calcExchange(value): boolean {\r\n if (this.valueBalanceBs >= value) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n\r\n async showMessage(messagen) {\r\n const error = await this.toastCtrl.create({ message: messagen, duration: 3000 });\r\n error.present();\r\n }\r\n\r\n goToPage(page: string) {\r\n this.navCtrl.navigateRoot(page);\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { LoadingController, NavController, ToastController } from '@ionic/angular';\r\nimport { ClientService } from 'src/app/services/client.service';\r\nimport { OrderService } from 'src/app/services/order.service';\r\nimport { SystemService } from 'src/app/services/system.service';\r\n\r\n@Component({\r\n selector: 'app-exchange-rs',\r\n templateUrl: './exchange-rs.component.html',\r\n styleUrls: ['./exchange-rs.component.scss'],\r\n})\r\nexport class ExchangeRsComponent implements OnInit {\r\n\r\n form: FormGroup;\r\n valueBalanceReal = 0.00;\r\n valueBalanceBs = 0.00;\r\n valueBalanceDolar = 0.00;\r\n\r\n valueBsDay = 0.00;\r\n valueUsDay = 0.00;\r\n feeExchangeBs = 0.00;\r\n feeExchangeUs = 0.00;\r\n\r\n customerValue = 0.00;\r\n customerFee = 0.00;\r\n\r\n targetCoin = 2;\r\n amount;\r\n result: any;\r\n\r\n constructor(private fb: FormBuilder, private toastCtrl: ToastController, private loadingCtrl: LoadingController,\r\n private systemSerevice: SystemService, private clientService: ClientService,\r\n private orderService: OrderService, private navCtrl: NavController) {\r\n this.form = this.fb.group({\r\n value: ['', Validators.compose([\r\n Validators.required,\r\n ])],\r\n });\r\n }\r\n\r\n async ngOnInit() {\r\n const loading = await this.loadingCtrl.create({ message: 'Carregando...' });\r\n loading.present();\r\n\r\n //Carrega o saldo da carteira\r\n this.loadBalanceRs();\r\n this.loadBalanceBs();\r\n this.loadBalanceUs();\r\n\r\n //Carregar dados para cambio de reais a bs\r\n this.loadValueRsBs();\r\n this.loadFeeExchangeRSBs();\r\n\r\n //Carregar dados para cambio de reais a dolar\r\n this.loadValueRsUs();\r\n this.loadFeeExchangeRsUs();\r\n\r\n loading.dismiss();\r\n\r\n }\r\n\r\n changeTargetCoin(value) {\r\n this.targetCoin = value;\r\n\r\n this.calcExchage(this.amount);\r\n }\r\n\r\n loadBalanceRs() {\r\n this.clientService.getBalanceReal().subscribe(result => {\r\n this.valueBalanceReal = result.data.toFixed(2);\r\n });\r\n }\r\n\r\n loadBalanceBs() {\r\n this.clientService.getBalanceBs().subscribe(result => {\r\n this.valueBalanceBs = result.data.toFixed(2);\r\n });\r\n }\r\n\r\n loadBalanceUs() {\r\n this.clientService.getBalanceDolar().subscribe(result => {\r\n this.valueBalanceDolar = result.data.toFixed(2);\r\n });\r\n }\r\n\r\n loadValueRsBs() {\r\n this.systemSerevice.getValueRealBs().subscribe(result => {\r\n this.valueBsDay = result.data.toFixed(2);\r\n });\r\n }\r\n\r\n loadFeeExchangeRSBs() {\r\n this.systemSerevice.getFeeEchangeRealBs().subscribe(result => {\r\n this.feeExchangeBs = result.data;\r\n });\r\n }\r\n\r\n loadValueRsUs() {\r\n this.systemSerevice.getValueRealDolar().subscribe(result => {\r\n this.valueUsDay = result.data.toFixed(2);\r\n });\r\n }\r\n loadFeeExchangeRsUs() {\r\n this.systemSerevice.getFeeEchangeRealDolar().subscribe(result => {\r\n this.feeExchangeUs = result.data;\r\n });\r\n }\r\n\r\n calcExchage(total: string) {\r\n // Remove caracteres não numéricos, exceto ponto decimal\r\n const numericValue = parseFloat(total.replace(/[^\\d.,-]/g, '').replace(',', '.'));\r\n\r\n if (isNaN(numericValue) || numericValue <= 0) {\r\n // Valor inválido, limpa o resultado e retorna\r\n this.result = '';\r\n return;\r\n }\r\n\r\n this.amount = numericValue;\r\n this.form.patchValue({\r\n value: total,\r\n });\r\n\r\n // console.log(this.form.value);\r\n\r\n if (this.amount > this.valueBalanceReal) {\r\n // Valor maior que o saldo disponível\r\n this.result = 'Insufficient balance';\r\n this.amount = '';\r\n return;\r\n }\r\n\r\n if (this.amount > 0 && this.amount <= this.valueBalanceReal) {\r\n if (this.targetCoin === 2) {\r\n this.customerFee = this.amount * this.feeExchangeBs;\r\n this.customerValue = (this.amount - this.customerFee) * this.valueBsDay;\r\n this.result = this.customerValue.toFixed(2); // Mostra sempre com duas casas decimais\r\n } else {\r\n this.customerFee = this.amount * this.feeExchangeUs;\r\n this.customerValue = (this.amount / this.valueUsDay) + this.customerFee;\r\n this.result = this.customerValue.toFixed(2); // Mostra sempre com duas casas decimais\r\n }\r\n }\r\n }\r\n\r\n use25() {\r\n const exchange = (this.valueBalanceReal * 0.25);\r\n this.form.patchValue({\r\n value: exchange,\r\n });\r\n\r\n this.amount = exchange;\r\n\r\n if (this.targetCoin === 2) {\r\n this.customerFee = exchange * this.feeExchangeBs;\r\n this.customerValue = (exchange - this.customerFee) * this.valueBsDay;\r\n this.result = this.customerValue;\r\n }\r\n\r\n if (this.targetCoin === 3) {\r\n this.customerFee = exchange * this.feeExchangeUs;\r\n this.customerValue = (exchange / this.valueUsDay) - this.customerFee;\r\n this.result = this.customerValue;\r\n }\r\n\r\n }\r\n\r\n use50() {\r\n const exchange = (this.valueBalanceReal * 0.50);\r\n this.form.patchValue({\r\n value: exchange,\r\n });\r\n\r\n this.amount = exchange;\r\n\r\n if (this.targetCoin === 2) {\r\n this.customerFee = exchange * this.feeExchangeBs;\r\n this.customerValue = (exchange - this.customerFee) * this.valueBsDay;\r\n this.result = this.customerValue;\r\n }\r\n\r\n if (this.targetCoin === 3) {\r\n this.customerFee = exchange * this.feeExchangeUs;\r\n this.customerValue = (exchange / this.valueUsDay) - this.customerFee;\r\n this.result = this.customerValue;\r\n }\r\n }\r\n\r\n use75() {\r\n const exchange = (this.valueBalanceReal * 0.75);\r\n this.form.patchValue({\r\n value: exchange,\r\n });\r\n\r\n this.amount = exchange;\r\n\r\n if (this.targetCoin === 2) {\r\n this.customerFee = exchange * this.feeExchangeBs;\r\n this.customerValue = (exchange - this.customerFee) * this.valueBsDay;\r\n this.result = this.customerValue;\r\n }\r\n\r\n if (this.targetCoin === 3) {\r\n this.customerFee = exchange * this.feeExchangeUs;\r\n this.customerValue = (exchange / this.valueUsDay) - this.customerFee;\r\n this.result = this.customerValue;\r\n }\r\n }\r\n\r\n use100() {\r\n const exchange = (this.valueBalanceReal * 1);\r\n this.form.patchValue({\r\n value: exchange,\r\n });\r\n\r\n this.amount = exchange;\r\n\r\n if (this.targetCoin === 2) {\r\n this.customerFee = exchange * this.feeExchangeBs;\r\n this.customerValue = (exchange - this.customerFee) * this.valueBsDay;\r\n this.result = this.customerValue;\r\n }\r\n\r\n if (this.targetCoin === 3) {\r\n this.customerFee = exchange * this.feeExchangeUs;\r\n this.customerValue = (exchange / this.valueUsDay) - this.customerFee;\r\n this.result = this.customerValue;\r\n }\r\n }\r\n\r\n async exchangeOrder() {\r\n const loading = await this.loadingCtrl.create({ message: 'Processando...' });\r\n loading.present();\r\n\r\n if (this.calcExchange(this.amount)) {\r\n\r\n if (this.targetCoin === 2) {\r\n this.orderService.exchangeRealByBs(this.form.value).subscribe(result => {\r\n if (result.success) {\r\n loading.dismiss();\r\n this.showMessage(result.message);\r\n this.goToPage('/master/wallet/home');\r\n } else {\r\n loading.dismiss();\r\n this.showMessage(result.message);\r\n }\r\n }, error => {\r\n loading.dismiss();\r\n this.showMessage(error.message);\r\n });\r\n }\r\n\r\n if (this.targetCoin === 3) {\r\n this.orderService.exchangeRealByDolar(this.form.value).subscribe(result => {\r\n if (result.success) {\r\n loading.dismiss();\r\n this.showMessage(result.message);\r\n this.goToPage('/master/wallet/home');\r\n } else {\r\n loading.dismiss();\r\n this.showMessage(result.message);\r\n }\r\n }, error => {\r\n loading.dismiss();\r\n this.showMessage(error.message);\r\n });\r\n }\r\n } else {\r\n loading.dismiss();\r\n this.showMessage('Opz... Parece que não ha saldo suficiente!');\r\n }\r\n }\r\n\r\n calcExchange(value): boolean {\r\n if (this.valueBalanceReal >= value) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n\r\n async showMessage(messagen) {\r\n const error = await this.toastCtrl.create({ message: messagen, duration: 3000 });\r\n error.present();\r\n }\r\n\r\n goToPage(page: string) {\r\n this.navCtrl.navigateRoot(page);\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { LoadingController, NavController, ToastController } from '@ionic/angular';\r\nimport { ClientService } from 'src/app/services/client.service';\r\nimport { OrderService } from 'src/app/services/order.service';\r\nimport { SystemService } from 'src/app/services/system.service';\r\n\r\n@Component({\r\n selector: 'app-exchange-us',\r\n templateUrl: './exchange-us.component.html',\r\n styleUrls: ['./exchange-us.component.scss'],\r\n})\r\nexport class ExchangeUsComponent implements OnInit {\r\n\r\n form: FormGroup;\r\n valueBalanceReal = 0.00;\r\n valueBalanceBs = 0.00;\r\n valueBalanceDolar = 0.00;\r\n\r\n valueBsDay = 0.00;\r\n valueRsDay = 0.00;\r\n feeExchangeRs = 0.00;\r\n feeExchangeBs = 0.00;\r\n\r\n customerValue = 0.00;\r\n customerFee = 0.00;\r\n\r\n targetCoin = 1;\r\n amount;\r\n taxIdentification;\r\n document;\r\n result: any;\r\n\r\n constructor(private fb: FormBuilder, private toastCtrl: ToastController, private loadingCtrl: LoadingController,\r\n private systemSerevice: SystemService, private clientService: ClientService,\r\n private orderService: OrderService, private navCtrl: NavController) {\r\n this.form = this.fb.group({\r\n value: ['', Validators.compose([\r\n Validators.required,\r\n ])],\r\n taxIdentification: ['', Validators.compose([\r\n Validators.required,\r\n Validators.min(10)\r\n ])],\r\n document: ['', Validators.compose([\r\n Validators.required,\r\n Validators.min(5)\r\n ])],\r\n });\r\n }\r\n\r\n async ngOnInit() {\r\n const loading = await this.loadingCtrl.create({ message: 'Carregando...' });\r\n loading.present();\r\n\r\n //Carrega o saldo da carteira\r\n this.loadBalanceRs();\r\n this.loadBalanceBs();\r\n this.loadBalanceUs();\r\n\r\n //Carregar dados para cambio de ys a Rs\r\n this.loadValueUsRs();\r\n this.loadFeeExchangeUsRs();\r\n\r\n //Carregar dados para cambio de us a bs\r\n this.loadValueUsBs();\r\n this.loadFeeExchangeUsBs();\r\n\r\n loading.dismiss();\r\n\r\n }\r\n\r\n changeTargetCoin(value) {\r\n this.targetCoin = value;\r\n\r\n this.calcExchage(this.amount);\r\n }\r\n\r\n loadBalanceRs() {\r\n this.clientService.getBalanceReal().subscribe(result => {\r\n this.valueBalanceReal = result.data.toFixed(2);\r\n });\r\n }\r\n\r\n loadBalanceBs() {\r\n this.clientService.getBalanceBs().subscribe(result => {\r\n this.valueBalanceBs = result.data.toFixed(2);\r\n });\r\n }\r\n\r\n loadBalanceUs() {\r\n this.clientService.getBalanceDolar().subscribe(result => {\r\n this.valueBalanceDolar = result.data.toFixed(2);\r\n });\r\n }\r\n\r\n loadValueUsRs() {\r\n this.systemSerevice.getValueDolarReal().subscribe(result => {\r\n this.valueRsDay = result.data.toFixed(3);\r\n });\r\n }\r\n\r\n loadFeeExchangeUsRs() {\r\n this.systemSerevice.getFeeEchangeDolarReal().subscribe(result => {\r\n this.feeExchangeRs = result.data;\r\n });\r\n }\r\n\r\n loadValueUsBs() {\r\n this.systemSerevice.getValueDolarBs().subscribe(result => {\r\n this.valueBsDay = result.data;\r\n });\r\n }\r\n loadFeeExchangeUsBs() {\r\n this.systemSerevice.getFeeEchangeDolarBs().subscribe(result => {\r\n this.feeExchangeBs = result.data;\r\n });\r\n }\r\n\r\n addTaxIdentification(value){\r\n this.form.patchValue({\r\n taxIdentification: value,\r\n });\r\n }\r\n\r\n addDocument(value){\r\n this.form.patchValue({\r\n document: value,\r\n });\r\n }\r\n\r\n calcExchage(total: string) {\r\n // Remove caracteres não numéricos, exceto ponto decimal\r\n const numericValue = parseFloat(total.replace(/[^\\d.,-]/g, '').replace(',', '.'));\r\n\r\n if (isNaN(numericValue) || numericValue <= 0) {\r\n // Valor inválido, limpa o resultado e retorna\r\n this.result = '';\r\n return;\r\n }\r\n\r\n this.amount = numericValue.toFixed(2);\r\n this.form.patchValue({\r\n value: total,\r\n });\r\n\r\n if (this.amount > this.valueBalanceReal) {\r\n // Valor maior que o saldo disponível\r\n this.result = 'Insufficient balance';\r\n this.amount = '';\r\n return;\r\n }\r\n\r\n if (this.amount > 0 && this.amount <= this.valueBalanceDolar) {\r\n\r\n if (this.targetCoin === 1) {\r\n this.customerFee = this.amount * this.feeExchangeRs;\r\n this.customerValue = (this.amount - this.customerFee) * this.valueRsDay ;\r\n this.result = this.customerValue.toFixed(2);\r\n } else {\r\n this.customerFee = this.amount * this.feeExchangeBs;\r\n this.customerValue = (this.amount - this.customerFee ) * this.valueBsDay ;\r\n this.result = this.customerValue.toFixed(2);\r\n }\r\n }\r\n }\r\n\r\n\r\n use25() {\r\n const exchange = (this.valueBalanceDolar * 0.25);\r\n this.form.patchValue({\r\n value: exchange,\r\n });\r\n\r\n this.amount = exchange;\r\n\r\n if (this.targetCoin === 1) {\r\n this.customerFee = exchange * this.feeExchangeRs;\r\n this.customerValue = (exchange - this.customerFee) * this.valueRsDay ;\r\n this.result = this.customerValue;\r\n }\r\n\r\n if (this.targetCoin === 2) {\r\n this.customerFee = exchange * this.feeExchangeBs;\r\n this.customerValue = (exchange - this.customerFee) * this.valueBsDay;\r\n this.result = this.customerValue;\r\n }\r\n\r\n }\r\n\r\n use50() {\r\n const exchange = (this.valueBalanceDolar * 0.50);\r\n this.form.patchValue({\r\n value: exchange,\r\n });\r\n\r\n this.amount = exchange;\r\n\r\n if (this.targetCoin === 1) {\r\n this.customerFee = exchange * this.feeExchangeRs;\r\n this.customerValue = (exchange - this.customerFee) * this.valueRsDay ;\r\n this.result = this.customerValue;\r\n }\r\n\r\n if (this.targetCoin === 2) {\r\n this.customerFee = exchange * this.feeExchangeBs;\r\n this.customerValue = (exchange - this.customerFee) * this.valueBsDay;\r\n this.result = this.customerValue;\r\n }\r\n }\r\n\r\n use75() {\r\n const exchange = (this.valueBalanceDolar * 0.75);\r\n this.form.patchValue({\r\n value: exchange,\r\n });\r\n\r\n this.amount = exchange;\r\n\r\n if (this.targetCoin === 1) {\r\n this.customerFee = exchange * this.feeExchangeRs;\r\n this.customerValue = (exchange - this.customerFee) * this.valueRsDay ;\r\n this.result = this.customerValue;\r\n }\r\n\r\n if (this.targetCoin === 2) {\r\n this.customerFee = exchange * this.feeExchangeBs;\r\n this.customerValue = (exchange - this.customerFee) * this.valueBsDay;\r\n this.result = this.customerValue;\r\n }\r\n }\r\n\r\n use100() {\r\n const exchange = (this.valueBalanceDolar * 1);\r\n this.form.patchValue({\r\n value: exchange,\r\n });\r\n\r\n this.amount = exchange;\r\n\r\n if (this.targetCoin === 1) {\r\n this.customerFee = exchange * this.feeExchangeRs;\r\n this.customerValue = (exchange - this.customerFee) * this.valueRsDay ;\r\n this.result = this.customerValue;\r\n }\r\n\r\n if (this.targetCoin === 2) {\r\n this.customerFee = exchange * this.feeExchangeBs;\r\n this.customerValue = (exchange - this.customerFee) * this.valueBsDay;\r\n this.result = this.customerValue;\r\n }\r\n }\r\n\r\n async exchangeOrder() {\r\n const loading = await this.loadingCtrl.create({ message: 'Processando...' });\r\n loading.present();\r\n\r\n if (this.calcExchange(this.amount)) {\r\n\r\n if (this.targetCoin === 1) {\r\n this.orderService.exchangeDolaByReal(this.form.value).subscribe(result => {\r\n if (result.success) {\r\n loading.dismiss();\r\n this.showMessage(result.message);\r\n this.goToPage('/master/wallet/home');\r\n } else {\r\n loading.dismiss();\r\n this.showMessage(result.message);\r\n }\r\n }, error => {\r\n loading.dismiss();\r\n this.showMessage(error.message);\r\n });\r\n }\r\n if (this.targetCoin === 2) {\r\n this.orderService.exchangeDolarByBs(this.form.value).subscribe(result => {\r\n if (result.success) {\r\n loading.dismiss();\r\n this.showMessage(result.message);\r\n this.goToPage('/master/wallet/home');\r\n } else {\r\n loading.dismiss();\r\n this.showMessage(result.message);\r\n }\r\n }, error => {\r\n loading.dismiss();\r\n this.showMessage(error.message);\r\n });\r\n }\r\n } else {\r\n loading.dismiss();\r\n this.showMessage('Opz... Parece que não ha saldo suficiente!');\r\n }\r\n }\r\n\r\n calcExchange(value): boolean {\r\n if (this.valueBalanceDolar >= value) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n\r\n async showMessage(messagen) {\r\n const error = await this.toastCtrl.create({ message: messagen, duration: 3000 });\r\n error.present();\r\n }\r\n\r\n goToPage(page: string) {\r\n this.navCtrl.navigateRoot(page);\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { LoadingController, NavController } from '@ionic/angular';\r\nimport { ClientService } from 'src/app/services/client.service';\r\nimport { Security } from 'src/app/utils/security.util';\r\n\r\n@Component({\r\n selector: 'all-transactions',\r\n templateUrl: './all-transactions.component.html',\r\n styleUrls: ['./all-transactions.component.scss'],\r\n})\r\nexport class AllTransactionsComponent implements OnInit, OnDestroy {\r\n orders: any[];\r\n document = '';\r\n interval: any;\r\n page = 0;\r\n\r\n constructor(private clientService: ClientService, private navCtrl: NavController, private loadingCtrl: LoadingController) { }\r\n\r\n async ngOnInit() {\r\n const loading = await this.loadingCtrl.create({ message: 'Carregando...' });\r\n loading.present();\r\n\r\n this.getTransactions();\r\n this.document = Security.getDocument();\r\n\r\n this.startGetByMinute();\r\n\r\n loading.dismiss();\r\n }\r\n\r\n async getTransactions() {\r\n this.clientService.getAllTransactions(this.page).subscribe(result => {\r\n if (result.success) {\r\n this.orders = result.data.orders;\r\n }\r\n });\r\n }\r\n loadData(event) {\r\n this.page++;\r\n this.clientService.getAllTransactions(this.page).subscribe(result => {\r\n if (result.success) {\r\n\r\n if (result.data.numberOfPage === this.page) {\r\n event.target.disabled = true;\r\n event.target.complete();\r\n return;\r\n }\r\n const newData = result.data.orders;\r\n this.orders.push(...newData);\r\n }\r\n event.target.complete();\r\n });\r\n }\r\n\r\n goToPage(page: any) {\r\n const uri = '/master/wallet/extract/details/'; \r\n this.navCtrl.navigateForward( uri + page);\r\n }\r\n\r\n async startGetByMinute() {\r\n this.interval = setInterval(async () => {\r\n await this.getTransactions();\r\n }, 60000);\r\n }\r\n\r\n ngOnDestroy() {\r\n clearInterval(this.interval);\r\n }\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { NavController } from '@ionic/angular';\r\nimport { ClientService } from 'src/app/services/client.service';\r\nimport { Security } from 'src/app/utils/security.util';\r\n\r\n@Component({\r\n selector: 'app-transactions',\r\n templateUrl: './transactions.component.html',\r\n styleUrls: ['./transactions.component.scss'],\r\n})\r\nexport class TransactionsComponent implements OnInit {\r\n\r\n orders: any[];\r\n document = '';\r\n interval: any;\r\n\r\n constructor(private clientService: ClientService, private navCtrl: NavController) { }\r\n\r\n ngOnInit() {\r\n this.getTransactions();\r\n this.document = Security.getDocument();\r\n\r\n this.startGetByMinute();\r\n }\r\n\r\n async getTransactions() {\r\n this.clientService.getLatestTransactions().subscribe(result => {\r\n if (result.success) {\r\n this.orders = result.data;\r\n }\r\n });\r\n }\r\n\r\n goToPage(page: any) {\r\n const uri = '/master/wallet/extract/details/';\r\n this.navCtrl.navigateForward( uri + page);\r\n }\r\n\r\n goToAll(){\r\n this.navCtrl.navigateForward('/master/wallet/extract/transactions');\r\n }\r\n\r\n async startGetByMinute() {\r\n this.interval = setInterval(async () => {\r\n await this.getTransactions();\r\n }, 60000);\r\n }\r\n\r\n // eslint-disable-next-line @angular-eslint/use-lifecycle-interface\r\n ngOnDestroy() {\r\n clearInterval(this.interval);\r\n }\r\n\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-form-debug',\r\n templateUrl: './form-debug.component.html',\r\n styleUrls: ['./form-debug.component.scss'],\r\n})\r\nexport class FormDebugComponent implements OnInit {\r\n\r\n @Input() form;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { MenuController, ModalController, NavController } from '@ionic/angular';\r\nimport { ModalSettingsComponent } from '../modals/modal-settings/modal-settings.component';\r\n\r\n@Component({\r\n selector: 'app-headbar',\r\n templateUrl: './headbar.component.html',\r\n styleUrls: ['./headbar.component.scss'],\r\n})\r\nexport class HeadbarComponent implements OnInit {\r\n\r\n constructor(private modalCtrl: ModalController, private navCtrl: NavController) { }\r\n\r\n ngOnInit() { }\r\n\r\n async showModalSettings() {\r\n const modal = await this.modalCtrl.create({\r\n component: ModalSettingsComponent\r\n });\r\n modal.present();\r\n }\r\n\r\n goToPage(page: string) {\r\n this.navCtrl.navigateRoot(page);\r\n }\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-loading-small',\r\n templateUrl: './loading-small.component.html',\r\n styleUrls: ['./loading-small.component.scss'],\r\n})\r\nexport class LoadingSmallComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {}\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-loading',\r\n templateUrl: './loading.component.html',\r\n styleUrls: ['./loading.component.scss'],\r\n})\r\nexport class LoadingComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {}\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { MenuController, NavController } from '@ionic/angular';\r\nimport { Security } from 'src/app/utils/security.util';\r\n\r\n@Component({\r\n selector: 'app-menu',\r\n templateUrl: './menu.component.html',\r\n styleUrls: ['./menu.component.scss'],\r\n})\r\nexport class MenuComponent implements OnInit {\r\n\r\n constructor(private navCtrl: NavController, private menuCtrl: MenuController) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n goToPage(page: string) {\r\n this.menuCtrl.close('menuMain');\r\n this.navCtrl.navigateForward(page);\r\n }\r\n\r\n exit(){\r\n this.goToPage('/login');\r\n Security.clear();\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { AlertController, LoadingController, ModalController, NavController, ToastController } from '@ionic/angular';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { AccountService } from 'src/app/services/account.service';\r\nimport { Security } from 'src/app/utils/security.util';\r\n\r\n@Component({\r\n selector: 'app-modal-change-password',\r\n templateUrl: './modal-change-password.component.html',\r\n styleUrls: ['./modal-change-password.component.scss'],\r\n})\r\nexport class ModalChangePasswordComponent implements OnInit {\r\n\r\n form: FormGroup;\r\n public hide1 = true;\r\n public hide2 = true;\r\n\r\n constructor(private modalCrtl: ModalController, private fb: FormBuilder, private loadingCtrl: LoadingController, private accountService: AccountService,\r\n private toastCtrl: ToastController, private navCtrl: NavController, private alertController: AlertController) { \r\n this.form = this.fb.group({\r\n password: ['', Validators.compose([\r\n Validators.minLength(8),\r\n Validators.maxLength(20),\r\n Validators.required\r\n ])],\r\n newPassword: ['', Validators.compose([\r\n Validators.minLength(8),\r\n Validators.maxLength(20),\r\n Validators.required\r\n ])]\r\n });\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n async confirmUpdate(){\r\n const alert = await this.alertController.create({\r\n header: 'Atualizar Senha',\r\n message: `Deseja atualizar sua senha?`,\r\n buttons: [\r\n {\r\n text: 'Cancelar',\r\n role: 'cancel',\r\n },\r\n {\r\n text: 'Atualizar',\r\n handler: () => {\r\n this.update();\r\n }\r\n }\r\n ]\r\n });\r\n await alert.present();\r\n }\r\n\r\n async update(){\r\n const loading = await this.loadingCtrl.create({ message: 'Carregando...' });\r\n loading.present();\r\n\r\n this.accountService.changePassword(this.form.value).subscribe(result => {\r\n if(result.success) {\r\n loading.dismiss();\r\n this.close();\r\n this.logout();\r\n this.showMessage(result.message);\r\n } else {\r\n loading.dismiss();\r\n this.showMessage(result.message);\r\n }\r\n }, error => {\r\n loading.dismiss();\r\n this.showMessage(error.message);\r\n });\r\n }\r\n\r\n close() {\r\n this.modalCrtl.dismiss();\r\n }\r\n\r\n logout(){\r\n Security.clear();\r\n this.goToPage('/intro');\r\n }\r\n\r\n goToPage(page: string) {\r\n this.navCtrl.navigateRoot(page);\r\n }\r\n\r\n async showMessage(messagen) {\r\n const error = await this.toastCtrl.create({ message: messagen, duration: 3000 });\r\n error.present();\r\n }\r\n\r\n toggleHide1() {\r\n this.hide1 = !this.hide1;\r\n }\r\n\r\n toggleHide2() {\r\n this.hide2 = !this.hide2;\r\n }\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ModalController } from '@ionic/angular';\r\nimport { BankAccountViewModel } from 'src/app/models/bankAccountViewModel';\r\nimport { BankService } from 'src/app/services/bank.service';\r\nimport { Security } from 'src/app/utils/security.util';\r\n\r\n@Component({\r\n selector: 'app-modal-help-deposit',\r\n templateUrl: './modal-help-deposit.component.html',\r\n styleUrls: ['./modal-help-deposit.component.scss'],\r\n})\r\nexport class ModalHelpDepositComponent implements OnInit {\r\n\r\n constructor(private modalCrtl: ModalController, private bankService: BankService) { }\r\n\r\n banks: BankAccountViewModel[] = [];\r\n bank: any = 0;\r\n coin: any;\r\n\r\n ngOnInit() {\r\n this.coin = Security.getCoin();\r\n this.bankService.getByCoinSystem(this.coin).subscribe(result => {\r\n if (result.success) {\r\n this.banks = result.data;\r\n }\r\n });\r\n }\r\n\r\n close() {\r\n this.modalCrtl.dismiss();\r\n }\r\n\r\n // changeAccount(vm){\r\n // this.bank = vm;\r\n // console.log(vm);\r\n // }\r\n\r\n}\r\n","import { Component, ElementRef, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { ModalController, ToastController } from '@ionic/angular';\nimport { SystemService } from 'src/app/services/system.service';\n\n@Component({\n selector: 'app-modal-qr-code',\n templateUrl: './modal-qr-code.component.html',\n styleUrls: ['./modal-qr-code.component.scss'],\n})\nexport class ModalQrCodeComponent implements OnInit, OnDestroy {\n @Input() data: any;\n @ViewChild('conteudoInput') conteudoInput!: ElementRef;\n interval: any;\n\n constructor(private modalCrtl: ModalController, private toastCtrl: ToastController, private service: SystemService) { }\n\n ngOnInit() {\n this.startGetByMinute();\n }\n async copiarConteudo() {\n try {\n await navigator.clipboard.writeText(this.conteudoInput.nativeElement.value);\n this.atualizarBotaoCopiar();\n } catch (error) {\n console.error('Falha ao copiar: ', error);\n }\n }\n\n async atualizarBotaoCopiar() {\n const btn = document.getElementById('btnCopiar');\n this.showMessage('Codigo QR Copiado');\n if (btn) {\n btn.textContent = 'Copiado!';\n btn.style.backgroundColor = 'black';\n btn.style.color = 'white';\n setTimeout(() => {\n btn.textContent = 'Copiar Código QR';\n btn.style.backgroundColor = '#007bff';\n btn.style.color = '#fff';\n }, 3000);\n }\n }\n\n async checkPay(){\n this.service.checkPayUser(this.data.txId).subscribe(result => {\n if(result.success){\n this.showMessage(result.message);\n this.close();\n }\n });\n }\n\n async startGetByMinute() {\n this.interval = setInterval(async () => {\n await this.checkPay();\n }, 3000);\n }\n\n ngOnDestroy() {\n clearInterval(this.interval);\n }\n\n close() {\n this.modalCrtl.dismiss();\n }\n\n async showMessage(messagen) {\n const error = await this.toastCtrl.create({ message: messagen, duration: 3000 });\n error.present();\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\r\nimport { ModalController, NavController } from '@ionic/angular';\r\nimport { LanguageService } from 'src/app/services/language.service';\r\nimport { ThemeService } from 'src/app/services/theme.service';\r\nimport { Security } from 'src/app/utils/security.util';\r\nimport { ModalChangePasswordComponent } from '../modal-change-password/modal-change-password.component';\r\n\r\n@Component({\r\n selector: 'app-modal-settings',\r\n templateUrl: './modal-settings.component.html',\r\n styleUrls: ['./modal-settings.component.scss'],\r\n})\r\nexport class ModalSettingsComponent implements OnInit {\r\n\r\n darkModel;\r\n languages = [];\r\n lang;\r\n\r\n constructor(private themeService: ThemeService, private modalCrtl: ModalController, private navCtrl: NavController,\r\n private languageService: LanguageService) { }\r\n\r\n ngOnInit() {\r\n if (Security.getChangeTheme() === 'true') {\r\n this.darkModel = true;\r\n } else {\r\n this.darkModel = false;\r\n }\r\n\r\n this.lang = Security.getLanguage();\r\n\r\n this.loadLanguages();\r\n }\r\n onChangeTheme(event) {\r\n this.themeService.setAppTheme(event.target.checked);\r\n this.darkModel = event.target.checked;\r\n }\r\n\r\n async showModalChangePassword() {\r\n const modal = await this.modalCrtl.create({\r\n component: ModalChangePasswordComponent\r\n });\r\n\r\n modal.onDidDismiss().then(() => {\r\n this.close();\r\n });\r\n\r\n modal.present();\r\n }\r\n\r\n close() {\r\n this.modalCrtl.dismiss();\r\n }\r\n\r\n loadLanguages(){\r\n this.languages = this.languageService.getLanguages();\r\n }\r\n\r\n changeLanguage(event){\r\n this.lang = event;\r\n this.languageService.setLanguage(this.lang);\r\n }\r\n\r\n logout() {\r\n Security.clear();\r\n this.themeService.setAppTheme(false);\r\n this.close();\r\n this.gotToPage(\"\");\r\n }\r\n\r\n gotToPage(page: string) {\r\n this.navCtrl.navigateRoot(page);\r\n this.close();\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { ModalController, NavController } from '@ionic/angular';\r\nimport { AllBalanceUser } from 'src/app/models/allBalanceUser';\r\nimport { ClientService } from 'src/app/services/client.service';\r\nimport { WalletService } from 'src/app/services/wallet.service';\r\nimport { Security } from 'src/app/utils/security.util';\r\n\r\n@Component({\r\n selector: 'app-wallet-card',\r\n templateUrl: './wallet-card.component.html',\r\n styleUrls: ['./wallet-card.component.scss'],\r\n})\r\nexport class WalletCardComponent implements OnInit, OnDestroy {\r\n\r\n bond;\r\n balance: AllBalanceUser = new AllBalanceUser();\r\n interval: any;\r\n constructor(private clientService: ClientService, private navCtrl: NavController, private walletService: WalletService) { }\r\n\r\n ngOnInit() {\r\n if (Security.getCoin()) {\r\n this.bond = Security.getCoin();\r\n } else {\r\n this.bond = '1';\r\n Security.setCoin(1);\r\n }\r\n this.getAllBalance();\r\n\r\n this.startGetByMinute();\r\n\r\n }\r\n\r\n async getAllBalance() {\r\n this.clientService.getAllBalance().subscribe(result => {\r\n this.balance.balanceReal = result.data.balanceReal;\r\n this.balance.balanceDolar = result.data.balanceDolar;\r\n this.balance.balanceSm = result.data.balanceSM;\r\n this.balance.balanceBs = result.data.balanceBs;\r\n this.balance.inOrderDolar = result.data.inOrderDolar;\r\n this.balance.inOrderReal = result.data.inOrderReal;\r\n this.balance.inOrderSm = result.data.inOrderSM;\r\n this.balance.inOrderBs = result.data.inOrderBs;\r\n });\r\n }\r\n\r\n changeBond(bond) {\r\n this.bond = bond;\r\n this.walletService.changeBalance.emit(this.bond);\r\n Security.setCoin(bond);\r\n\r\n }\r\n\r\n async startGetByMinute() {\r\n this.interval = setInterval(async () => {\r\n await this.getAllBalance();\r\n }, 60000);\r\n }\r\n\r\n ngOnDestroy() {\r\n clearInterval(this.interval);\r\n }\r\n\r\n goToPage(page) {\r\n this.navCtrl.navigateForward(page);\r\n }\r\n}","import { Component, Input, OnInit } from '@angular/core';\r\nimport { MenuController, ModalController, NavController } from '@ionic/angular';\r\nimport { AllBalanceUser } from 'src/app/models/allBalanceUser';\r\nimport { ClientService } from 'src/app/services/client.service';\r\nimport { WalletService } from 'src/app/services/wallet.service';\r\nimport { Security } from 'src/app/utils/security.util';\r\n\r\n@Component({\r\n selector: 'app-wallet-menu',\r\n templateUrl: './wallet-menu.component.html',\r\n styleUrls: ['./wallet-menu.component.scss'],\r\n})\r\nexport class WalletMenuComponent implements OnInit {\r\n bond;\r\n balance: AllBalanceUser = new AllBalanceUser();\r\n\r\n constructor(private clientService: ClientService, private navCtrl: NavController, private menuCtrl: MenuController, private walletService: WalletService) { }\r\n\r\n ngOnInit() {\r\n if (Security.getCoin()) {\r\n this.bond = Security.getCoin();\r\n } else {\r\n this.bond = '1';\r\n Security.setCoin(1);\r\n }\r\n\r\n this.walletService.changeBalance.subscribe(result => {\r\n this.bond = result;\r\n });\r\n this.getAllBalance();\r\n\r\n }\r\n\r\n async getAllBalance() {\r\n this.clientService.getAllBalance().subscribe(result => {\r\n this.balance.balanceReal = result.data.balanceReal;\r\n this.balance.balanceDolar = result.data.balanceDolar;\r\n this.balance.balanceSm = result.data.balanceSM;\r\n this.balance.balanceBs = result.data.balanceBs;\r\n this.balance.inOrderDolar = result.data.inOrderDolar;\r\n this.balance.inOrderReal = result.data.inOrderReal;\r\n this.balance.inOrderSm = result.data.inOrderSM;\r\n this.balance.inOrderBs = result.data.inOrderBs;\r\n });\r\n }\r\n\r\n goToPage(page) {\r\n this.menuCtrl.close();\r\n this.navCtrl.navigateRoot(page);\r\n }\r\n}","import { Component, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { LoadingController, NavController, ToastController } from '@ionic/angular';\r\nimport { CityService } from 'src/app/services/city.service';\r\nimport { OrderService } from 'src/app/services/order.service';\r\nimport { SystemService } from 'src/app/services/system.service';\r\nimport { Security } from 'src/app/utils/security.util';\r\n\r\n@Component({\r\n selector: 'app-withdraw-by-delivery',\r\n templateUrl: './withdraw-by-delivery.component.html',\r\n styleUrls: ['./withdraw-by-delivery.component.scss'],\r\n})\r\nexport class WithdrawByDeliveryComponent implements OnInit {\r\n form: FormGroup;\r\n citys: any[] = null;\r\n bond = null;\r\n coin = 0;\r\n fee = 0.00;\r\n minimumMount = 0.00;\r\n deliveryFee = 0.00;\r\n vm = false;\r\n amount;\r\n // pais: string = null;\r\n // lat;\r\n // longi;\r\n // positionInit: google.maps.LatLng;\r\n position: any[];\r\n\r\n constructor(private fb: FormBuilder, private toastCtrl: ToastController, private loadingCtrl: LoadingController,\r\n private orderService: OrderService, private navCtrl: NavController, private cityService: CityService,\r\n private systemService: SystemService) {\r\n this.form = this.fb.group({\r\n bondCoin: [],\r\n value: ['', Validators.compose([\r\n Validators.required,\r\n ])],\r\n phone: ['', Validators.compose([\r\n Validators.required\r\n ])],\r\n idCity: [0, Validators.compose([\r\n Validators.required\r\n ])],\r\n bondWithdraw: [],\r\n description: ['', Validators.compose([\r\n Validators.required,\r\n Validators.minLength(10)\r\n ])],\r\n house: ['', Validators.compose([\r\n Validators.required,\r\n Validators.minLength(10)\r\n ])],\r\n // latitude: ['', Validators.compose([\r\n // Validators.required,\r\n // ])],\r\n // longitude: ['', Validators.compose([\r\n // Validators.required,\r\n // ])],\r\n });\r\n }\r\n\r\n async ionViewDidEnter(){\r\n this.ngOnInit();\r\n }\r\n\r\n async ngOnInit() {\r\n const loading = await this.loadingCtrl.create({ message: 'Carregando...' });\r\n loading.present();\r\n\r\n this.bond = Security.getCoin();\r\n\r\n if (this.bond === '1') {\r\n this.coin = 1;\r\n }\r\n\r\n if (this.bond === '2') {\r\n this.coin = 2;\r\n }\r\n\r\n if (this.bond === '3') {\r\n this.coin = 3;\r\n }\r\n\r\n this.systemService.getFeeWithdrawal().subscribe(result => {\r\n this.fee = result.data;\r\n });\r\n\r\n this.systemService.getMinimumWithdrawalAmount().subscribe(result => {\r\n this.minimumMount = result.data;\r\n });\r\n\r\n this.systemService.getFeeDelivery().subscribe(result => {\r\n this.deliveryFee = result.data;\r\n });\r\n\r\n this.cityService.get().subscribe(result => {\r\n if (result.success) {\r\n this.citys = result.data;\r\n loading.dismiss();\r\n }\r\n });\r\n\r\n this.form.patchValue({\r\n bondCoin: this.coin,\r\n bondWithdraw: 2,\r\n });\r\n }\r\n\r\n checkFeeDelivery(event){\r\n if(this.form.get('value').value < this.minimumMount ){\r\n this.vm = true;\r\n } else {\r\n this.vm = false;\r\n }\r\n }\r\n\r\n\r\n async withdraw() {\r\n const loading = await this.loadingCtrl.create({ message: 'Processando...' });\r\n loading.present();\r\n\r\n this.orderService.withdrawalByPartner(this.form.value).subscribe(result => {\r\n if (result.success) {\r\n this.showMessage(result.message);\r\n loading.dismiss();\r\n this.goToPage('/master/wallet/home');\r\n } else {\r\n this.showMessage(result.message);\r\n loading.dismiss();\r\n }\r\n }, error => {\r\n this.showMessage(error.message);\r\n loading.dismiss();\r\n });\r\n }\r\n\r\n\r\n async showMessage(messagen) {\r\n const error = await this.toastCtrl.create({ message: messagen, duration: 3000 });\r\n error.present();\r\n }\r\n\r\n goToPage(page: string) {\r\n this.navCtrl.navigateRoot(page);\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { LoadingController, ModalController, NavController, ToastController } from '@ionic/angular';\r\nimport { BankAccountViewModel } from 'src/app/models/bankAccountViewModel';\r\nimport { BankService } from 'src/app/services/bank.service';\r\nimport { OrderService } from 'src/app/services/order.service';\r\nimport { SystemService } from 'src/app/services/system.service';\r\nimport { Security } from 'src/app/utils/security.util';\r\nimport { BankAccountComponent } from '../../bank/bank-account/bank-account.component';\r\n\r\n@Component({\r\n selector: 'app-withdraw-by-transfer',\r\n templateUrl: './withdraw-by-transfer.component.html',\r\n styleUrls: ['./withdraw-by-transfer.component.scss'],\r\n})\r\nexport class WithdrawByTransferComponent implements OnInit {\r\n form: FormGroup;\r\n bond = null;\r\n banks: BankAccountViewModel[] = [];\r\n bankSelected: any = 0;\r\n coin = 0;\r\n fee = 0.00;\r\n\r\n constructor(private fb: FormBuilder, private toastCtrl: ToastController, private loadingCtrl: LoadingController,\r\n private orderService: OrderService, private bankService: BankService, private navCtrl: NavController,\r\n private systemService: SystemService, private modalCrtl: ModalController) {\r\n this.form = this.fb.group({\r\n bondCoin: [],\r\n value: ['', Validators.compose([\r\n Validators.required\r\n ])],\r\n idBankaccount: ['', Validators.compose([\r\n Validators.required\r\n ])],\r\n finality: [0, Validators.compose([\r\n Validators.required\r\n ])],\r\n // email: ['', Validators.compose([\r\n // Validators.required,\r\n // Validators.email\r\n // ])],\r\n });\r\n }\r\n\r\n logForm() {\r\n console.log(this.form.value);\r\n ;\r\n }\r\n\r\n async ngOnInit() {\r\n const loading = await this.loadingCtrl.create({ message: 'Carregando...' });\r\n loading.present();\r\n\r\n this.bond = Security.getCoin();\r\n\r\n if (this.bond === '1') {\r\n this.coin = 1;\r\n }\r\n\r\n if (this.bond === '2') {\r\n this.coin = 2;\r\n }\r\n\r\n if (this.bond === '3') {\r\n this.coin = 3;\r\n }\r\n\r\n this.loadBanks();\r\n this.loadFeeTransferBetweenUsers();\r\n\r\n\r\n loading.dismiss();\r\n\r\n }\r\n\r\n loadBanks() {\r\n this.bankService.getByCoinUser(this.coin).subscribe(result => {\r\n if (result.success) {\r\n this.banks = result.data;\r\n }\r\n });\r\n }\r\n\r\n loadFeeTransferBetweenUsers() {\r\n this.systemService.getFeeTransferBetweenUsers().subscribe(result => {\r\n this.fee = result.data;\r\n });\r\n }\r\n\r\n async withdraw() {\r\n const loading = await this.loadingCtrl.create({ message: 'Processando...' });\r\n loading.present();\r\n\r\n this.form.patchValue({\r\n bondCoin: this.coin,\r\n idBankaccount: this.bankSelected.id\r\n });\r\n\r\n this.orderService.withdrawalByTransfer(this.form.value).subscribe(result => {\r\n if (result.success) {\r\n this.showMessage(result.message);\r\n loading.dismiss();\r\n this.goToPage('/master/wallet/home');\r\n } else {\r\n this.showMessage(result.message);\r\n loading.dismiss();\r\n }\r\n }, error => {\r\n this.showMessage(error.message);\r\n loading.dismiss();\r\n });\r\n }\r\n\r\n async showMessage(messagen) {\r\n const error = await this.toastCtrl.create({ message: messagen, duration: 3000 });\r\n error.present();\r\n }\r\n\r\n goToPage(page: string) {\r\n this.navCtrl.navigateRoot(page);\r\n }\r\n\r\n async addBankAccount(event) {\r\n if (event === '1') {\r\n\r\n const modal = await this.modalCrtl.create({\r\n component: BankAccountComponent\r\n });\r\n\r\n modal.onDidDismiss().then(() => {\r\n this.bankSelected = 0;\r\n this.loadBanks();\r\n });\r\n\r\n modal.present();\r\n }\r\n\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { AuthService } from '../services/auth.service';\r\n\r\nimport { MasterPage } from './master.page';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: 'wallet',\r\n canActivate: [AuthService],\r\n component: MasterPage,\r\n children: [\r\n {\r\n path: 'home',\r\n loadChildren: () => import('./pages/home/home.module').then( m => m.HomePageModule)\r\n },\r\n {\r\n path: 'extract/transactions',\r\n loadChildren: () => import('./pages/extract/all-transactions/all-transactions.module').then( m => m.AllTransactionsPageModule)\r\n },\r\n {\r\n path: 'extract/details/:id',\r\n loadChildren: () => import('./pages/extract/transaction-details/transaction-details.module').then( m => m.TransactionDetailsPageModule)\r\n },\r\n {\r\n path: 'bank',\r\n loadChildren: () => import('./pages/bank/bank-list/bank-list.module').then( m => m.BankListPageModule)\r\n },\r\n {\r\n path: 'bank/new',\r\n loadChildren: () => import('./pages/bank/bank-edit/bank-edit.module').then( m => m.BankEditPageModule)\r\n },\r\n {\r\n path: 'bank/:id/edit',\r\n loadChildren: () => import('./pages/bank/bank-edit/bank-edit.module').then( m => m.BankEditPageModule)\r\n },\r\n {\r\n path: 'deposit/make',\r\n loadChildren: () => import('./pages/deposit/make-deposit/make-deposit.module').then( m => m.MakeDepositPageModule)\r\n },\r\n {\r\n path: 'transfer/between-users',\r\n loadChildren: () => import('./pages/transfer/transfer-between-users/transfer-between-users.module').then( m => m.TransferBetweenUsersPageModule)\r\n },\r\n {\r\n path: 'withdraw',\r\n loadChildren: () => import('./pages/withdraw/withdraw.module').then( m => m.WithdrawPageModule)\r\n },\r\n {\r\n path: 'exchange',\r\n loadChildren: () => import('./pages/exchange/exchange.module').then( m => m.ExchangePageModule)\r\n },\r\n ]\r\n },\r\n {\r\n path: '',\r\n redirectTo: 'wallet/home',\r\n pathMatch: 'full'\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule],\r\n})\r\nexport class MasterPageRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { IonicModule } from '@ionic/angular';\r\n\r\nimport { MasterPageRoutingModule } from './master-routing.module';\r\n\r\nimport { MasterPage } from './master.page';\r\nimport { ComponentsModule } from '../components/components.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ComponentsModule,\r\n FormsModule,\r\n IonicModule,\r\n MasterPageRoutingModule\r\n ],\r\n declarations: [MasterPage]\r\n})\r\nexport class MasterPageModule {}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { MenuController, NavController, ToastController } from '@ionic/angular';\r\nimport { NotifyService } from '../services/notify.service';\r\nimport { SystemService } from '../services/system.service';\r\nimport { ThemeService } from '../services/theme.service';\r\nimport { Security } from '../utils/security.util';\r\n\r\nimport { Device } from '@awesome-cordova-plugins/device/ngx';\r\nimport { VersionService } from '../services/version.service';\r\n\r\n@Component({\r\n selector: 'app-master',\r\n templateUrl: './master.page.html',\r\n styleUrls: ['./master.page.scss'],\r\n})\r\nexport class MasterPage implements OnInit {\r\n exit = 0;\r\n name: string;\r\n document;\r\n standard;\r\n\r\n constructor(private navCtrl: NavController, private menuCtrl: MenuController, private themeService: ThemeService,\r\n private toastCtrl: ToastController, private systemService: SystemService, private notifyService: NotifyService,\r\n private versionService: VersionService, private device: Device, ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.themeService.initAppTheme();\r\n\r\n this.name = Security.getName();\r\n this.document = Security.getDocument();\r\n this.standard = Security.getStandard();\r\n\r\n this.checkVersion();\r\n this.getProjectKey();\r\n this.startConnection();\r\n }\r\n\r\n checkVersion(){\r\n this.versionService.checkVersion(Security.versionApp()).subscribe(result => {\r\n if(result.success){\r\n console.log(result.message);\r\n } else{\r\n this.showMessage(result.message + ', versão ' + result.data.shortName + ' disponivel!');\r\n console.log(result.data);\r\n }\r\n });\r\n }\r\n\r\n\r\n goToPage(page: string) {\r\n this.menuCtrl.close('menuMain');\r\n this.navCtrl.navigateRoot(page);\r\n }\r\n\r\n ionViewCanLeave(): boolean {\r\n this.exit += 1;\r\n if (this.exit === 2) {\r\n return true;\r\n } else {\r\n this.showMessage('Pressione mais uma vez para sair!');\r\n }\r\n }\r\n\r\n async showMessage(messagen) {\r\n const error = await this.toastCtrl.create({ message: messagen, duration: 3000 });\r\n error.present();\r\n }\r\n\r\n getProjectKey() {\r\n this.systemService.getProjectKey().subscribe(result => {\r\n if (result.success) {\r\n Security.setProjectKey(result.data.projectKey);\r\n }\r\n });\r\n }\r\n\r\n startConnection(){\r\n const uuid = this.device.uuid;\r\n const model = this.device.model;\r\n const serial = this.device.serial;\r\n const platform = this.device.platform;\r\n const version = this.device.version;\r\n this.notifyService.startConnection(Security.getProjectKey(), Security.getId(), uuid, model, serial, platform, version);\r\n }\r\n\r\n}\r\n","export class AllBalanceUser {\r\n balanceReal: number;\r\n balanceDolar: number;\r\n balanceSm: number;\r\n balanceBs: number;\r\n inOrderReal: number;\r\n inOrderDolar: number;\r\n inOrderSm: number;\r\n inOrderBs: number;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Security } from '../utils/security.util';\r\nimport { CommandResult } from '../models/commandResult';\r\nimport { environment } from 'src/environments/environment';\r\nimport { BankAccountViewModel } from '../models/bankAccountViewModel';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BankService {\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n getBankThatWeWor(){\r\n return this.http.get(environment.serviceUrl + 'v1/bankAccount/work/', this.options());\r\n }\r\n\r\n getBankThatWeWorkByCoin(bond: number){\r\n return this.http.get(environment.serviceUrl + 'v1/bankAccount/work/' + bond, this.options());\r\n }\r\n\r\n createBank(data: BankAccountViewModel) {\r\n return this.http.post(environment.serviceUrl + 'v1/bankAccount/new', data, this.options());\r\n }\r\n\r\n getAllByUser(){\r\n return this.http.get(environment.serviceUrl + 'v1/bankAccount/get/user', this.options());\r\n }\r\n\r\n getByCoinUser(bond){\r\n return this.http.get(environment.serviceUrl + 'v1/bankAccount/get/ ' + bond + '/coin', this.options());\r\n }\r\n\r\n getById(id: string){\r\n return this.http.get(environment.serviceUrl + 'v1/bankAccount/get/' + id, this.options());\r\n }\r\n\r\n delete(id: string){\r\n return this.http.get(environment.serviceUrl + 'v1/bankAccount/' + id + '/delete', this.options());\r\n }\r\n\r\n getByCoinSystem(bond){\r\n return this.http.get(environment.serviceUrl + 'v1/admin/bankAccount/get/ ' + bond + '/coin', this.options());\r\n }\r\n\r\n options() {\r\n const headers = new HttpHeaders()\r\n .set('Authorization', `Bearer ${Security.getToken()}`)\r\n .set('api-version', Security.versionApi());\r\n return { headers };\r\n }\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { environment } from 'src/environments/environment';\r\nimport { CommandResult } from '../models/commandResult';\r\nimport { Security } from '../utils/security.util';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CityService {\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n get(){\r\n return this.http.get(environment.serviceUrl + 'v1/city/get', this.options());\r\n }\r\n\r\n options() {\r\n const headers = new HttpHeaders()\r\n .set('Authorization', `Bearer ${Security.getToken()}`)\r\n .set('api-version', Security.versionApi());\r\n return { headers };\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as signalR from '@microsoft/signalr';\r\n\r\nimport { LocalNotifications } from '@awesome-cordova-plugins/local-notifications/ngx';\r\n// import { LocalNotifications} from '@ionic-native/local-notifications/ngx';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NotifyService {\r\n connection = new signalR.HubConnectionBuilder()\r\n .withUrl(\"https://ws.diegoevangelista.com/v1/notify\")\r\n .build();\r\n\r\nconstructor(private notifications: LocalNotifications) {\r\n this.notifications.hasPermission();\r\n this.notifications.requestPermission();\r\n}\r\n\r\nstartConnection(projectKey: string, idUser: string, uniqueDeviceID: string, model: string, serial: string, platform: string, version: string) {\r\n this.connection.start()\r\n .then(() => {\r\n this.connection.send(\"AddToGroup\", projectKey, idUser, uniqueDeviceID, model, serial, platform, version);\r\n\r\n this.connection.on(\"receiveAllNotify\", (title: string, message: string, image: string) => {\r\n this.notify(title, message, image)\r\n })\r\n\r\n this.connection.on(\"receiveNotify\", (title: string, message: string, image: string) => {\r\n this.notify(title, message, image)\r\n })\r\n\r\n }).catch(() => console.log('Falha ao conectar!'));\r\n}\r\n\r\n\r\ngetAllNotification() {\r\n\r\n}\r\n\r\n\r\n\r\nnotify(title: string, text: string, img: string) {\r\n this.notifications.schedule({\r\n id: 777,\r\n title: title,\r\n //sound: isAndroid? 'file://sound.mp3': 'file://beep.caf',\r\n text: text,\r\n icon: img,\r\n foreground: true,\r\n vibrate: true,\r\n });\r\n}\r\n\r\n\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { environment } from '../../environments/environment';\r\nimport { AddResourceViewModel } from '../models/addResourceViewModel';\r\nimport { CommandResult } from '../models/commandResult';\r\nimport { OrderClientViewModel } from '../models/orderClientViewModel';\r\nimport { TransferViewModel } from '../models/transferViewModel';\r\nimport { ValueViewModel } from '../models/valueViewModel';\r\nimport { WithdrawTransfer } from '../models/withdrawTransfer';\r\nimport { Security } from '../utils/security.util';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class OrderService {\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n getById(id: string){\r\n return this.http.get(environment.serviceUrl + 'v1/order/get/' + id, this.options());\r\n }\r\n\r\n getOrderDetails(id: string){\r\n return this.http.get(environment.serviceUrl + 'v1/order/details/' + id, this.options());\r\n }\r\n\r\n resourceDeposit(data: AddResourceViewModel) {\r\n return this.http.post(environment.serviceUrl + 'v1/client/order/resourcedeposit', data, this.options());\r\n }\r\n\r\n transferBetweenUsers(data: TransferViewModel) {\r\n return this.http.post(environment.serviceUrl + 'v1/client/order/transferBetweenUsers', data, this.options());\r\n }\r\n\r\n exchangeRealByBs(data: ValueViewModel) {\r\n return this.http.post(environment.serviceUrl + 'v1/client/order/exchangeRealByBs', data, this.options());\r\n }\r\n\r\n exchangeBsByReal(data: ValueViewModel) {\r\n return this.http.post(environment.serviceUrl + 'v1/client/order/exchangeBsByReal', data, this.options());\r\n }\r\n\r\n exchangeDolarByBs(data: ValueViewModel) {\r\n return this.http.post(environment.serviceUrl + 'v1/client/order/exchangeDolarByBs', data, this.options());\r\n }\r\n\r\n exchangeBsByDolar(data: ValueViewModel) {\r\n return this.http.post(environment.serviceUrl + 'v1/client/order/exchangeBsByDolar', data, this.options());\r\n }\r\n\r\n exchangeRealByDolar(data: ValueViewModel) {\r\n return this.http.post(environment.serviceUrl + 'v1/client/order/exchangeRealByDolar', data, this.options());\r\n }\r\n\r\n exchangeDolaByReal(data: ValueViewModel) {\r\n return this.http.post(environment.serviceUrl + 'v1/client/order/exchangeDolaByReal', data, this.options());\r\n }\r\n\r\n withdrawalByTransfer(data: WithdrawTransfer) {\r\n return this.http.post(environment.serviceUrl + 'v1/client/order/withdrawalByTransfer', data, this.options());\r\n }\r\n\r\n withdrawalByPartner(data: ValueViewModel) {\r\n return this.http.post(environment.serviceUrl + 'v1/client/order/withdrawalByPartner', data, this.options());\r\n }\r\n\r\n investment(data: OrderClientViewModel) {\r\n return this.http.post(environment.serviceUrl + 'v1/client/order/investment', data, this.options());\r\n }\r\n\r\n returnInvestment() {\r\n return this.http.post(environment.serviceUrl + 'v1/client/order/returnInvestment', this.options());\r\n }\r\n\r\n sendInterestToBalanceSm() {\r\n return this.http.post(environment.serviceUrl + 'v1/client/order/sendInterestToBalanceSm', this.options());\r\n }\r\n\r\n\r\n options() {\r\n const headers = new HttpHeaders()\r\n .set('Authorization', `Bearer ${Security.getToken()}`)\r\n .set('api-version', Security.versionApi());\r\n return { headers };\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Platform } from '@ionic/angular';\r\nimport { Security } from 'src/app/utils/security.util';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ThemeService {\r\n constructor(private plt: Platform) {\r\n }\r\n\r\n initAppTheme() {\r\n if (Security.hasTheme()) {\r\n if (Security.getChangeTheme() === 'true') {\r\n this.setAppTheme(true);\r\n } else {\r\n this.setAppTheme(false);\r\n }\r\n } else {\r\n Security.setChangeTheme(false);\r\n this.setAppTheme(false);\r\n }\r\n }\r\n\r\n setAppTheme(dark) {\r\n if (dark) {\r\n document.body.classList.add('dark');\r\n } else {\r\n document.body.classList.remove('dark');\r\n }\r\n Security.setChangeTheme(dark);\r\n }\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { CommandResult } from '../models/commandResult';\r\nimport { environment } from 'src/environments/environment';\r\nimport { Security } from '../utils/security.util';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class VersionService {\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n checkVersion(version: string){\r\n return this.http.get(environment.serviceUrl + 'v1/version/' + version, this.options());\r\n }\r\n\r\n options() {\r\n const headers = new HttpHeaders()\r\n .set('Authorization', `Bearer ${Security.getToken()}`)\r\n .set('api-version', Security.versionApi());\r\n return { headers };\r\n }\r\n}\r\n","import { EventEmitter, Injectable, Output } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class WalletService {\r\n\r\n @Output() changeBalance: EventEmitter = new EventEmitter();\r\n\r\n constructor() { }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// Rough polyfill of https://developer.mozilla.org/en-US/docs/Web/API/AbortController\r\n// We don't actually ever use the API being polyfilled, we always use the polyfill because\r\n// it's a very new API right now.\r\n// Not exported from index.\r\n/** @private */\r\nexport class AbortController {\r\n constructor() {\r\n this._isAborted = false;\r\n this.onabort = null;\r\n }\r\n abort() {\r\n if (!this._isAborted) {\r\n this._isAborted = true;\r\n if (this.onabort) {\r\n this.onabort();\r\n }\r\n }\r\n }\r\n get signal() {\r\n return this;\r\n }\r\n get aborted() {\r\n return this._isAborted;\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { AbortError } from \"./Errors\";\r\nimport { FetchHttpClient } from \"./FetchHttpClient\";\r\nimport { HttpClient } from \"./HttpClient\";\r\nimport { Platform } from \"./Utils\";\r\nimport { XhrHttpClient } from \"./XhrHttpClient\";\r\n/** Default implementation of {@link @microsoft/signalr.HttpClient}. */\r\nexport class DefaultHttpClient extends HttpClient {\r\n /** Creates a new instance of the {@link @microsoft/signalr.DefaultHttpClient}, using the provided {@link @microsoft/signalr.ILogger} to log messages. */\r\n constructor(logger) {\r\n super();\r\n if (typeof fetch !== \"undefined\" || Platform.isNode) {\r\n this._httpClient = new FetchHttpClient(logger);\r\n }\r\n else if (typeof XMLHttpRequest !== \"undefined\") {\r\n this._httpClient = new XhrHttpClient(logger);\r\n }\r\n else {\r\n throw new Error(\"No usable HttpClient found.\");\r\n }\r\n }\r\n /** @inheritDoc */\r\n send(request) {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n return Promise.reject(new AbortError());\r\n }\r\n if (!request.method) {\r\n return Promise.reject(new Error(\"No method defined.\"));\r\n }\r\n if (!request.url) {\r\n return Promise.reject(new Error(\"No url defined.\"));\r\n }\r\n return this._httpClient.send(request);\r\n }\r\n getCookieString(url) {\r\n return this._httpClient.getCookieString(url);\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// 0, 2, 10, 30 second delays before reconnect attempts.\r\nconst DEFAULT_RETRY_DELAYS_IN_MILLISECONDS = [0, 2000, 10000, 30000, null];\r\n/** @private */\r\nexport class DefaultReconnectPolicy {\r\n constructor(retryDelays) {\r\n this._retryDelays = retryDelays !== undefined ? [...retryDelays, null] : DEFAULT_RETRY_DELAYS_IN_MILLISECONDS;\r\n }\r\n nextRetryDelayInMilliseconds(retryContext) {\r\n return this._retryDelays[retryContext.previousRetryCount];\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n/** Error thrown when an HTTP request fails. */\r\nexport class HttpError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.HttpError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n * @param {number} statusCode The HTTP status code represented by this error.\r\n */\r\n constructor(errorMessage, statusCode) {\r\n const trueProto = new.target.prototype;\r\n super(`${errorMessage}: Status code '${statusCode}'`);\r\n this.statusCode = statusCode;\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when a timeout elapses. */\r\nexport class TimeoutError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.TimeoutError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n */\r\n constructor(errorMessage = \"A timeout occurred.\") {\r\n const trueProto = new.target.prototype;\r\n super(errorMessage);\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when an action is aborted. */\r\nexport class AbortError extends Error {\r\n /** Constructs a new instance of {@link AbortError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n */\r\n constructor(errorMessage = \"An abort occurred.\") {\r\n const trueProto = new.target.prototype;\r\n super(errorMessage);\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when the selected transport is unsupported by the browser. */\r\n/** @private */\r\nexport class UnsupportedTransportError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.UnsupportedTransportError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {HttpTransportType} transport The {@link @microsoft/signalr.HttpTransportType} this error occured on.\r\n */\r\n constructor(message, transport) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.transport = transport;\r\n this.errorType = 'UnsupportedTransportError';\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when the selected transport is disabled by the browser. */\r\n/** @private */\r\nexport class DisabledTransportError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.DisabledTransportError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {HttpTransportType} transport The {@link @microsoft/signalr.HttpTransportType} this error occured on.\r\n */\r\n constructor(message, transport) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.transport = transport;\r\n this.errorType = 'DisabledTransportError';\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when the selected transport cannot be started. */\r\n/** @private */\r\nexport class FailedToStartTransportError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.FailedToStartTransportError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {HttpTransportType} transport The {@link @microsoft/signalr.HttpTransportType} this error occured on.\r\n */\r\n constructor(message, transport) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.transport = transport;\r\n this.errorType = 'FailedToStartTransportError';\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when the negotiation with the server failed to complete. */\r\n/** @private */\r\nexport class FailedToNegotiateWithServerError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.FailedToNegotiateWithServerError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n */\r\n constructor(message) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.errorType = 'FailedToNegotiateWithServerError';\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when multiple errors have occured. */\r\n/** @private */\r\nexport class AggregateErrors extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.AggregateErrors}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {Error[]} innerErrors The collection of errors this error is aggregating.\r\n */\r\n constructor(message, innerErrors) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.innerErrors = innerErrors;\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { AbortError, HttpError, TimeoutError } from \"./Errors\";\r\nimport { HttpClient, HttpResponse } from \"./HttpClient\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { Platform, getGlobalThis } from \"./Utils\";\r\nexport class FetchHttpClient extends HttpClient {\r\n constructor(logger) {\r\n super();\r\n this._logger = logger;\r\n if (typeof fetch === \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n const requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n // Cookies aren't automatically handled in Node so we need to add a CookieJar to preserve cookies across requests\r\n this._jar = new (requireFunc(\"tough-cookie\")).CookieJar();\r\n this._fetchType = requireFunc(\"node-fetch\");\r\n // node-fetch doesn't have a nice API for getting and setting cookies\r\n // fetch-cookie will wrap a fetch implementation with a default CookieJar or a provided one\r\n this._fetchType = requireFunc(\"fetch-cookie\")(this._fetchType, this._jar);\r\n }\r\n else {\r\n this._fetchType = fetch.bind(getGlobalThis());\r\n }\r\n if (typeof AbortController === \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n const requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n // Node needs EventListener methods on AbortController which our custom polyfill doesn't provide\r\n this._abortControllerType = requireFunc(\"abort-controller\");\r\n }\r\n else {\r\n this._abortControllerType = AbortController;\r\n }\r\n }\r\n /** @inheritDoc */\r\n async send(request) {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n throw new AbortError();\r\n }\r\n if (!request.method) {\r\n throw new Error(\"No method defined.\");\r\n }\r\n if (!request.url) {\r\n throw new Error(\"No url defined.\");\r\n }\r\n const abortController = new this._abortControllerType();\r\n let error;\r\n // Hook our abortSignal into the abort controller\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = () => {\r\n abortController.abort();\r\n error = new AbortError();\r\n };\r\n }\r\n // If a timeout has been passed in, setup a timeout to call abort\r\n // Type needs to be any to fit window.setTimeout and NodeJS.setTimeout\r\n let timeoutId = null;\r\n if (request.timeout) {\r\n const msTimeout = request.timeout;\r\n timeoutId = setTimeout(() => {\r\n abortController.abort();\r\n this._logger.log(LogLevel.Warning, `Timeout from HTTP request.`);\r\n error = new TimeoutError();\r\n }, msTimeout);\r\n }\r\n let response;\r\n try {\r\n response = await this._fetchType(request.url, {\r\n body: request.content,\r\n cache: \"no-cache\",\r\n credentials: request.withCredentials === true ? \"include\" : \"same-origin\",\r\n headers: {\r\n \"Content-Type\": \"text/plain;charset=UTF-8\",\r\n \"X-Requested-With\": \"XMLHttpRequest\",\r\n ...request.headers,\r\n },\r\n method: request.method,\r\n mode: \"cors\",\r\n redirect: \"follow\",\r\n signal: abortController.signal,\r\n });\r\n }\r\n catch (e) {\r\n if (error) {\r\n throw error;\r\n }\r\n this._logger.log(LogLevel.Warning, `Error from HTTP request. ${e}.`);\r\n throw e;\r\n }\r\n finally {\r\n if (timeoutId) {\r\n clearTimeout(timeoutId);\r\n }\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = null;\r\n }\r\n }\r\n if (!response.ok) {\r\n const errorMessage = await deserializeContent(response, \"text\");\r\n throw new HttpError(errorMessage || response.statusText, response.status);\r\n }\r\n const content = deserializeContent(response, request.responseType);\r\n const payload = await content;\r\n return new HttpResponse(response.status, response.statusText, payload);\r\n }\r\n getCookieString(url) {\r\n let cookies = \"\";\r\n if (Platform.isNode && this._jar) {\r\n // @ts-ignore: unused variable\r\n this._jar.getCookies(url, (e, c) => cookies = c.join(\"; \"));\r\n }\r\n return cookies;\r\n }\r\n}\r\nfunction deserializeContent(response, responseType) {\r\n let content;\r\n switch (responseType) {\r\n case \"arraybuffer\":\r\n content = response.arrayBuffer();\r\n break;\r\n case \"text\":\r\n content = response.text();\r\n break;\r\n case \"blob\":\r\n case \"document\":\r\n case \"json\":\r\n throw new Error(`${responseType} is not supported.`);\r\n default:\r\n content = response.text();\r\n break;\r\n }\r\n return content;\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { TextMessageFormat } from \"./TextMessageFormat\";\r\nimport { isArrayBuffer } from \"./Utils\";\r\n/** @private */\r\nexport class HandshakeProtocol {\r\n // Handshake request is always JSON\r\n writeHandshakeRequest(handshakeRequest) {\r\n return TextMessageFormat.write(JSON.stringify(handshakeRequest));\r\n }\r\n parseHandshakeResponse(data) {\r\n let messageData;\r\n let remainingData;\r\n if (isArrayBuffer(data)) {\r\n // Format is binary but still need to read JSON text from handshake response\r\n const binaryData = new Uint8Array(data);\r\n const separatorIndex = binaryData.indexOf(TextMessageFormat.RecordSeparatorCode);\r\n if (separatorIndex === -1) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n // content before separator is handshake response\r\n // optional content after is additional messages\r\n const responseLength = separatorIndex + 1;\r\n messageData = String.fromCharCode.apply(null, Array.prototype.slice.call(binaryData.slice(0, responseLength)));\r\n remainingData = (binaryData.byteLength > responseLength) ? binaryData.slice(responseLength).buffer : null;\r\n }\r\n else {\r\n const textData = data;\r\n const separatorIndex = textData.indexOf(TextMessageFormat.RecordSeparator);\r\n if (separatorIndex === -1) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n // content before separator is handshake response\r\n // optional content after is additional messages\r\n const responseLength = separatorIndex + 1;\r\n messageData = textData.substring(0, responseLength);\r\n remainingData = (textData.length > responseLength) ? textData.substring(responseLength) : null;\r\n }\r\n // At this point we should have just the single handshake message\r\n const messages = TextMessageFormat.parse(messageData);\r\n const response = JSON.parse(messages[0]);\r\n if (response.type) {\r\n throw new Error(\"Expected a handshake response from the server.\");\r\n }\r\n const responseMessage = response;\r\n // multiple messages could have arrived with handshake\r\n // return additional data to be parsed as usual, or null if all parsed\r\n return [remainingData, responseMessage];\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nexport class HeaderNames {\r\n}\r\nHeaderNames.Authorization = \"Authorization\";\r\nHeaderNames.Cookie = \"Cookie\";\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n/** Represents an HTTP response. */\r\nexport class HttpResponse {\r\n constructor(statusCode, statusText, content) {\r\n this.statusCode = statusCode;\r\n this.statusText = statusText;\r\n this.content = content;\r\n }\r\n}\r\n/** Abstraction over an HTTP client.\r\n *\r\n * This class provides an abstraction over an HTTP client so that a different implementation can be provided on different platforms.\r\n */\r\nexport class HttpClient {\r\n get(url, options) {\r\n return this.send({\r\n ...options,\r\n method: \"GET\",\r\n url,\r\n });\r\n }\r\n post(url, options) {\r\n return this.send({\r\n ...options,\r\n method: \"POST\",\r\n url,\r\n });\r\n }\r\n delete(url, options) {\r\n return this.send({\r\n ...options,\r\n method: \"DELETE\",\r\n url,\r\n });\r\n }\r\n /** Gets all cookies that apply to the specified URL.\r\n *\r\n * @param url The URL that the cookies are valid for.\r\n * @returns {string} A string containing all the key-value cookie pairs for the specified URL.\r\n */\r\n // @ts-ignore\r\n getCookieString(url) {\r\n return \"\";\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { DefaultHttpClient } from \"./DefaultHttpClient\";\r\nimport { AggregateErrors, DisabledTransportError, FailedToNegotiateWithServerError, FailedToStartTransportError, HttpError, UnsupportedTransportError } from \"./Errors\";\r\nimport { HeaderNames } from \"./HeaderNames\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { HttpTransportType, TransferFormat } from \"./ITransport\";\r\nimport { LongPollingTransport } from \"./LongPollingTransport\";\r\nimport { ServerSentEventsTransport } from \"./ServerSentEventsTransport\";\r\nimport { Arg, createLogger, getUserAgentHeader, Platform } from \"./Utils\";\r\nimport { WebSocketTransport } from \"./WebSocketTransport\";\r\nconst MAX_REDIRECTS = 100;\r\n/** @private */\r\nexport class HttpConnection {\r\n constructor(url, options = {}) {\r\n this._stopPromiseResolver = () => { };\r\n this.features = {};\r\n this._negotiateVersion = 1;\r\n Arg.isRequired(url, \"url\");\r\n this._logger = createLogger(options.logger);\r\n this.baseUrl = this._resolveUrl(url);\r\n options = options || {};\r\n options.logMessageContent = options.logMessageContent === undefined ? false : options.logMessageContent;\r\n if (typeof options.withCredentials === \"boolean\" || options.withCredentials === undefined) {\r\n options.withCredentials = options.withCredentials === undefined ? true : options.withCredentials;\r\n }\r\n else {\r\n throw new Error(\"withCredentials option was not a 'boolean' or 'undefined' value\");\r\n }\r\n options.timeout = options.timeout === undefined ? 100 * 1000 : options.timeout;\r\n let webSocketModule = null;\r\n let eventSourceModule = null;\r\n if (Platform.isNode && typeof require !== \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n const requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n webSocketModule = requireFunc(\"ws\");\r\n eventSourceModule = requireFunc(\"eventsource\");\r\n }\r\n if (!Platform.isNode && typeof WebSocket !== \"undefined\" && !options.WebSocket) {\r\n options.WebSocket = WebSocket;\r\n }\r\n else if (Platform.isNode && !options.WebSocket) {\r\n if (webSocketModule) {\r\n options.WebSocket = webSocketModule;\r\n }\r\n }\r\n if (!Platform.isNode && typeof EventSource !== \"undefined\" && !options.EventSource) {\r\n options.EventSource = EventSource;\r\n }\r\n else if (Platform.isNode && !options.EventSource) {\r\n if (typeof eventSourceModule !== \"undefined\") {\r\n options.EventSource = eventSourceModule;\r\n }\r\n }\r\n this._httpClient = options.httpClient || new DefaultHttpClient(this._logger);\r\n this._connectionState = \"Disconnected\" /* Disconnected */;\r\n this._connectionStarted = false;\r\n this._options = options;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n async start(transferFormat) {\r\n transferFormat = transferFormat || TransferFormat.Binary;\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this._logger.log(LogLevel.Debug, `Starting connection with transfer format '${TransferFormat[transferFormat]}'.`);\r\n if (this._connectionState !== \"Disconnected\" /* Disconnected */) {\r\n return Promise.reject(new Error(\"Cannot start an HttpConnection that is not in the 'Disconnected' state.\"));\r\n }\r\n this._connectionState = \"Connecting\" /* Connecting */;\r\n this._startInternalPromise = this._startInternal(transferFormat);\r\n await this._startInternalPromise;\r\n // The TypeScript compiler thinks that connectionState must be Connecting here. The TypeScript compiler is wrong.\r\n if (this._connectionState === \"Disconnecting\" /* Disconnecting */) {\r\n // stop() was called and transitioned the client into the Disconnecting state.\r\n const message = \"Failed to start the HttpConnection before stop() was called.\";\r\n this._logger.log(LogLevel.Error, message);\r\n // We cannot await stopPromise inside startInternal since stopInternal awaits the startInternalPromise.\r\n await this._stopPromise;\r\n return Promise.reject(new Error(message));\r\n }\r\n else if (this._connectionState !== \"Connected\" /* Connected */) {\r\n // stop() was called and transitioned the client into the Disconnecting state.\r\n const message = \"HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!\";\r\n this._logger.log(LogLevel.Error, message);\r\n return Promise.reject(new Error(message));\r\n }\r\n this._connectionStarted = true;\r\n }\r\n send(data) {\r\n if (this._connectionState !== \"Connected\" /* Connected */) {\r\n return Promise.reject(new Error(\"Cannot send data if the connection is not in the 'Connected' State.\"));\r\n }\r\n if (!this._sendQueue) {\r\n this._sendQueue = new TransportSendQueue(this.transport);\r\n }\r\n // Transport will not be null if state is connected\r\n return this._sendQueue.send(data);\r\n }\r\n async stop(error) {\r\n if (this._connectionState === \"Disconnected\" /* Disconnected */) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnected state.`);\r\n return Promise.resolve();\r\n }\r\n if (this._connectionState === \"Disconnecting\" /* Disconnecting */) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnecting state.`);\r\n return this._stopPromise;\r\n }\r\n this._connectionState = \"Disconnecting\" /* Disconnecting */;\r\n this._stopPromise = new Promise((resolve) => {\r\n // Don't complete stop() until stopConnection() completes.\r\n this._stopPromiseResolver = resolve;\r\n });\r\n // stopInternal should never throw so just observe it.\r\n await this._stopInternal(error);\r\n await this._stopPromise;\r\n }\r\n async _stopInternal(error) {\r\n // Set error as soon as possible otherwise there is a race between\r\n // the transport closing and providing an error and the error from a close message\r\n // We would prefer the close message error.\r\n this._stopError = error;\r\n try {\r\n await this._startInternalPromise;\r\n }\r\n catch (e) {\r\n // This exception is returned to the user as a rejected Promise from the start method.\r\n }\r\n // The transport's onclose will trigger stopConnection which will run our onclose event.\r\n // The transport should always be set if currently connected. If it wasn't set, it's likely because\r\n // stop was called during start() and start() failed.\r\n if (this.transport) {\r\n try {\r\n await this.transport.stop();\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `HttpConnection.transport.stop() threw error '${e}'.`);\r\n this._stopConnection();\r\n }\r\n this.transport = undefined;\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, \"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.\");\r\n }\r\n }\r\n async _startInternal(transferFormat) {\r\n // Store the original base url and the access token factory since they may change\r\n // as part of negotiating\r\n let url = this.baseUrl;\r\n this._accessTokenFactory = this._options.accessTokenFactory;\r\n try {\r\n if (this._options.skipNegotiation) {\r\n if (this._options.transport === HttpTransportType.WebSockets) {\r\n // No need to add a connection ID in this case\r\n this.transport = this._constructTransport(HttpTransportType.WebSockets);\r\n // We should just call connect directly in this case.\r\n // No fallback or negotiate in this case.\r\n await this._startTransport(url, transferFormat);\r\n }\r\n else {\r\n throw new Error(\"Negotiation can only be skipped when using the WebSocket transport directly.\");\r\n }\r\n }\r\n else {\r\n let negotiateResponse = null;\r\n let redirects = 0;\r\n do {\r\n negotiateResponse = await this._getNegotiationResponse(url);\r\n // the user tries to stop the connection when it is being started\r\n if (this._connectionState === \"Disconnecting\" /* Disconnecting */ || this._connectionState === \"Disconnected\" /* Disconnected */) {\r\n throw new Error(\"The connection was stopped during negotiation.\");\r\n }\r\n if (negotiateResponse.error) {\r\n throw new Error(negotiateResponse.error);\r\n }\r\n if (negotiateResponse.ProtocolVersion) {\r\n throw new Error(\"Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.\");\r\n }\r\n if (negotiateResponse.url) {\r\n url = negotiateResponse.url;\r\n }\r\n if (negotiateResponse.accessToken) {\r\n // Replace the current access token factory with one that uses\r\n // the returned access token\r\n const accessToken = negotiateResponse.accessToken;\r\n this._accessTokenFactory = () => accessToken;\r\n }\r\n redirects++;\r\n } while (negotiateResponse.url && redirects < MAX_REDIRECTS);\r\n if (redirects === MAX_REDIRECTS && negotiateResponse.url) {\r\n throw new Error(\"Negotiate redirection limit exceeded.\");\r\n }\r\n await this._createTransport(url, this._options.transport, negotiateResponse, transferFormat);\r\n }\r\n if (this.transport instanceof LongPollingTransport) {\r\n this.features.inherentKeepAlive = true;\r\n }\r\n if (this._connectionState === \"Connecting\" /* Connecting */) {\r\n // Ensure the connection transitions to the connected state prior to completing this.startInternalPromise.\r\n // start() will handle the case when stop was called and startInternal exits still in the disconnecting state.\r\n this._logger.log(LogLevel.Debug, \"The HttpConnection connected successfully.\");\r\n this._connectionState = \"Connected\" /* Connected */;\r\n }\r\n // stop() is waiting on us via this.startInternalPromise so keep this.transport around so it can clean up.\r\n // This is the only case startInternal can exit in neither the connected nor disconnected state because stopConnection()\r\n // will transition to the disconnected state. start() will wait for the transition using the stopPromise.\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, \"Failed to start the connection: \" + e);\r\n this._connectionState = \"Disconnected\" /* Disconnected */;\r\n this.transport = undefined;\r\n // if start fails, any active calls to stop assume that start will complete the stop promise\r\n this._stopPromiseResolver();\r\n return Promise.reject(e);\r\n }\r\n }\r\n async _getNegotiationResponse(url) {\r\n const headers = {};\r\n if (this._accessTokenFactory) {\r\n const token = await this._accessTokenFactory();\r\n if (token) {\r\n headers[HeaderNames.Authorization] = `Bearer ${token}`;\r\n }\r\n }\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n const negotiateUrl = this._resolveNegotiateUrl(url);\r\n this._logger.log(LogLevel.Debug, `Sending negotiation request: ${negotiateUrl}.`);\r\n try {\r\n const response = await this._httpClient.post(negotiateUrl, {\r\n content: \"\",\r\n headers: { ...headers, ...this._options.headers },\r\n timeout: this._options.timeout,\r\n withCredentials: this._options.withCredentials,\r\n });\r\n if (response.statusCode !== 200) {\r\n return Promise.reject(new Error(`Unexpected status code returned from negotiate '${response.statusCode}'`));\r\n }\r\n const negotiateResponse = JSON.parse(response.content);\r\n if (!negotiateResponse.negotiateVersion || negotiateResponse.negotiateVersion < 1) {\r\n // Negotiate version 0 doesn't use connectionToken\r\n // So we set it equal to connectionId so all our logic can use connectionToken without being aware of the negotiate version\r\n negotiateResponse.connectionToken = negotiateResponse.connectionId;\r\n }\r\n return negotiateResponse;\r\n }\r\n catch (e) {\r\n let errorMessage = \"Failed to complete negotiation with the server: \" + e;\r\n if (e instanceof HttpError) {\r\n if (e.statusCode === 404) {\r\n errorMessage = errorMessage + \" Either this is not a SignalR endpoint or there is a proxy blocking the connection.\";\r\n }\r\n }\r\n this._logger.log(LogLevel.Error, errorMessage);\r\n return Promise.reject(new FailedToNegotiateWithServerError(errorMessage));\r\n }\r\n }\r\n _createConnectUrl(url, connectionToken) {\r\n if (!connectionToken) {\r\n return url;\r\n }\r\n return url + (url.indexOf(\"?\") === -1 ? \"?\" : \"&\") + `id=${connectionToken}`;\r\n }\r\n async _createTransport(url, requestedTransport, negotiateResponse, requestedTransferFormat) {\r\n let connectUrl = this._createConnectUrl(url, negotiateResponse.connectionToken);\r\n if (this._isITransport(requestedTransport)) {\r\n this._logger.log(LogLevel.Debug, \"Connection was provided an instance of ITransport, using that directly.\");\r\n this.transport = requestedTransport;\r\n await this._startTransport(connectUrl, requestedTransferFormat);\r\n this.connectionId = negotiateResponse.connectionId;\r\n return;\r\n }\r\n const transportExceptions = [];\r\n const transports = negotiateResponse.availableTransports || [];\r\n let negotiate = negotiateResponse;\r\n for (const endpoint of transports) {\r\n const transportOrError = this._resolveTransportOrError(endpoint, requestedTransport, requestedTransferFormat);\r\n if (transportOrError instanceof Error) {\r\n // Store the error and continue, we don't want to cause a re-negotiate in these cases\r\n transportExceptions.push(`${endpoint.transport} failed:`);\r\n transportExceptions.push(transportOrError);\r\n }\r\n else if (this._isITransport(transportOrError)) {\r\n this.transport = transportOrError;\r\n if (!negotiate) {\r\n try {\r\n negotiate = await this._getNegotiationResponse(url);\r\n }\r\n catch (ex) {\r\n return Promise.reject(ex);\r\n }\r\n connectUrl = this._createConnectUrl(url, negotiate.connectionToken);\r\n }\r\n try {\r\n await this._startTransport(connectUrl, requestedTransferFormat);\r\n this.connectionId = negotiate.connectionId;\r\n return;\r\n }\r\n catch (ex) {\r\n this._logger.log(LogLevel.Error, `Failed to start the transport '${endpoint.transport}': ${ex}`);\r\n negotiate = undefined;\r\n transportExceptions.push(new FailedToStartTransportError(`${endpoint.transport} failed: ${ex}`, HttpTransportType[endpoint.transport]));\r\n if (this._connectionState !== \"Connecting\" /* Connecting */) {\r\n const message = \"Failed to select transport before stop() was called.\";\r\n this._logger.log(LogLevel.Debug, message);\r\n return Promise.reject(new Error(message));\r\n }\r\n }\r\n }\r\n }\r\n if (transportExceptions.length > 0) {\r\n return Promise.reject(new AggregateErrors(`Unable to connect to the server with any of the available transports. ${transportExceptions.join(\" \")}`, transportExceptions));\r\n }\r\n return Promise.reject(new Error(\"None of the transports supported by the client are supported by the server.\"));\r\n }\r\n _constructTransport(transport) {\r\n switch (transport) {\r\n case HttpTransportType.WebSockets:\r\n if (!this._options.WebSocket) {\r\n throw new Error(\"'WebSocket' is not supported in your environment.\");\r\n }\r\n return new WebSocketTransport(this._httpClient, this._accessTokenFactory, this._logger, this._options.logMessageContent, this._options.WebSocket, this._options.headers || {});\r\n case HttpTransportType.ServerSentEvents:\r\n if (!this._options.EventSource) {\r\n throw new Error(\"'EventSource' is not supported in your environment.\");\r\n }\r\n return new ServerSentEventsTransport(this._httpClient, this._accessTokenFactory, this._logger, this._options);\r\n case HttpTransportType.LongPolling:\r\n return new LongPollingTransport(this._httpClient, this._accessTokenFactory, this._logger, this._options);\r\n default:\r\n throw new Error(`Unknown transport: ${transport}.`);\r\n }\r\n }\r\n _startTransport(url, transferFormat) {\r\n this.transport.onreceive = this.onreceive;\r\n this.transport.onclose = (e) => this._stopConnection(e);\r\n return this.transport.connect(url, transferFormat);\r\n }\r\n _resolveTransportOrError(endpoint, requestedTransport, requestedTransferFormat) {\r\n const transport = HttpTransportType[endpoint.transport];\r\n if (transport === null || transport === undefined) {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${endpoint.transport}' because it is not supported by this client.`);\r\n return new Error(`Skipping transport '${endpoint.transport}' because it is not supported by this client.`);\r\n }\r\n else {\r\n if (transportMatches(requestedTransport, transport)) {\r\n const transferFormats = endpoint.transferFormats.map((s) => TransferFormat[s]);\r\n if (transferFormats.indexOf(requestedTransferFormat) >= 0) {\r\n if ((transport === HttpTransportType.WebSockets && !this._options.WebSocket) ||\r\n (transport === HttpTransportType.ServerSentEvents && !this._options.EventSource)) {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it is not supported in your environment.'`);\r\n return new UnsupportedTransportError(`'${HttpTransportType[transport]}' is not supported in your environment.`, transport);\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, `Selecting transport '${HttpTransportType[transport]}'.`);\r\n try {\r\n return this._constructTransport(transport);\r\n }\r\n catch (ex) {\r\n return ex;\r\n }\r\n }\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it does not support the requested transfer format '${TransferFormat[requestedTransferFormat]}'.`);\r\n return new Error(`'${HttpTransportType[transport]}' does not support ${TransferFormat[requestedTransferFormat]}.`);\r\n }\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it was disabled by the client.`);\r\n return new DisabledTransportError(`'${HttpTransportType[transport]}' is disabled by the client.`, transport);\r\n }\r\n }\r\n }\r\n _isITransport(transport) {\r\n return transport && typeof (transport) === \"object\" && \"connect\" in transport;\r\n }\r\n _stopConnection(error) {\r\n this._logger.log(LogLevel.Debug, `HttpConnection.stopConnection(${error}) called while in state ${this._connectionState}.`);\r\n this.transport = undefined;\r\n // If we have a stopError, it takes precedence over the error from the transport\r\n error = this._stopError || error;\r\n this._stopError = undefined;\r\n if (this._connectionState === \"Disconnected\" /* Disconnected */) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stopConnection(${error}) was ignored because the connection is already in the disconnected state.`);\r\n return;\r\n }\r\n if (this._connectionState === \"Connecting\" /* Connecting */) {\r\n this._logger.log(LogLevel.Warning, `Call to HttpConnection.stopConnection(${error}) was ignored because the connection is still in the connecting state.`);\r\n throw new Error(`HttpConnection.stopConnection(${error}) was called while the connection is still in the connecting state.`);\r\n }\r\n if (this._connectionState === \"Disconnecting\" /* Disconnecting */) {\r\n // A call to stop() induced this call to stopConnection and needs to be completed.\r\n // Any stop() awaiters will be scheduled to continue after the onclose callback fires.\r\n this._stopPromiseResolver();\r\n }\r\n if (error) {\r\n this._logger.log(LogLevel.Error, `Connection disconnected with error '${error}'.`);\r\n }\r\n else {\r\n this._logger.log(LogLevel.Information, \"Connection disconnected.\");\r\n }\r\n if (this._sendQueue) {\r\n this._sendQueue.stop().catch((e) => {\r\n this._logger.log(LogLevel.Error, `TransportSendQueue.stop() threw error '${e}'.`);\r\n });\r\n this._sendQueue = undefined;\r\n }\r\n this.connectionId = undefined;\r\n this._connectionState = \"Disconnected\" /* Disconnected */;\r\n if (this._connectionStarted) {\r\n this._connectionStarted = false;\r\n try {\r\n if (this.onclose) {\r\n this.onclose(error);\r\n }\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `HttpConnection.onclose(${error}) threw error '${e}'.`);\r\n }\r\n }\r\n }\r\n _resolveUrl(url) {\r\n // startsWith is not supported in IE\r\n if (url.lastIndexOf(\"https://\", 0) === 0 || url.lastIndexOf(\"http://\", 0) === 0) {\r\n return url;\r\n }\r\n if (!Platform.isBrowser) {\r\n throw new Error(`Cannot resolve '${url}'.`);\r\n }\r\n // Setting the url to the href propery of an anchor tag handles normalization\r\n // for us. There are 3 main cases.\r\n // 1. Relative path normalization e.g \"b\" -> \"http://localhost:5000/a/b\"\r\n // 2. Absolute path normalization e.g \"/a/b\" -> \"http://localhost:5000/a/b\"\r\n // 3. Networkpath reference normalization e.g \"//localhost:5000/a/b\" -> \"http://localhost:5000/a/b\"\r\n const aTag = window.document.createElement(\"a\");\r\n aTag.href = url;\r\n this._logger.log(LogLevel.Information, `Normalizing '${url}' to '${aTag.href}'.`);\r\n return aTag.href;\r\n }\r\n _resolveNegotiateUrl(url) {\r\n const index = url.indexOf(\"?\");\r\n let negotiateUrl = url.substring(0, index === -1 ? url.length : index);\r\n if (negotiateUrl[negotiateUrl.length - 1] !== \"/\") {\r\n negotiateUrl += \"/\";\r\n }\r\n negotiateUrl += \"negotiate\";\r\n negotiateUrl += index === -1 ? \"\" : url.substring(index);\r\n if (negotiateUrl.indexOf(\"negotiateVersion\") === -1) {\r\n negotiateUrl += index === -1 ? \"?\" : \"&\";\r\n negotiateUrl += \"negotiateVersion=\" + this._negotiateVersion;\r\n }\r\n return negotiateUrl;\r\n }\r\n}\r\nfunction transportMatches(requestedTransport, actualTransport) {\r\n return !requestedTransport || ((actualTransport & requestedTransport) !== 0);\r\n}\r\n/** @private */\r\nexport class TransportSendQueue {\r\n constructor(_transport) {\r\n this._transport = _transport;\r\n this._buffer = [];\r\n this._executing = true;\r\n this._sendBufferedData = new PromiseSource();\r\n this._transportResult = new PromiseSource();\r\n this._sendLoopPromise = this._sendLoop();\r\n }\r\n send(data) {\r\n this._bufferData(data);\r\n if (!this._transportResult) {\r\n this._transportResult = new PromiseSource();\r\n }\r\n return this._transportResult.promise;\r\n }\r\n stop() {\r\n this._executing = false;\r\n this._sendBufferedData.resolve();\r\n return this._sendLoopPromise;\r\n }\r\n _bufferData(data) {\r\n if (this._buffer.length && typeof (this._buffer[0]) !== typeof (data)) {\r\n throw new Error(`Expected data to be of type ${typeof (this._buffer)} but was of type ${typeof (data)}`);\r\n }\r\n this._buffer.push(data);\r\n this._sendBufferedData.resolve();\r\n }\r\n async _sendLoop() {\r\n while (true) {\r\n await this._sendBufferedData.promise;\r\n if (!this._executing) {\r\n if (this._transportResult) {\r\n this._transportResult.reject(\"Connection stopped.\");\r\n }\r\n break;\r\n }\r\n this._sendBufferedData = new PromiseSource();\r\n const transportResult = this._transportResult;\r\n this._transportResult = undefined;\r\n const data = typeof (this._buffer[0]) === \"string\" ?\r\n this._buffer.join(\"\") :\r\n TransportSendQueue._concatBuffers(this._buffer);\r\n this._buffer.length = 0;\r\n try {\r\n await this._transport.send(data);\r\n transportResult.resolve();\r\n }\r\n catch (error) {\r\n transportResult.reject(error);\r\n }\r\n }\r\n }\r\n static _concatBuffers(arrayBuffers) {\r\n const totalLength = arrayBuffers.map((b) => b.byteLength).reduce((a, b) => a + b);\r\n const result = new Uint8Array(totalLength);\r\n let offset = 0;\r\n for (const item of arrayBuffers) {\r\n result.set(new Uint8Array(item), offset);\r\n offset += item.byteLength;\r\n }\r\n return result.buffer;\r\n }\r\n}\r\nclass PromiseSource {\r\n constructor() {\r\n this.promise = new Promise((resolve, reject) => [this._resolver, this._rejecter] = [resolve, reject]);\r\n }\r\n resolve() {\r\n this._resolver();\r\n }\r\n reject(reason) {\r\n this._rejecter(reason);\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { HandshakeProtocol } from \"./HandshakeProtocol\";\r\nimport { MessageType } from \"./IHubProtocol\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { Subject } from \"./Subject\";\r\nimport { Arg, getErrorString, Platform } from \"./Utils\";\r\nconst DEFAULT_TIMEOUT_IN_MS = 30 * 1000;\r\nconst DEFAULT_PING_INTERVAL_IN_MS = 15 * 1000;\r\n/** Describes the current state of the {@link HubConnection} to the server. */\r\nexport var HubConnectionState;\r\n(function (HubConnectionState) {\r\n /** The hub connection is disconnected. */\r\n HubConnectionState[\"Disconnected\"] = \"Disconnected\";\r\n /** The hub connection is connecting. */\r\n HubConnectionState[\"Connecting\"] = \"Connecting\";\r\n /** The hub connection is connected. */\r\n HubConnectionState[\"Connected\"] = \"Connected\";\r\n /** The hub connection is disconnecting. */\r\n HubConnectionState[\"Disconnecting\"] = \"Disconnecting\";\r\n /** The hub connection is reconnecting. */\r\n HubConnectionState[\"Reconnecting\"] = \"Reconnecting\";\r\n})(HubConnectionState || (HubConnectionState = {}));\r\n/** Represents a connection to a SignalR Hub. */\r\nexport class HubConnection {\r\n constructor(connection, logger, protocol, reconnectPolicy) {\r\n this._nextKeepAlive = 0;\r\n this._freezeEventListener = () => {\r\n this._logger.log(LogLevel.Warning, \"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://docs.microsoft.com/aspnet/core/signalr/javascript-client#bsleep\");\r\n };\r\n Arg.isRequired(connection, \"connection\");\r\n Arg.isRequired(logger, \"logger\");\r\n Arg.isRequired(protocol, \"protocol\");\r\n this.serverTimeoutInMilliseconds = DEFAULT_TIMEOUT_IN_MS;\r\n this.keepAliveIntervalInMilliseconds = DEFAULT_PING_INTERVAL_IN_MS;\r\n this._logger = logger;\r\n this._protocol = protocol;\r\n this.connection = connection;\r\n this._reconnectPolicy = reconnectPolicy;\r\n this._handshakeProtocol = new HandshakeProtocol();\r\n this.connection.onreceive = (data) => this._processIncomingData(data);\r\n this.connection.onclose = (error) => this._connectionClosed(error);\r\n this._callbacks = {};\r\n this._methods = {};\r\n this._closedCallbacks = [];\r\n this._reconnectingCallbacks = [];\r\n this._reconnectedCallbacks = [];\r\n this._invocationId = 0;\r\n this._receivedHandshakeResponse = false;\r\n this._connectionState = HubConnectionState.Disconnected;\r\n this._connectionStarted = false;\r\n this._cachedPingMessage = this._protocol.writeMessage({ type: MessageType.Ping });\r\n }\r\n /** @internal */\r\n // Using a public static factory method means we can have a private constructor and an _internal_\r\n // create method that can be used by HubConnectionBuilder. An \"internal\" constructor would just\r\n // be stripped away and the '.d.ts' file would have no constructor, which is interpreted as a\r\n // public parameter-less constructor.\r\n static create(connection, logger, protocol, reconnectPolicy) {\r\n return new HubConnection(connection, logger, protocol, reconnectPolicy);\r\n }\r\n /** Indicates the state of the {@link HubConnection} to the server. */\r\n get state() {\r\n return this._connectionState;\r\n }\r\n /** Represents the connection id of the {@link HubConnection} on the server. The connection id will be null when the connection is either\r\n * in the disconnected state or if the negotiation step was skipped.\r\n */\r\n get connectionId() {\r\n return this.connection ? (this.connection.connectionId || null) : null;\r\n }\r\n /** Indicates the url of the {@link HubConnection} to the server. */\r\n get baseUrl() {\r\n return this.connection.baseUrl || \"\";\r\n }\r\n /**\r\n * Sets a new url for the HubConnection. Note that the url can only be changed when the connection is in either the Disconnected or\r\n * Reconnecting states.\r\n * @param {string} url The url to connect to.\r\n */\r\n set baseUrl(url) {\r\n if (this._connectionState !== HubConnectionState.Disconnected && this._connectionState !== HubConnectionState.Reconnecting) {\r\n throw new Error(\"The HubConnection must be in the Disconnected or Reconnecting state to change the url.\");\r\n }\r\n if (!url) {\r\n throw new Error(\"The HubConnection url must be a valid url.\");\r\n }\r\n this.connection.baseUrl = url;\r\n }\r\n /** Starts the connection.\r\n *\r\n * @returns {Promise} A Promise that resolves when the connection has been successfully established, or rejects with an error.\r\n */\r\n start() {\r\n this._startPromise = this._startWithStateTransitions();\r\n return this._startPromise;\r\n }\r\n async _startWithStateTransitions() {\r\n if (this._connectionState !== HubConnectionState.Disconnected) {\r\n return Promise.reject(new Error(\"Cannot start a HubConnection that is not in the 'Disconnected' state.\"));\r\n }\r\n this._connectionState = HubConnectionState.Connecting;\r\n this._logger.log(LogLevel.Debug, \"Starting HubConnection.\");\r\n try {\r\n await this._startInternal();\r\n if (Platform.isBrowser) {\r\n // Log when the browser freezes the tab so users know why their connection unexpectedly stopped working\r\n window.document.addEventListener(\"freeze\", this._freezeEventListener);\r\n }\r\n this._connectionState = HubConnectionState.Connected;\r\n this._connectionStarted = true;\r\n this._logger.log(LogLevel.Debug, \"HubConnection connected successfully.\");\r\n }\r\n catch (e) {\r\n this._connectionState = HubConnectionState.Disconnected;\r\n this._logger.log(LogLevel.Debug, `HubConnection failed to start successfully because of error '${e}'.`);\r\n return Promise.reject(e);\r\n }\r\n }\r\n async _startInternal() {\r\n this._stopDuringStartError = undefined;\r\n this._receivedHandshakeResponse = false;\r\n // Set up the promise before any connection is (re)started otherwise it could race with received messages\r\n const handshakePromise = new Promise((resolve, reject) => {\r\n this._handshakeResolver = resolve;\r\n this._handshakeRejecter = reject;\r\n });\r\n await this.connection.start(this._protocol.transferFormat);\r\n try {\r\n const handshakeRequest = {\r\n protocol: this._protocol.name,\r\n version: this._protocol.version,\r\n };\r\n this._logger.log(LogLevel.Debug, \"Sending handshake request.\");\r\n await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(handshakeRequest));\r\n this._logger.log(LogLevel.Information, `Using HubProtocol '${this._protocol.name}'.`);\r\n // defensively cleanup timeout in case we receive a message from the server before we finish start\r\n this._cleanupTimeout();\r\n this._resetTimeoutPeriod();\r\n this._resetKeepAliveInterval();\r\n await handshakePromise;\r\n // It's important to check the stopDuringStartError instead of just relying on the handshakePromise\r\n // being rejected on close, because this continuation can run after both the handshake completed successfully\r\n // and the connection was closed.\r\n if (this._stopDuringStartError) {\r\n // It's important to throw instead of returning a rejected promise, because we don't want to allow any state\r\n // transitions to occur between now and the calling code observing the exceptions. Returning a rejected promise\r\n // will cause the calling continuation to get scheduled to run later.\r\n // eslint-disable-next-line @typescript-eslint/no-throw-literal\r\n throw this._stopDuringStartError;\r\n }\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Debug, `Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`);\r\n this._cleanupTimeout();\r\n this._cleanupPingTimer();\r\n // HttpConnection.stop() should not complete until after the onclose callback is invoked.\r\n // This will transition the HubConnection to the disconnected state before HttpConnection.stop() completes.\r\n await this.connection.stop(e);\r\n throw e;\r\n }\r\n }\r\n /** Stops the connection.\r\n *\r\n * @returns {Promise} A Promise that resolves when the connection has been successfully terminated, or rejects with an error.\r\n */\r\n async stop() {\r\n // Capture the start promise before the connection might be restarted in an onclose callback.\r\n const startPromise = this._startPromise;\r\n this._stopPromise = this._stopInternal();\r\n await this._stopPromise;\r\n try {\r\n // Awaiting undefined continues immediately\r\n await startPromise;\r\n }\r\n catch (e) {\r\n // This exception is returned to the user as a rejected Promise from the start method.\r\n }\r\n }\r\n _stopInternal(error) {\r\n if (this._connectionState === HubConnectionState.Disconnected) {\r\n this._logger.log(LogLevel.Debug, `Call to HubConnection.stop(${error}) ignored because it is already in the disconnected state.`);\r\n return Promise.resolve();\r\n }\r\n if (this._connectionState === HubConnectionState.Disconnecting) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnecting state.`);\r\n return this._stopPromise;\r\n }\r\n this._connectionState = HubConnectionState.Disconnecting;\r\n this._logger.log(LogLevel.Debug, \"Stopping HubConnection.\");\r\n if (this._reconnectDelayHandle) {\r\n // We're in a reconnect delay which means the underlying connection is currently already stopped.\r\n // Just clear the handle to stop the reconnect loop (which no one is waiting on thankfully) and\r\n // fire the onclose callbacks.\r\n this._logger.log(LogLevel.Debug, \"Connection stopped during reconnect delay. Done reconnecting.\");\r\n clearTimeout(this._reconnectDelayHandle);\r\n this._reconnectDelayHandle = undefined;\r\n this._completeClose();\r\n return Promise.resolve();\r\n }\r\n this._cleanupTimeout();\r\n this._cleanupPingTimer();\r\n this._stopDuringStartError = error || new Error(\"The connection was stopped before the hub handshake could complete.\");\r\n // HttpConnection.stop() should not complete until after either HttpConnection.start() fails\r\n // or the onclose callback is invoked. The onclose callback will transition the HubConnection\r\n // to the disconnected state if need be before HttpConnection.stop() completes.\r\n return this.connection.stop(error);\r\n }\r\n /** Invokes a streaming hub method on the server using the specified name and arguments.\r\n *\r\n * @typeparam T The type of the items returned by the server.\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {IStreamResult} An object that yields results from the server as they are received.\r\n */\r\n stream(methodName, ...args) {\r\n const [streams, streamIds] = this._replaceStreamingParams(args);\r\n const invocationDescriptor = this._createStreamInvocation(methodName, args, streamIds);\r\n // eslint-disable-next-line prefer-const\r\n let promiseQueue;\r\n const subject = new Subject();\r\n subject.cancelCallback = () => {\r\n const cancelInvocation = this._createCancelInvocation(invocationDescriptor.invocationId);\r\n delete this._callbacks[invocationDescriptor.invocationId];\r\n return promiseQueue.then(() => {\r\n return this._sendWithProtocol(cancelInvocation);\r\n });\r\n };\r\n this._callbacks[invocationDescriptor.invocationId] = (invocationEvent, error) => {\r\n if (error) {\r\n subject.error(error);\r\n return;\r\n }\r\n else if (invocationEvent) {\r\n // invocationEvent will not be null when an error is not passed to the callback\r\n if (invocationEvent.type === MessageType.Completion) {\r\n if (invocationEvent.error) {\r\n subject.error(new Error(invocationEvent.error));\r\n }\r\n else {\r\n subject.complete();\r\n }\r\n }\r\n else {\r\n subject.next((invocationEvent.item));\r\n }\r\n }\r\n };\r\n promiseQueue = this._sendWithProtocol(invocationDescriptor)\r\n .catch((e) => {\r\n subject.error(e);\r\n delete this._callbacks[invocationDescriptor.invocationId];\r\n });\r\n this._launchStreams(streams, promiseQueue);\r\n return subject;\r\n }\r\n _sendMessage(message) {\r\n this._resetKeepAliveInterval();\r\n return this.connection.send(message);\r\n }\r\n /**\r\n * Sends a js object to the server.\r\n * @param message The js object to serialize and send.\r\n */\r\n _sendWithProtocol(message) {\r\n return this._sendMessage(this._protocol.writeMessage(message));\r\n }\r\n /** Invokes a hub method on the server using the specified name and arguments. Does not wait for a response from the receiver.\r\n *\r\n * The Promise returned by this method resolves when the client has sent the invocation to the server. The server may still\r\n * be processing the invocation.\r\n *\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {Promise} A Promise that resolves when the invocation has been successfully sent, or rejects with an error.\r\n */\r\n send(methodName, ...args) {\r\n const [streams, streamIds] = this._replaceStreamingParams(args);\r\n const sendPromise = this._sendWithProtocol(this._createInvocation(methodName, args, true, streamIds));\r\n this._launchStreams(streams, sendPromise);\r\n return sendPromise;\r\n }\r\n /** Invokes a hub method on the server using the specified name and arguments.\r\n *\r\n * The Promise returned by this method resolves when the server indicates it has finished invoking the method. When the promise\r\n * resolves, the server has finished invoking the method. If the server method returns a result, it is produced as the result of\r\n * resolving the Promise.\r\n *\r\n * @typeparam T The expected return type.\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {Promise} A Promise that resolves with the result of the server method (if any), or rejects with an error.\r\n */\r\n invoke(methodName, ...args) {\r\n const [streams, streamIds] = this._replaceStreamingParams(args);\r\n const invocationDescriptor = this._createInvocation(methodName, args, false, streamIds);\r\n const p = new Promise((resolve, reject) => {\r\n // invocationId will always have a value for a non-blocking invocation\r\n this._callbacks[invocationDescriptor.invocationId] = (invocationEvent, error) => {\r\n if (error) {\r\n reject(error);\r\n return;\r\n }\r\n else if (invocationEvent) {\r\n // invocationEvent will not be null when an error is not passed to the callback\r\n if (invocationEvent.type === MessageType.Completion) {\r\n if (invocationEvent.error) {\r\n reject(new Error(invocationEvent.error));\r\n }\r\n else {\r\n resolve(invocationEvent.result);\r\n }\r\n }\r\n else {\r\n reject(new Error(`Unexpected message type: ${invocationEvent.type}`));\r\n }\r\n }\r\n };\r\n const promiseQueue = this._sendWithProtocol(invocationDescriptor)\r\n .catch((e) => {\r\n reject(e);\r\n // invocationId will always have a value for a non-blocking invocation\r\n delete this._callbacks[invocationDescriptor.invocationId];\r\n });\r\n this._launchStreams(streams, promiseQueue);\r\n });\r\n return p;\r\n }\r\n /** Registers a handler that will be invoked when the hub method with the specified method name is invoked.\r\n *\r\n * @param {string} methodName The name of the hub method to define.\r\n * @param {Function} newMethod The handler that will be raised when the hub method is invoked.\r\n */\r\n on(methodName, newMethod) {\r\n if (!methodName || !newMethod) {\r\n return;\r\n }\r\n methodName = methodName.toLowerCase();\r\n if (!this._methods[methodName]) {\r\n this._methods[methodName] = [];\r\n }\r\n // Preventing adding the same handler multiple times.\r\n if (this._methods[methodName].indexOf(newMethod) !== -1) {\r\n return;\r\n }\r\n this._methods[methodName].push(newMethod);\r\n }\r\n off(methodName, method) {\r\n if (!methodName) {\r\n return;\r\n }\r\n methodName = methodName.toLowerCase();\r\n const handlers = this._methods[methodName];\r\n if (!handlers) {\r\n return;\r\n }\r\n if (method) {\r\n const removeIdx = handlers.indexOf(method);\r\n if (removeIdx !== -1) {\r\n handlers.splice(removeIdx, 1);\r\n if (handlers.length === 0) {\r\n delete this._methods[methodName];\r\n }\r\n }\r\n }\r\n else {\r\n delete this._methods[methodName];\r\n }\r\n }\r\n /** Registers a handler that will be invoked when the connection is closed.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection is closed. Optionally receives a single argument containing the error that caused the connection to close (if any).\r\n */\r\n onclose(callback) {\r\n if (callback) {\r\n this._closedCallbacks.push(callback);\r\n }\r\n }\r\n /** Registers a handler that will be invoked when the connection starts reconnecting.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection starts reconnecting. Optionally receives a single argument containing the error that caused the connection to start reconnecting (if any).\r\n */\r\n onreconnecting(callback) {\r\n if (callback) {\r\n this._reconnectingCallbacks.push(callback);\r\n }\r\n }\r\n /** Registers a handler that will be invoked when the connection successfully reconnects.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection successfully reconnects.\r\n */\r\n onreconnected(callback) {\r\n if (callback) {\r\n this._reconnectedCallbacks.push(callback);\r\n }\r\n }\r\n _processIncomingData(data) {\r\n this._cleanupTimeout();\r\n if (!this._receivedHandshakeResponse) {\r\n data = this._processHandshakeResponse(data);\r\n this._receivedHandshakeResponse = true;\r\n }\r\n // Data may have all been read when processing handshake response\r\n if (data) {\r\n // Parse the messages\r\n const messages = this._protocol.parseMessages(data, this._logger);\r\n for (const message of messages) {\r\n switch (message.type) {\r\n case MessageType.Invocation:\r\n this._invokeClientMethod(message);\r\n break;\r\n case MessageType.StreamItem:\r\n case MessageType.Completion: {\r\n const callback = this._callbacks[message.invocationId];\r\n if (callback) {\r\n if (message.type === MessageType.Completion) {\r\n delete this._callbacks[message.invocationId];\r\n }\r\n try {\r\n callback(message);\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `Stream callback threw error: ${getErrorString(e)}`);\r\n }\r\n }\r\n break;\r\n }\r\n case MessageType.Ping:\r\n // Don't care about pings\r\n break;\r\n case MessageType.Close: {\r\n this._logger.log(LogLevel.Information, \"Close message received from server.\");\r\n const error = message.error ? new Error(\"Server returned an error on close: \" + message.error) : undefined;\r\n if (message.allowReconnect === true) {\r\n // It feels wrong not to await connection.stop() here, but processIncomingData is called as part of an onreceive callback which is not async,\r\n // this is already the behavior for serverTimeout(), and HttpConnection.Stop() should catch and log all possible exceptions.\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.connection.stop(error);\r\n }\r\n else {\r\n // We cannot await stopInternal() here, but subsequent calls to stop() will await this if stopInternal() is still ongoing.\r\n this._stopPromise = this._stopInternal(error);\r\n }\r\n break;\r\n }\r\n default:\r\n this._logger.log(LogLevel.Warning, `Invalid message type: ${message.type}.`);\r\n break;\r\n }\r\n }\r\n }\r\n this._resetTimeoutPeriod();\r\n }\r\n _processHandshakeResponse(data) {\r\n let responseMessage;\r\n let remainingData;\r\n try {\r\n [remainingData, responseMessage] = this._handshakeProtocol.parseHandshakeResponse(data);\r\n }\r\n catch (e) {\r\n const message = \"Error parsing handshake response: \" + e;\r\n this._logger.log(LogLevel.Error, message);\r\n const error = new Error(message);\r\n this._handshakeRejecter(error);\r\n throw error;\r\n }\r\n if (responseMessage.error) {\r\n const message = \"Server returned handshake error: \" + responseMessage.error;\r\n this._logger.log(LogLevel.Error, message);\r\n const error = new Error(message);\r\n this._handshakeRejecter(error);\r\n throw error;\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, \"Server handshake complete.\");\r\n }\r\n this._handshakeResolver();\r\n return remainingData;\r\n }\r\n _resetKeepAliveInterval() {\r\n if (this.connection.features.inherentKeepAlive) {\r\n return;\r\n }\r\n // Set the time we want the next keep alive to be sent\r\n // Timer will be setup on next message receive\r\n this._nextKeepAlive = new Date().getTime() + this.keepAliveIntervalInMilliseconds;\r\n this._cleanupPingTimer();\r\n }\r\n _resetTimeoutPeriod() {\r\n if (!this.connection.features || !this.connection.features.inherentKeepAlive) {\r\n // Set the timeout timer\r\n this._timeoutHandle = setTimeout(() => this.serverTimeout(), this.serverTimeoutInMilliseconds);\r\n // Set keepAlive timer if there isn't one\r\n if (this._pingServerHandle === undefined) {\r\n let nextPing = this._nextKeepAlive - new Date().getTime();\r\n if (nextPing < 0) {\r\n nextPing = 0;\r\n }\r\n // The timer needs to be set from a networking callback to avoid Chrome timer throttling from causing timers to run once a minute\r\n this._pingServerHandle = setTimeout(async () => {\r\n if (this._connectionState === HubConnectionState.Connected) {\r\n try {\r\n await this._sendMessage(this._cachedPingMessage);\r\n }\r\n catch {\r\n // We don't care about the error. It should be seen elsewhere in the client.\r\n // The connection is probably in a bad or closed state now, cleanup the timer so it stops triggering\r\n this._cleanupPingTimer();\r\n }\r\n }\r\n }, nextPing);\r\n }\r\n }\r\n }\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n serverTimeout() {\r\n // The server hasn't talked to us in a while. It doesn't like us anymore ... :(\r\n // Terminate the connection, but we don't need to wait on the promise. This could trigger reconnecting.\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.connection.stop(new Error(\"Server timeout elapsed without receiving a message from the server.\"));\r\n }\r\n _invokeClientMethod(invocationMessage) {\r\n const methods = this._methods[invocationMessage.target.toLowerCase()];\r\n if (methods) {\r\n try {\r\n methods.forEach((m) => m.apply(this, invocationMessage.arguments));\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `A callback for the method ${invocationMessage.target.toLowerCase()} threw error '${e}'.`);\r\n }\r\n if (invocationMessage.invocationId) {\r\n // This is not supported in v1. So we return an error to avoid blocking the server waiting for the response.\r\n const message = \"Server requested a response, which is not supported in this version of the client.\";\r\n this._logger.log(LogLevel.Error, message);\r\n // We don't want to wait on the stop itself.\r\n this._stopPromise = this._stopInternal(new Error(message));\r\n }\r\n }\r\n else {\r\n this._logger.log(LogLevel.Warning, `No client method with the name '${invocationMessage.target}' found.`);\r\n }\r\n }\r\n _connectionClosed(error) {\r\n this._logger.log(LogLevel.Debug, `HubConnection.connectionClosed(${error}) called while in state ${this._connectionState}.`);\r\n // Triggering this.handshakeRejecter is insufficient because it could already be resolved without the continuation having run yet.\r\n this._stopDuringStartError = this._stopDuringStartError || error || new Error(\"The underlying connection was closed before the hub handshake could complete.\");\r\n // If the handshake is in progress, start will be waiting for the handshake promise, so we complete it.\r\n // If it has already completed, this should just noop.\r\n if (this._handshakeResolver) {\r\n this._handshakeResolver();\r\n }\r\n this._cancelCallbacksWithError(error || new Error(\"Invocation canceled due to the underlying connection being closed.\"));\r\n this._cleanupTimeout();\r\n this._cleanupPingTimer();\r\n if (this._connectionState === HubConnectionState.Disconnecting) {\r\n this._completeClose(error);\r\n }\r\n else if (this._connectionState === HubConnectionState.Connected && this._reconnectPolicy) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this._reconnect(error);\r\n }\r\n else if (this._connectionState === HubConnectionState.Connected) {\r\n this._completeClose(error);\r\n }\r\n // If none of the above if conditions were true were called the HubConnection must be in either:\r\n // 1. The Connecting state in which case the handshakeResolver will complete it and stopDuringStartError will fail it.\r\n // 2. The Reconnecting state in which case the handshakeResolver will complete it and stopDuringStartError will fail the current reconnect attempt\r\n // and potentially continue the reconnect() loop.\r\n // 3. The Disconnected state in which case we're already done.\r\n }\r\n _completeClose(error) {\r\n if (this._connectionStarted) {\r\n this._connectionState = HubConnectionState.Disconnected;\r\n this._connectionStarted = false;\r\n if (Platform.isBrowser) {\r\n window.document.removeEventListener(\"freeze\", this._freezeEventListener);\r\n }\r\n try {\r\n this._closedCallbacks.forEach((c) => c.apply(this, [error]));\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `An onclose callback called with error '${error}' threw error '${e}'.`);\r\n }\r\n }\r\n }\r\n async _reconnect(error) {\r\n const reconnectStartTime = Date.now();\r\n let previousReconnectAttempts = 0;\r\n let retryError = error !== undefined ? error : new Error(\"Attempting to reconnect due to a unknown error.\");\r\n let nextRetryDelay = this._getNextRetryDelay(previousReconnectAttempts++, 0, retryError);\r\n if (nextRetryDelay === null) {\r\n this._logger.log(LogLevel.Debug, \"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt.\");\r\n this._completeClose(error);\r\n return;\r\n }\r\n this._connectionState = HubConnectionState.Reconnecting;\r\n if (error) {\r\n this._logger.log(LogLevel.Information, `Connection reconnecting because of error '${error}'.`);\r\n }\r\n else {\r\n this._logger.log(LogLevel.Information, \"Connection reconnecting.\");\r\n }\r\n if (this._reconnectingCallbacks.length !== 0) {\r\n try {\r\n this._reconnectingCallbacks.forEach((c) => c.apply(this, [error]));\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `An onreconnecting callback called with error '${error}' threw error '${e}'.`);\r\n }\r\n // Exit early if an onreconnecting callback called connection.stop().\r\n if (this._connectionState !== HubConnectionState.Reconnecting) {\r\n this._logger.log(LogLevel.Debug, \"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.\");\r\n return;\r\n }\r\n }\r\n while (nextRetryDelay !== null) {\r\n this._logger.log(LogLevel.Information, `Reconnect attempt number ${previousReconnectAttempts} will start in ${nextRetryDelay} ms.`);\r\n await new Promise((resolve) => {\r\n this._reconnectDelayHandle = setTimeout(resolve, nextRetryDelay);\r\n });\r\n this._reconnectDelayHandle = undefined;\r\n if (this._connectionState !== HubConnectionState.Reconnecting) {\r\n this._logger.log(LogLevel.Debug, \"Connection left the reconnecting state during reconnect delay. Done reconnecting.\");\r\n return;\r\n }\r\n try {\r\n await this._startInternal();\r\n this._connectionState = HubConnectionState.Connected;\r\n this._logger.log(LogLevel.Information, \"HubConnection reconnected successfully.\");\r\n if (this._reconnectedCallbacks.length !== 0) {\r\n try {\r\n this._reconnectedCallbacks.forEach((c) => c.apply(this, [this.connection.connectionId]));\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`);\r\n }\r\n }\r\n return;\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Information, `Reconnect attempt failed because of error '${e}'.`);\r\n if (this._connectionState !== HubConnectionState.Reconnecting) {\r\n this._logger.log(LogLevel.Debug, `Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`);\r\n // The TypeScript compiler thinks that connectionState must be Connected here. The TypeScript compiler is wrong.\r\n if (this._connectionState === HubConnectionState.Disconnecting) {\r\n this._completeClose();\r\n }\r\n return;\r\n }\r\n retryError = e instanceof Error ? e : new Error(e.toString());\r\n nextRetryDelay = this._getNextRetryDelay(previousReconnectAttempts++, Date.now() - reconnectStartTime, retryError);\r\n }\r\n }\r\n this._logger.log(LogLevel.Information, `Reconnect retries have been exhausted after ${Date.now() - reconnectStartTime} ms and ${previousReconnectAttempts} failed attempts. Connection disconnecting.`);\r\n this._completeClose();\r\n }\r\n _getNextRetryDelay(previousRetryCount, elapsedMilliseconds, retryReason) {\r\n try {\r\n return this._reconnectPolicy.nextRetryDelayInMilliseconds({\r\n elapsedMilliseconds,\r\n previousRetryCount,\r\n retryReason,\r\n });\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `IRetryPolicy.nextRetryDelayInMilliseconds(${previousRetryCount}, ${elapsedMilliseconds}) threw error '${e}'.`);\r\n return null;\r\n }\r\n }\r\n _cancelCallbacksWithError(error) {\r\n const callbacks = this._callbacks;\r\n this._callbacks = {};\r\n Object.keys(callbacks)\r\n .forEach((key) => {\r\n const callback = callbacks[key];\r\n try {\r\n callback(null, error);\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `Stream 'error' callback called with '${error}' threw error: ${getErrorString(e)}`);\r\n }\r\n });\r\n }\r\n _cleanupPingTimer() {\r\n if (this._pingServerHandle) {\r\n clearTimeout(this._pingServerHandle);\r\n this._pingServerHandle = undefined;\r\n }\r\n }\r\n _cleanupTimeout() {\r\n if (this._timeoutHandle) {\r\n clearTimeout(this._timeoutHandle);\r\n }\r\n }\r\n _createInvocation(methodName, args, nonblocking, streamIds) {\r\n if (nonblocking) {\r\n if (streamIds.length !== 0) {\r\n return {\r\n arguments: args,\r\n streamIds,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n else {\r\n return {\r\n arguments: args,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n }\r\n else {\r\n const invocationId = this._invocationId;\r\n this._invocationId++;\r\n if (streamIds.length !== 0) {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n streamIds,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n else {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n }\r\n }\r\n _launchStreams(streams, promiseQueue) {\r\n if (streams.length === 0) {\r\n return;\r\n }\r\n // Synchronize stream data so they arrive in-order on the server\r\n if (!promiseQueue) {\r\n promiseQueue = Promise.resolve();\r\n }\r\n // We want to iterate over the keys, since the keys are the stream ids\r\n // eslint-disable-next-line guard-for-in\r\n for (const streamId in streams) {\r\n streams[streamId].subscribe({\r\n complete: () => {\r\n promiseQueue = promiseQueue.then(() => this._sendWithProtocol(this._createCompletionMessage(streamId)));\r\n },\r\n error: (err) => {\r\n let message;\r\n if (err instanceof Error) {\r\n message = err.message;\r\n }\r\n else if (err && err.toString) {\r\n message = err.toString();\r\n }\r\n else {\r\n message = \"Unknown error\";\r\n }\r\n promiseQueue = promiseQueue.then(() => this._sendWithProtocol(this._createCompletionMessage(streamId, message)));\r\n },\r\n next: (item) => {\r\n promiseQueue = promiseQueue.then(() => this._sendWithProtocol(this._createStreamItemMessage(streamId, item)));\r\n },\r\n });\r\n }\r\n }\r\n _replaceStreamingParams(args) {\r\n const streams = [];\r\n const streamIds = [];\r\n for (let i = 0; i < args.length; i++) {\r\n const argument = args[i];\r\n if (this._isObservable(argument)) {\r\n const streamId = this._invocationId;\r\n this._invocationId++;\r\n // Store the stream for later use\r\n streams[streamId] = argument;\r\n streamIds.push(streamId.toString());\r\n // remove stream from args\r\n args.splice(i, 1);\r\n }\r\n }\r\n return [streams, streamIds];\r\n }\r\n _isObservable(arg) {\r\n // This allows other stream implementations to just work (like rxjs)\r\n return arg && arg.subscribe && typeof arg.subscribe === \"function\";\r\n }\r\n _createStreamInvocation(methodName, args, streamIds) {\r\n const invocationId = this._invocationId;\r\n this._invocationId++;\r\n if (streamIds.length !== 0) {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n streamIds,\r\n target: methodName,\r\n type: MessageType.StreamInvocation,\r\n };\r\n }\r\n else {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n target: methodName,\r\n type: MessageType.StreamInvocation,\r\n };\r\n }\r\n }\r\n _createCancelInvocation(id) {\r\n return {\r\n invocationId: id,\r\n type: MessageType.CancelInvocation,\r\n };\r\n }\r\n _createStreamItemMessage(id, item) {\r\n return {\r\n invocationId: id,\r\n item,\r\n type: MessageType.StreamItem,\r\n };\r\n }\r\n _createCompletionMessage(id, error, result) {\r\n if (error) {\r\n return {\r\n error,\r\n invocationId: id,\r\n type: MessageType.Completion,\r\n };\r\n }\r\n return {\r\n invocationId: id,\r\n result,\r\n type: MessageType.Completion,\r\n };\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { DefaultReconnectPolicy } from \"./DefaultReconnectPolicy\";\r\nimport { HttpConnection } from \"./HttpConnection\";\r\nimport { HubConnection } from \"./HubConnection\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { JsonHubProtocol } from \"./JsonHubProtocol\";\r\nimport { NullLogger } from \"./Loggers\";\r\nimport { Arg, ConsoleLogger } from \"./Utils\";\r\nconst LogLevelNameMapping = {\r\n trace: LogLevel.Trace,\r\n debug: LogLevel.Debug,\r\n info: LogLevel.Information,\r\n information: LogLevel.Information,\r\n warn: LogLevel.Warning,\r\n warning: LogLevel.Warning,\r\n error: LogLevel.Error,\r\n critical: LogLevel.Critical,\r\n none: LogLevel.None,\r\n};\r\nfunction parseLogLevel(name) {\r\n // Case-insensitive matching via lower-casing\r\n // Yes, I know case-folding is a complicated problem in Unicode, but we only support\r\n // the ASCII strings defined in LogLevelNameMapping anyway, so it's fine -anurse.\r\n const mapping = LogLevelNameMapping[name.toLowerCase()];\r\n if (typeof mapping !== \"undefined\") {\r\n return mapping;\r\n }\r\n else {\r\n throw new Error(`Unknown log level: ${name}`);\r\n }\r\n}\r\n/** A builder for configuring {@link @microsoft/signalr.HubConnection} instances. */\r\nexport class HubConnectionBuilder {\r\n configureLogging(logging) {\r\n Arg.isRequired(logging, \"logging\");\r\n if (isLogger(logging)) {\r\n this.logger = logging;\r\n }\r\n else if (typeof logging === \"string\") {\r\n const logLevel = parseLogLevel(logging);\r\n this.logger = new ConsoleLogger(logLevel);\r\n }\r\n else {\r\n this.logger = new ConsoleLogger(logging);\r\n }\r\n return this;\r\n }\r\n withUrl(url, transportTypeOrOptions) {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isNotEmpty(url, \"url\");\r\n this.url = url;\r\n // Flow-typing knows where it's at. Since HttpTransportType is a number and IHttpConnectionOptions is guaranteed\r\n // to be an object, we know (as does TypeScript) this comparison is all we need to figure out which overload was called.\r\n if (typeof transportTypeOrOptions === \"object\") {\r\n this.httpConnectionOptions = { ...this.httpConnectionOptions, ...transportTypeOrOptions };\r\n }\r\n else {\r\n this.httpConnectionOptions = {\r\n ...this.httpConnectionOptions,\r\n transport: transportTypeOrOptions,\r\n };\r\n }\r\n return this;\r\n }\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to use the specified Hub Protocol.\r\n *\r\n * @param {IHubProtocol} protocol The {@link @microsoft/signalr.IHubProtocol} implementation to use.\r\n */\r\n withHubProtocol(protocol) {\r\n Arg.isRequired(protocol, \"protocol\");\r\n this.protocol = protocol;\r\n return this;\r\n }\r\n withAutomaticReconnect(retryDelaysOrReconnectPolicy) {\r\n if (this.reconnectPolicy) {\r\n throw new Error(\"A reconnectPolicy has already been set.\");\r\n }\r\n if (!retryDelaysOrReconnectPolicy) {\r\n this.reconnectPolicy = new DefaultReconnectPolicy();\r\n }\r\n else if (Array.isArray(retryDelaysOrReconnectPolicy)) {\r\n this.reconnectPolicy = new DefaultReconnectPolicy(retryDelaysOrReconnectPolicy);\r\n }\r\n else {\r\n this.reconnectPolicy = retryDelaysOrReconnectPolicy;\r\n }\r\n return this;\r\n }\r\n /** Creates a {@link @microsoft/signalr.HubConnection} from the configuration options specified in this builder.\r\n *\r\n * @returns {HubConnection} The configured {@link @microsoft/signalr.HubConnection}.\r\n */\r\n build() {\r\n // If httpConnectionOptions has a logger, use it. Otherwise, override it with the one\r\n // provided to configureLogger\r\n const httpConnectionOptions = this.httpConnectionOptions || {};\r\n // If it's 'null', the user **explicitly** asked for null, don't mess with it.\r\n if (httpConnectionOptions.logger === undefined) {\r\n // If our logger is undefined or null, that's OK, the HttpConnection constructor will handle it.\r\n httpConnectionOptions.logger = this.logger;\r\n }\r\n // Now create the connection\r\n if (!this.url) {\r\n throw new Error(\"The 'HubConnectionBuilder.withUrl' method must be called before building the connection.\");\r\n }\r\n const connection = new HttpConnection(this.url, httpConnectionOptions);\r\n return HubConnection.create(connection, this.logger || NullLogger.instance, this.protocol || new JsonHubProtocol(), this.reconnectPolicy);\r\n }\r\n}\r\nfunction isLogger(logger) {\r\n return logger.log !== undefined;\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n/** Defines the type of a Hub Message. */\r\nexport var MessageType;\r\n(function (MessageType) {\r\n /** Indicates the message is an Invocation message and implements the {@link @microsoft/signalr.InvocationMessage} interface. */\r\n MessageType[MessageType[\"Invocation\"] = 1] = \"Invocation\";\r\n /** Indicates the message is a StreamItem message and implements the {@link @microsoft/signalr.StreamItemMessage} interface. */\r\n MessageType[MessageType[\"StreamItem\"] = 2] = \"StreamItem\";\r\n /** Indicates the message is a Completion message and implements the {@link @microsoft/signalr.CompletionMessage} interface. */\r\n MessageType[MessageType[\"Completion\"] = 3] = \"Completion\";\r\n /** Indicates the message is a Stream Invocation message and implements the {@link @microsoft/signalr.StreamInvocationMessage} interface. */\r\n MessageType[MessageType[\"StreamInvocation\"] = 4] = \"StreamInvocation\";\r\n /** Indicates the message is a Cancel Invocation message and implements the {@link @microsoft/signalr.CancelInvocationMessage} interface. */\r\n MessageType[MessageType[\"CancelInvocation\"] = 5] = \"CancelInvocation\";\r\n /** Indicates the message is a Ping message and implements the {@link @microsoft/signalr.PingMessage} interface. */\r\n MessageType[MessageType[\"Ping\"] = 6] = \"Ping\";\r\n /** Indicates the message is a Close message and implements the {@link @microsoft/signalr.CloseMessage} interface. */\r\n MessageType[MessageType[\"Close\"] = 7] = \"Close\";\r\n})(MessageType || (MessageType = {}));\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// These values are designed to match the ASP.NET Log Levels since that's the pattern we're emulating here.\r\n/** Indicates the severity of a log message.\r\n *\r\n * Log Levels are ordered in increasing severity. So `Debug` is more severe than `Trace`, etc.\r\n */\r\nexport var LogLevel;\r\n(function (LogLevel) {\r\n /** Log level for very low severity diagnostic messages. */\r\n LogLevel[LogLevel[\"Trace\"] = 0] = \"Trace\";\r\n /** Log level for low severity diagnostic messages. */\r\n LogLevel[LogLevel[\"Debug\"] = 1] = \"Debug\";\r\n /** Log level for informational diagnostic messages. */\r\n LogLevel[LogLevel[\"Information\"] = 2] = \"Information\";\r\n /** Log level for diagnostic messages that indicate a non-fatal problem. */\r\n LogLevel[LogLevel[\"Warning\"] = 3] = \"Warning\";\r\n /** Log level for diagnostic messages that indicate a failure in the current operation. */\r\n LogLevel[LogLevel[\"Error\"] = 4] = \"Error\";\r\n /** Log level for diagnostic messages that indicate a failure that will terminate the entire application. */\r\n LogLevel[LogLevel[\"Critical\"] = 5] = \"Critical\";\r\n /** The highest possible log level. Used when configuring logging to indicate that no log messages should be emitted. */\r\n LogLevel[LogLevel[\"None\"] = 6] = \"None\";\r\n})(LogLevel || (LogLevel = {}));\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// This will be treated as a bit flag in the future, so we keep it using power-of-two values.\r\n/** Specifies a specific HTTP transport type. */\r\nexport var HttpTransportType;\r\n(function (HttpTransportType) {\r\n /** Specifies no transport preference. */\r\n HttpTransportType[HttpTransportType[\"None\"] = 0] = \"None\";\r\n /** Specifies the WebSockets transport. */\r\n HttpTransportType[HttpTransportType[\"WebSockets\"] = 1] = \"WebSockets\";\r\n /** Specifies the Server-Sent Events transport. */\r\n HttpTransportType[HttpTransportType[\"ServerSentEvents\"] = 2] = \"ServerSentEvents\";\r\n /** Specifies the Long Polling transport. */\r\n HttpTransportType[HttpTransportType[\"LongPolling\"] = 4] = \"LongPolling\";\r\n})(HttpTransportType || (HttpTransportType = {}));\r\n/** Specifies the transfer format for a connection. */\r\nexport var TransferFormat;\r\n(function (TransferFormat) {\r\n /** Specifies that only text data will be transmitted over the connection. */\r\n TransferFormat[TransferFormat[\"Text\"] = 1] = \"Text\";\r\n /** Specifies that binary data will be transmitted over the connection. */\r\n TransferFormat[TransferFormat[\"Binary\"] = 2] = \"Binary\";\r\n})(TransferFormat || (TransferFormat = {}));\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { MessageType } from \"./IHubProtocol\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { NullLogger } from \"./Loggers\";\r\nimport { TextMessageFormat } from \"./TextMessageFormat\";\r\nconst JSON_HUB_PROTOCOL_NAME = \"json\";\r\n/** Implements the JSON Hub Protocol. */\r\nexport class JsonHubProtocol {\r\n constructor() {\r\n /** @inheritDoc */\r\n this.name = JSON_HUB_PROTOCOL_NAME;\r\n /** @inheritDoc */\r\n this.version = 1;\r\n /** @inheritDoc */\r\n this.transferFormat = TransferFormat.Text;\r\n }\r\n /** Creates an array of {@link @microsoft/signalr.HubMessage} objects from the specified serialized representation.\r\n *\r\n * @param {string} input A string containing the serialized representation.\r\n * @param {ILogger} logger A logger that will be used to log messages that occur during parsing.\r\n */\r\n parseMessages(input, logger) {\r\n // The interface does allow \"ArrayBuffer\" to be passed in, but this implementation does not. So let's throw a useful error.\r\n if (typeof input !== \"string\") {\r\n throw new Error(\"Invalid input for JSON hub protocol. Expected a string.\");\r\n }\r\n if (!input) {\r\n return [];\r\n }\r\n if (logger === null) {\r\n logger = NullLogger.instance;\r\n }\r\n // Parse the messages\r\n const messages = TextMessageFormat.parse(input);\r\n const hubMessages = [];\r\n for (const message of messages) {\r\n const parsedMessage = JSON.parse(message);\r\n if (typeof parsedMessage.type !== \"number\") {\r\n throw new Error(\"Invalid payload.\");\r\n }\r\n switch (parsedMessage.type) {\r\n case MessageType.Invocation:\r\n this._isInvocationMessage(parsedMessage);\r\n break;\r\n case MessageType.StreamItem:\r\n this._isStreamItemMessage(parsedMessage);\r\n break;\r\n case MessageType.Completion:\r\n this._isCompletionMessage(parsedMessage);\r\n break;\r\n case MessageType.Ping:\r\n // Single value, no need to validate\r\n break;\r\n case MessageType.Close:\r\n // All optional values, no need to validate\r\n break;\r\n default:\r\n // Future protocol changes can add message types, old clients can ignore them\r\n logger.log(LogLevel.Information, \"Unknown message type '\" + parsedMessage.type + \"' ignored.\");\r\n continue;\r\n }\r\n hubMessages.push(parsedMessage);\r\n }\r\n return hubMessages;\r\n }\r\n /** Writes the specified {@link @microsoft/signalr.HubMessage} to a string and returns it.\r\n *\r\n * @param {HubMessage} message The message to write.\r\n * @returns {string} A string containing the serialized representation of the message.\r\n */\r\n writeMessage(message) {\r\n return TextMessageFormat.write(JSON.stringify(message));\r\n }\r\n _isInvocationMessage(message) {\r\n this._assertNotEmptyString(message.target, \"Invalid payload for Invocation message.\");\r\n if (message.invocationId !== undefined) {\r\n this._assertNotEmptyString(message.invocationId, \"Invalid payload for Invocation message.\");\r\n }\r\n }\r\n _isStreamItemMessage(message) {\r\n this._assertNotEmptyString(message.invocationId, \"Invalid payload for StreamItem message.\");\r\n if (message.item === undefined) {\r\n throw new Error(\"Invalid payload for StreamItem message.\");\r\n }\r\n }\r\n _isCompletionMessage(message) {\r\n if (message.result && message.error) {\r\n throw new Error(\"Invalid payload for Completion message.\");\r\n }\r\n if (!message.result && message.error) {\r\n this._assertNotEmptyString(message.error, \"Invalid payload for Completion message.\");\r\n }\r\n this._assertNotEmptyString(message.invocationId, \"Invalid payload for Completion message.\");\r\n }\r\n _assertNotEmptyString(value, errorMessage) {\r\n if (typeof value !== \"string\" || value === \"\") {\r\n throw new Error(errorMessage);\r\n }\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n/** A logger that does nothing when log messages are sent to it. */\r\nexport class NullLogger {\r\n constructor() { }\r\n /** @inheritDoc */\r\n // eslint-disable-next-line\r\n log(_logLevel, _message) {\r\n }\r\n}\r\n/** The singleton instance of the {@link @microsoft/signalr.NullLogger}. */\r\nNullLogger.instance = new NullLogger();\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { AbortController } from \"./AbortController\";\r\nimport { HttpError, TimeoutError } from \"./Errors\";\r\nimport { HeaderNames } from \"./HeaderNames\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, getUserAgentHeader, sendMessage } from \"./Utils\";\r\n// Not exported from 'index', this type is internal.\r\n/** @private */\r\nexport class LongPollingTransport {\r\n constructor(httpClient, accessTokenFactory, logger, options) {\r\n this._httpClient = httpClient;\r\n this._accessTokenFactory = accessTokenFactory;\r\n this._logger = logger;\r\n this._pollAbort = new AbortController();\r\n this._options = options;\r\n this._running = false;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n // This is an internal type, not exported from 'index' so this is really just internal.\r\n get pollAborted() {\r\n return this._pollAbort.aborted;\r\n }\r\n async connect(url, transferFormat) {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this._url = url;\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Connecting.\");\r\n // Allow binary format on Node and Browsers that support binary content (indicated by the presence of responseType property)\r\n if (transferFormat === TransferFormat.Binary &&\r\n (typeof XMLHttpRequest !== \"undefined\" && typeof new XMLHttpRequest().responseType !== \"string\")) {\r\n throw new Error(\"Binary protocols over XmlHttpRequest not implementing advanced features are not supported.\");\r\n }\r\n const [name, value] = getUserAgentHeader();\r\n const headers = { [name]: value, ...this._options.headers };\r\n const pollOptions = {\r\n abortSignal: this._pollAbort.signal,\r\n headers,\r\n timeout: 100000,\r\n withCredentials: this._options.withCredentials,\r\n };\r\n if (transferFormat === TransferFormat.Binary) {\r\n pollOptions.responseType = \"arraybuffer\";\r\n }\r\n const token = await this._getAccessToken();\r\n this._updateHeaderToken(pollOptions, token);\r\n // Make initial long polling request\r\n // Server uses first long polling request to finish initializing connection and it returns without data\r\n const pollUrl = `${url}&_=${Date.now()}`;\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) polling: ${pollUrl}.`);\r\n const response = await this._httpClient.get(pollUrl, pollOptions);\r\n if (response.statusCode !== 200) {\r\n this._logger.log(LogLevel.Error, `(LongPolling transport) Unexpected response code: ${response.statusCode}.`);\r\n // Mark running as false so that the poll immediately ends and runs the close logic\r\n this._closeError = new HttpError(response.statusText || \"\", response.statusCode);\r\n this._running = false;\r\n }\r\n else {\r\n this._running = true;\r\n }\r\n this._receiving = this._poll(this._url, pollOptions);\r\n }\r\n async _getAccessToken() {\r\n if (this._accessTokenFactory) {\r\n return await this._accessTokenFactory();\r\n }\r\n return null;\r\n }\r\n _updateHeaderToken(request, token) {\r\n if (!request.headers) {\r\n request.headers = {};\r\n }\r\n if (token) {\r\n request.headers[HeaderNames.Authorization] = `Bearer ${token}`;\r\n return;\r\n }\r\n if (request.headers[HeaderNames.Authorization]) {\r\n delete request.headers[HeaderNames.Authorization];\r\n }\r\n }\r\n async _poll(url, pollOptions) {\r\n try {\r\n while (this._running) {\r\n // We have to get the access token on each poll, in case it changes\r\n const token = await this._getAccessToken();\r\n this._updateHeaderToken(pollOptions, token);\r\n try {\r\n const pollUrl = `${url}&_=${Date.now()}`;\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) polling: ${pollUrl}.`);\r\n const response = await this._httpClient.get(pollUrl, pollOptions);\r\n if (response.statusCode === 204) {\r\n this._logger.log(LogLevel.Information, \"(LongPolling transport) Poll terminated by server.\");\r\n this._running = false;\r\n }\r\n else if (response.statusCode !== 200) {\r\n this._logger.log(LogLevel.Error, `(LongPolling transport) Unexpected response code: ${response.statusCode}.`);\r\n // Unexpected status code\r\n this._closeError = new HttpError(response.statusText || \"\", response.statusCode);\r\n this._running = false;\r\n }\r\n else {\r\n // Process the response\r\n if (response.content) {\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) data received. ${getDataDetail(response.content, this._options.logMessageContent)}.`);\r\n if (this.onreceive) {\r\n this.onreceive(response.content);\r\n }\r\n }\r\n else {\r\n // This is another way timeout manifest.\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n }\r\n }\r\n }\r\n catch (e) {\r\n if (!this._running) {\r\n // Log but disregard errors that occur after stopping\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) Poll errored after shutdown: ${e.message}`);\r\n }\r\n else {\r\n if (e instanceof TimeoutError) {\r\n // Ignore timeouts and reissue the poll.\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n }\r\n else {\r\n // Close the connection with the error as the result.\r\n this._closeError = e;\r\n this._running = false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n finally {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Polling complete.\");\r\n // We will reach here with pollAborted==false when the server returned a response causing the transport to stop.\r\n // If pollAborted==true then client initiated the stop and the stop method will raise the close event after DELETE is sent.\r\n if (!this.pollAborted) {\r\n this._raiseOnClose();\r\n }\r\n }\r\n }\r\n async send(data) {\r\n if (!this._running) {\r\n return Promise.reject(new Error(\"Cannot send until the transport is connected\"));\r\n }\r\n return sendMessage(this._logger, \"LongPolling\", this._httpClient, this._url, this._accessTokenFactory, data, this._options);\r\n }\r\n async stop() {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Stopping polling.\");\r\n // Tell receiving loop to stop, abort any current request, and then wait for it to finish\r\n this._running = false;\r\n this._pollAbort.abort();\r\n try {\r\n await this._receiving;\r\n // Send DELETE to clean up long polling on the server\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) sending DELETE request to ${this._url}.`);\r\n const headers = {};\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n const deleteOptions = {\r\n headers: { ...headers, ...this._options.headers },\r\n timeout: this._options.timeout,\r\n withCredentials: this._options.withCredentials,\r\n };\r\n const token = await this._getAccessToken();\r\n this._updateHeaderToken(deleteOptions, token);\r\n await this._httpClient.delete(this._url, deleteOptions);\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) DELETE request sent.\");\r\n }\r\n finally {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Stop finished.\");\r\n // Raise close event here instead of in polling\r\n // It needs to happen after the DELETE request is sent\r\n this._raiseOnClose();\r\n }\r\n }\r\n _raiseOnClose() {\r\n if (this.onclose) {\r\n let logMessage = \"(LongPolling transport) Firing onclose event.\";\r\n if (this._closeError) {\r\n logMessage += \" Error: \" + this._closeError;\r\n }\r\n this._logger.log(LogLevel.Trace, logMessage);\r\n this.onclose(this._closeError);\r\n }\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, getUserAgentHeader, Platform, sendMessage } from \"./Utils\";\r\n/** @private */\r\nexport class ServerSentEventsTransport {\r\n constructor(httpClient, accessTokenFactory, logger, options) {\r\n this._httpClient = httpClient;\r\n this._accessTokenFactory = accessTokenFactory;\r\n this._logger = logger;\r\n this._options = options;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n async connect(url, transferFormat) {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this._logger.log(LogLevel.Trace, \"(SSE transport) Connecting.\");\r\n // set url before accessTokenFactory because this.url is only for send and we set the auth header instead of the query string for send\r\n this._url = url;\r\n if (this._accessTokenFactory) {\r\n const token = await this._accessTokenFactory();\r\n if (token) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + `access_token=${encodeURIComponent(token)}`;\r\n }\r\n }\r\n return new Promise((resolve, reject) => {\r\n let opened = false;\r\n if (transferFormat !== TransferFormat.Text) {\r\n reject(new Error(\"The Server-Sent Events transport only supports the 'Text' transfer format\"));\r\n return;\r\n }\r\n let eventSource;\r\n if (Platform.isBrowser || Platform.isWebWorker) {\r\n eventSource = new this._options.EventSource(url, { withCredentials: this._options.withCredentials });\r\n }\r\n else {\r\n // Non-browser passes cookies via the dictionary\r\n const cookies = this._httpClient.getCookieString(url);\r\n const headers = {};\r\n headers.Cookie = cookies;\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n eventSource = new this._options.EventSource(url, { withCredentials: this._options.withCredentials, headers: { ...headers, ...this._options.headers } });\r\n }\r\n try {\r\n eventSource.onmessage = (e) => {\r\n if (this.onreceive) {\r\n try {\r\n this._logger.log(LogLevel.Trace, `(SSE transport) data received. ${getDataDetail(e.data, this._options.logMessageContent)}.`);\r\n this.onreceive(e.data);\r\n }\r\n catch (error) {\r\n this._close(error);\r\n return;\r\n }\r\n }\r\n };\r\n // @ts-ignore: not using event on purpose\r\n eventSource.onerror = (e) => {\r\n // EventSource doesn't give any useful information about server side closes.\r\n if (opened) {\r\n this._close();\r\n }\r\n else {\r\n reject(new Error(\"EventSource failed to connect. The connection could not be found on the server,\"\r\n + \" either the connection ID is not present on the server, or a proxy is refusing/buffering the connection.\"\r\n + \" If you have multiple servers check that sticky sessions are enabled.\"));\r\n }\r\n };\r\n eventSource.onopen = () => {\r\n this._logger.log(LogLevel.Information, `SSE connected to ${this._url}`);\r\n this._eventSource = eventSource;\r\n opened = true;\r\n resolve();\r\n };\r\n }\r\n catch (e) {\r\n reject(e);\r\n return;\r\n }\r\n });\r\n }\r\n async send(data) {\r\n if (!this._eventSource) {\r\n return Promise.reject(new Error(\"Cannot send until the transport is connected\"));\r\n }\r\n return sendMessage(this._logger, \"SSE\", this._httpClient, this._url, this._accessTokenFactory, data, this._options);\r\n }\r\n stop() {\r\n this._close();\r\n return Promise.resolve();\r\n }\r\n _close(e) {\r\n if (this._eventSource) {\r\n this._eventSource.close();\r\n this._eventSource = undefined;\r\n if (this.onclose) {\r\n this.onclose(e);\r\n }\r\n }\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { SubjectSubscription } from \"./Utils\";\r\n/** Stream implementation to stream items to the server. */\r\nexport class Subject {\r\n constructor() {\r\n this.observers = [];\r\n }\r\n next(item) {\r\n for (const observer of this.observers) {\r\n observer.next(item);\r\n }\r\n }\r\n error(err) {\r\n for (const observer of this.observers) {\r\n if (observer.error) {\r\n observer.error(err);\r\n }\r\n }\r\n }\r\n complete() {\r\n for (const observer of this.observers) {\r\n if (observer.complete) {\r\n observer.complete();\r\n }\r\n }\r\n }\r\n subscribe(observer) {\r\n this.observers.push(observer);\r\n return new SubjectSubscription(this, observer);\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// Not exported from index\r\n/** @private */\r\nexport class TextMessageFormat {\r\n static write(output) {\r\n return `${output}${TextMessageFormat.RecordSeparator}`;\r\n }\r\n static parse(input) {\r\n if (input[input.length - 1] !== TextMessageFormat.RecordSeparator) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n const messages = input.split(TextMessageFormat.RecordSeparator);\r\n messages.pop();\r\n return messages;\r\n }\r\n}\r\nTextMessageFormat.RecordSeparatorCode = 0x1e;\r\nTextMessageFormat.RecordSeparator = String.fromCharCode(TextMessageFormat.RecordSeparatorCode);\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { NullLogger } from \"./Loggers\";\r\n// Version token that will be replaced by the prepack command\r\n/** The version of the SignalR client. */\r\nexport const VERSION = \"6.0.5\";\r\n/** @private */\r\nexport class Arg {\r\n static isRequired(val, name) {\r\n if (val === null || val === undefined) {\r\n throw new Error(`The '${name}' argument is required.`);\r\n }\r\n }\r\n static isNotEmpty(val, name) {\r\n if (!val || val.match(/^\\s*$/)) {\r\n throw new Error(`The '${name}' argument should not be empty.`);\r\n }\r\n }\r\n static isIn(val, values, name) {\r\n // TypeScript enums have keys for **both** the name and the value of each enum member on the type itself.\r\n if (!(val in values)) {\r\n throw new Error(`Unknown ${name} value: ${val}.`);\r\n }\r\n }\r\n}\r\n/** @private */\r\nexport class Platform {\r\n // react-native has a window but no document so we should check both\r\n static get isBrowser() {\r\n return typeof window === \"object\" && typeof window.document === \"object\";\r\n }\r\n // WebWorkers don't have a window object so the isBrowser check would fail\r\n static get isWebWorker() {\r\n return typeof self === \"object\" && \"importScripts\" in self;\r\n }\r\n // react-native has a window but no document\r\n static get isReactNative() {\r\n return typeof window === \"object\" && typeof window.document === \"undefined\";\r\n }\r\n // Node apps shouldn't have a window object, but WebWorkers don't either\r\n // so we need to check for both WebWorker and window\r\n static get isNode() {\r\n return !this.isBrowser && !this.isWebWorker && !this.isReactNative;\r\n }\r\n}\r\n/** @private */\r\nexport function getDataDetail(data, includeContent) {\r\n let detail = \"\";\r\n if (isArrayBuffer(data)) {\r\n detail = `Binary data of length ${data.byteLength}`;\r\n if (includeContent) {\r\n detail += `. Content: '${formatArrayBuffer(data)}'`;\r\n }\r\n }\r\n else if (typeof data === \"string\") {\r\n detail = `String data of length ${data.length}`;\r\n if (includeContent) {\r\n detail += `. Content: '${data}'`;\r\n }\r\n }\r\n return detail;\r\n}\r\n/** @private */\r\nexport function formatArrayBuffer(data) {\r\n const view = new Uint8Array(data);\r\n // Uint8Array.map only supports returning another Uint8Array?\r\n let str = \"\";\r\n view.forEach((num) => {\r\n const pad = num < 16 ? \"0\" : \"\";\r\n str += `0x${pad}${num.toString(16)} `;\r\n });\r\n // Trim of trailing space.\r\n return str.substr(0, str.length - 1);\r\n}\r\n// Also in signalr-protocol-msgpack/Utils.ts\r\n/** @private */\r\nexport function isArrayBuffer(val) {\r\n return val && typeof ArrayBuffer !== \"undefined\" &&\r\n (val instanceof ArrayBuffer ||\r\n // Sometimes we get an ArrayBuffer that doesn't satisfy instanceof\r\n (val.constructor && val.constructor.name === \"ArrayBuffer\"));\r\n}\r\n/** @private */\r\nexport async function sendMessage(logger, transportName, httpClient, url, accessTokenFactory, content, options) {\r\n let headers = {};\r\n if (accessTokenFactory) {\r\n const token = await accessTokenFactory();\r\n if (token) {\r\n headers = {\r\n [\"Authorization\"]: `Bearer ${token}`,\r\n };\r\n }\r\n }\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n logger.log(LogLevel.Trace, `(${transportName} transport) sending data. ${getDataDetail(content, options.logMessageContent)}.`);\r\n const responseType = isArrayBuffer(content) ? \"arraybuffer\" : \"text\";\r\n const response = await httpClient.post(url, {\r\n content,\r\n headers: { ...headers, ...options.headers },\r\n responseType,\r\n timeout: options.timeout,\r\n withCredentials: options.withCredentials,\r\n });\r\n logger.log(LogLevel.Trace, `(${transportName} transport) request complete. Response status: ${response.statusCode}.`);\r\n}\r\n/** @private */\r\nexport function createLogger(logger) {\r\n if (logger === undefined) {\r\n return new ConsoleLogger(LogLevel.Information);\r\n }\r\n if (logger === null) {\r\n return NullLogger.instance;\r\n }\r\n if (logger.log !== undefined) {\r\n return logger;\r\n }\r\n return new ConsoleLogger(logger);\r\n}\r\n/** @private */\r\nexport class SubjectSubscription {\r\n constructor(subject, observer) {\r\n this._subject = subject;\r\n this._observer = observer;\r\n }\r\n dispose() {\r\n const index = this._subject.observers.indexOf(this._observer);\r\n if (index > -1) {\r\n this._subject.observers.splice(index, 1);\r\n }\r\n if (this._subject.observers.length === 0 && this._subject.cancelCallback) {\r\n this._subject.cancelCallback().catch((_) => { });\r\n }\r\n }\r\n}\r\n/** @private */\r\nexport class ConsoleLogger {\r\n constructor(minimumLogLevel) {\r\n this._minLevel = minimumLogLevel;\r\n this.out = console;\r\n }\r\n log(logLevel, message) {\r\n if (logLevel >= this._minLevel) {\r\n const msg = `[${new Date().toISOString()}] ${LogLevel[logLevel]}: ${message}`;\r\n switch (logLevel) {\r\n case LogLevel.Critical:\r\n case LogLevel.Error:\r\n this.out.error(msg);\r\n break;\r\n case LogLevel.Warning:\r\n this.out.warn(msg);\r\n break;\r\n case LogLevel.Information:\r\n this.out.info(msg);\r\n break;\r\n default:\r\n // console.debug only goes to attached debuggers in Node, so we use console.log for Trace and Debug\r\n this.out.log(msg);\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n/** @private */\r\nexport function getUserAgentHeader() {\r\n let userAgentHeaderName = \"X-SignalR-User-Agent\";\r\n if (Platform.isNode) {\r\n userAgentHeaderName = \"User-Agent\";\r\n }\r\n return [userAgentHeaderName, constructUserAgent(VERSION, getOsName(), getRuntime(), getRuntimeVersion())];\r\n}\r\n/** @private */\r\nexport function constructUserAgent(version, os, runtime, runtimeVersion) {\r\n // Microsoft SignalR/[Version] ([Detailed Version]; [Operating System]; [Runtime]; [Runtime Version])\r\n let userAgent = \"Microsoft SignalR/\";\r\n const majorAndMinor = version.split(\".\");\r\n userAgent += `${majorAndMinor[0]}.${majorAndMinor[1]}`;\r\n userAgent += ` (${version}; `;\r\n if (os && os !== \"\") {\r\n userAgent += `${os}; `;\r\n }\r\n else {\r\n userAgent += \"Unknown OS; \";\r\n }\r\n userAgent += `${runtime}`;\r\n if (runtimeVersion) {\r\n userAgent += `; ${runtimeVersion}`;\r\n }\r\n else {\r\n userAgent += \"; Unknown Runtime Version\";\r\n }\r\n userAgent += \")\";\r\n return userAgent;\r\n}\r\n// eslint-disable-next-line spaced-comment\r\n/*#__PURE__*/ function getOsName() {\r\n if (Platform.isNode) {\r\n switch (process.platform) {\r\n case \"win32\":\r\n return \"Windows NT\";\r\n case \"darwin\":\r\n return \"macOS\";\r\n case \"linux\":\r\n return \"Linux\";\r\n default:\r\n return process.platform;\r\n }\r\n }\r\n else {\r\n return \"\";\r\n }\r\n}\r\n// eslint-disable-next-line spaced-comment\r\n/*#__PURE__*/ function getRuntimeVersion() {\r\n if (Platform.isNode) {\r\n return process.versions.node;\r\n }\r\n return undefined;\r\n}\r\nfunction getRuntime() {\r\n if (Platform.isNode) {\r\n return \"NodeJS\";\r\n }\r\n else {\r\n return \"Browser\";\r\n }\r\n}\r\n/** @private */\r\nexport function getErrorString(e) {\r\n if (e.stack) {\r\n return e.stack;\r\n }\r\n else if (e.message) {\r\n return e.message;\r\n }\r\n return `${e}`;\r\n}\r\n/** @private */\r\nexport function getGlobalThis() {\r\n // globalThis is semi-new and not available in Node until v12\r\n if (typeof globalThis !== \"undefined\") {\r\n return globalThis;\r\n }\r\n if (typeof self !== \"undefined\") {\r\n return self;\r\n }\r\n if (typeof window !== \"undefined\") {\r\n return window;\r\n }\r\n if (typeof global !== \"undefined\") {\r\n return global;\r\n }\r\n throw new Error(\"could not find global\");\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { HeaderNames } from \"./HeaderNames\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, getUserAgentHeader, Platform } from \"./Utils\";\r\n/** @private */\r\nexport class WebSocketTransport {\r\n constructor(httpClient, accessTokenFactory, logger, logMessageContent, webSocketConstructor, headers) {\r\n this._logger = logger;\r\n this._accessTokenFactory = accessTokenFactory;\r\n this._logMessageContent = logMessageContent;\r\n this._webSocketConstructor = webSocketConstructor;\r\n this._httpClient = httpClient;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n this._headers = headers;\r\n }\r\n async connect(url, transferFormat) {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this._logger.log(LogLevel.Trace, \"(WebSockets transport) Connecting.\");\r\n if (this._accessTokenFactory) {\r\n const token = await this._accessTokenFactory();\r\n if (token) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + `access_token=${encodeURIComponent(token)}`;\r\n }\r\n }\r\n return new Promise((resolve, reject) => {\r\n url = url.replace(/^http/, \"ws\");\r\n let webSocket;\r\n const cookies = this._httpClient.getCookieString(url);\r\n let opened = false;\r\n if (Platform.isNode) {\r\n const headers = {};\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n if (cookies) {\r\n headers[HeaderNames.Cookie] = `${cookies}`;\r\n }\r\n // Only pass headers when in non-browser environments\r\n webSocket = new this._webSocketConstructor(url, undefined, {\r\n headers: { ...headers, ...this._headers },\r\n });\r\n }\r\n if (!webSocket) {\r\n // Chrome is not happy with passing 'undefined' as protocol\r\n webSocket = new this._webSocketConstructor(url);\r\n }\r\n if (transferFormat === TransferFormat.Binary) {\r\n webSocket.binaryType = \"arraybuffer\";\r\n }\r\n webSocket.onopen = (_event) => {\r\n this._logger.log(LogLevel.Information, `WebSocket connected to ${url}.`);\r\n this._webSocket = webSocket;\r\n opened = true;\r\n resolve();\r\n };\r\n webSocket.onerror = (event) => {\r\n let error = null;\r\n // ErrorEvent is a browser only type we need to check if the type exists before using it\r\n if (typeof ErrorEvent !== \"undefined\" && event instanceof ErrorEvent) {\r\n error = event.error;\r\n }\r\n else {\r\n error = \"There was an error with the transport\";\r\n }\r\n this._logger.log(LogLevel.Information, `(WebSockets transport) ${error}.`);\r\n };\r\n webSocket.onmessage = (message) => {\r\n this._logger.log(LogLevel.Trace, `(WebSockets transport) data received. ${getDataDetail(message.data, this._logMessageContent)}.`);\r\n if (this.onreceive) {\r\n try {\r\n this.onreceive(message.data);\r\n }\r\n catch (error) {\r\n this._close(error);\r\n return;\r\n }\r\n }\r\n };\r\n webSocket.onclose = (event) => {\r\n // Don't call close handler if connection was never established\r\n // We'll reject the connect call instead\r\n if (opened) {\r\n this._close(event);\r\n }\r\n else {\r\n let error = null;\r\n // ErrorEvent is a browser only type we need to check if the type exists before using it\r\n if (typeof ErrorEvent !== \"undefined\" && event instanceof ErrorEvent) {\r\n error = event.error;\r\n }\r\n else {\r\n error = \"WebSocket failed to connect. The connection could not be found on the server,\"\r\n + \" either the endpoint may not be a SignalR endpoint,\"\r\n + \" the connection ID is not present on the server, or there is a proxy blocking WebSockets.\"\r\n + \" If you have multiple servers check that sticky sessions are enabled.\";\r\n }\r\n reject(new Error(error));\r\n }\r\n };\r\n });\r\n }\r\n send(data) {\r\n if (this._webSocket && this._webSocket.readyState === this._webSocketConstructor.OPEN) {\r\n this._logger.log(LogLevel.Trace, `(WebSockets transport) sending data. ${getDataDetail(data, this._logMessageContent)}.`);\r\n this._webSocket.send(data);\r\n return Promise.resolve();\r\n }\r\n return Promise.reject(\"WebSocket is not in the OPEN state\");\r\n }\r\n stop() {\r\n if (this._webSocket) {\r\n // Manually invoke onclose callback inline so we know the HttpConnection was closed properly before returning\r\n // This also solves an issue where websocket.onclose could take 18+ seconds to trigger during network disconnects\r\n this._close(undefined);\r\n }\r\n return Promise.resolve();\r\n }\r\n _close(event) {\r\n // webSocket will be null if the transport did not start successfully\r\n if (this._webSocket) {\r\n // Clear websocket handlers because we are considering the socket closed now\r\n this._webSocket.onclose = () => { };\r\n this._webSocket.onmessage = () => { };\r\n this._webSocket.onerror = () => { };\r\n this._webSocket.close();\r\n this._webSocket = undefined;\r\n }\r\n this._logger.log(LogLevel.Trace, \"(WebSockets transport) socket closed.\");\r\n if (this.onclose) {\r\n if (this._isCloseEvent(event) && (event.wasClean === false || event.code !== 1000)) {\r\n this.onclose(new Error(`WebSocket closed with status code: ${event.code} (${event.reason || \"no reason given\"}).`));\r\n }\r\n else if (event instanceof Error) {\r\n this.onclose(event);\r\n }\r\n else {\r\n this.onclose();\r\n }\r\n }\r\n }\r\n _isCloseEvent(event) {\r\n return event && typeof event.wasClean === \"boolean\" && typeof event.code === \"number\";\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { AbortError, HttpError, TimeoutError } from \"./Errors\";\r\nimport { HttpClient, HttpResponse } from \"./HttpClient\";\r\nimport { LogLevel } from \"./ILogger\";\r\nexport class XhrHttpClient extends HttpClient {\r\n constructor(logger) {\r\n super();\r\n this._logger = logger;\r\n }\r\n /** @inheritDoc */\r\n send(request) {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n return Promise.reject(new AbortError());\r\n }\r\n if (!request.method) {\r\n return Promise.reject(new Error(\"No method defined.\"));\r\n }\r\n if (!request.url) {\r\n return Promise.reject(new Error(\"No url defined.\"));\r\n }\r\n return new Promise((resolve, reject) => {\r\n const xhr = new XMLHttpRequest();\r\n xhr.open(request.method, request.url, true);\r\n xhr.withCredentials = request.withCredentials === undefined ? true : request.withCredentials;\r\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n // Explicitly setting the Content-Type header for React Native on Android platform.\r\n xhr.setRequestHeader(\"Content-Type\", \"text/plain;charset=UTF-8\");\r\n const headers = request.headers;\r\n if (headers) {\r\n Object.keys(headers)\r\n .forEach((header) => {\r\n xhr.setRequestHeader(header, headers[header]);\r\n });\r\n }\r\n if (request.responseType) {\r\n xhr.responseType = request.responseType;\r\n }\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = () => {\r\n xhr.abort();\r\n reject(new AbortError());\r\n };\r\n }\r\n if (request.timeout) {\r\n xhr.timeout = request.timeout;\r\n }\r\n xhr.onload = () => {\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = null;\r\n }\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n resolve(new HttpResponse(xhr.status, xhr.statusText, xhr.response || xhr.responseText));\r\n }\r\n else {\r\n reject(new HttpError(xhr.response || xhr.responseText || xhr.statusText, xhr.status));\r\n }\r\n };\r\n xhr.onerror = () => {\r\n this._logger.log(LogLevel.Warning, `Error from HTTP request. ${xhr.status}: ${xhr.statusText}.`);\r\n reject(new HttpError(xhr.statusText, xhr.status));\r\n };\r\n xhr.ontimeout = () => {\r\n this._logger.log(LogLevel.Warning, `Timeout from HTTP request.`);\r\n reject(new TimeoutError());\r\n };\r\n xhr.send(request.content || \"\");\r\n });\r\n }\r\n}\r\n"],"names":["AbortError","HttpError","TimeoutError","HttpClient","HttpResponse","LogLevel","Platform","getGlobalThis","FetchHttpClient","constructor","logger","_logger","fetch","requireFunc","__webpack_require__","__non_webpack_require__","require","_jar","CookieJar","_fetchType","bind","AbortController","_abortControllerType","send","request","abortSignal","aborted","method","Error","url","abortController","error","onabort","abort","timeoutId","timeout","msTimeout","setTimeout","log","Warning","response","body","content","cache","credentials","withCredentials","headers","mode","redirect","signal","e","clearTimeout","ok","errorMessage","deserializeContent","statusText","status","responseType","payload","getCookieString","cookies","isNode","getCookies","c","join","arrayBuffer","text","DefaultHttpClient","AggregateErrors","DisabledTransportError","FailedToNegotiateWithServerError","FailedToStartTransportError","UnsupportedTransportError","HeaderNames","HttpTransportType","TransferFormat","LongPollingTransport","ServerSentEventsTransport","Arg","createLogger","getUserAgentHeader","WebSocketTransport","MAX_REDIRECTS","HttpConnection","options","_stopPromiseResolver","features","_negotiateVersion","isRequired","baseUrl","_resolveUrl","logMessageContent","undefined","webSocketModule","eventSourceModule","WebSocket","EventSource","_httpClient","httpClient","_connectionState","_connectionStarted","_options","onreceive","onclose","start","transferFormat","Binary","isIn","Debug","Promise","reject","_startInternalPromise","_startInternal","message","_stopPromise","data","_sendQueue","TransportSendQueue","transport","stop","resolve","_stopInternal","_stopError","_stopConnection","_accessTokenFactory","accessTokenFactory","skipNegotiation","WebSockets","_constructTransport","_startTransport","negotiateResponse","redirects","_getNegotiationResponse","ProtocolVersion","accessToken","_createTransport","inherentKeepAlive","token","Authorization","name","value","negotiateUrl","_resolveNegotiateUrl","post","statusCode","JSON","parse","negotiateVersion","connectionToken","connectionId","_createConnectUrl","indexOf","requestedTransport","requestedTransferFormat","connectUrl","_isITransport","transportExceptions","transports","availableTransports","negotiate","endpoint","transportOrError","_resolveTransportOrError","push","ex","length","ServerSentEvents","LongPolling","connect","transportMatches","transferFormats","map","s","Information","catch","lastIndexOf","isBrowser","aTag","window","document","createElement","href","index","substring","actualTransport","_transport","_buffer","_executing","_sendBufferedData","PromiseSource","_transportResult","_sendLoopPromise","_sendLoop","_bufferData","promise","transportResult","_concatBuffers","arrayBuffers","totalLength","b","byteLength","reduce","a","result","Uint8Array","offset","item","set","buffer","_resolver","_rejecter","reason","HandshakeProtocol","MessageType","Subject","getErrorString","DEFAULT_TIMEOUT_IN_MS","DEFAULT_PING_INTERVAL_IN_MS","HubConnectionState","HubConnection","connection","protocol","reconnectPolicy","_nextKeepAlive","_freezeEventListener","serverTimeoutInMilliseconds","keepAliveIntervalInMilliseconds","_protocol","_reconnectPolicy","_handshakeProtocol","_processIncomingData","_connectionClosed","_callbacks","_methods","_closedCallbacks","_reconnectingCallbacks","_reconnectedCallbacks","_invocationId","_receivedHandshakeResponse","Disconnected","_cachedPingMessage","writeMessage","type","Ping","create","state","Reconnecting","_startPromise","_startWithStateTransitions","Connecting","addEventListener","Connected","_stopDuringStartError","handshakePromise","_handshakeResolver","_handshakeRejecter","handshakeRequest","version","_sendMessage","writeHandshakeRequest","_cleanupTimeout","_resetTimeoutPeriod","_resetKeepAliveInterval","_cleanupPingTimer","startPromise","Disconnecting","_reconnectDelayHandle","_completeClose","stream","methodName","args","streams","streamIds","_replaceStreamingParams","invocationDescriptor","_createStreamInvocation","promiseQueue","subject","cancelCallback","cancelInvocation","_createCancelInvocation","invocationId","then","_sendWithProtocol","invocationEvent","Completion","complete","next","_launchStreams","sendPromise","_createInvocation","invoke","p","on","newMethod","toLowerCase","off","handlers","removeIdx","splice","callback","onreconnecting","onreconnected","_processHandshakeResponse","messages","parseMessages","Invocation","_invokeClientMethod","StreamItem","Close","allowReconnect","responseMessage","remainingData","parseHandshakeResponse","Date","getTime","_timeoutHandle","serverTimeout","_pingServerHandle","nextPing","invocationMessage","methods","target","forEach","m","apply","arguments","_cancelCallbacksWithError","_reconnect","removeEventListener","reconnectStartTime","now","previousReconnectAttempts","retryError","nextRetryDelay","_getNextRetryDelay","toString","previousRetryCount","elapsedMilliseconds","retryReason","nextRetryDelayInMilliseconds","callbacks","Object","keys","key","nonblocking","streamId","subscribe","_createCompletionMessage","err","_createStreamItemMessage","i","argument","_isObservable","arg","StreamInvocation","id","CancelInvocation","getDataDetail","sendMessage","_pollAbort","_running","pollAborted","_url","Trace","XMLHttpRequest","pollOptions","_getAccessToken","_updateHeaderToken","pollUrl","get","_closeError","_receiving","_poll","_raiseOnClose","deleteOptions","delete","logMessage","encodeURIComponent","opened","Text","eventSource","isWebWorker","Cookie","onmessage","_close","onerror","onopen","_eventSource","close","NullLogger","VERSION","val","isNotEmpty","match","values","self","isReactNative","includeContent","detail","isArrayBuffer","formatArrayBuffer","view","str","num","pad","substr","ArrayBuffer","transportName","ConsoleLogger","instance","SubjectSubscription","observer","_subject","_observer","dispose","observers","_","minimumLogLevel","_minLevel","out","console","logLevel","msg","toISOString","Critical","warn","info","userAgentHeaderName","constructUserAgent","getOsName","getRuntime","getRuntimeVersion","os","runtime","runtimeVersion","userAgent","majorAndMinor","split","process","platform","versions","node","stack","globalThis","global","webSocketConstructor","_logMessageContent","_webSocketConstructor","_headers","replace","webSocket","binaryType","_event","_webSocket","event","ErrorEvent","readyState","OPEN","_isCloseEvent","wasClean","code"],"sourceRoot":"webpack:///"}