@excent/excent-serv-positions 2.0.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -48,6 +48,7 @@ class ExcentServPositionsService {
48
48
  buy: false,
49
49
  stopLoss: 0,
50
50
  takeProfit: 0,
51
+ expirationDate: null,
51
52
  activationPrice: 0,
52
53
  cancellationDate: new Date(),
53
54
  creationDate: new Date(),
@@ -319,10 +320,10 @@ class ExcentServPositionsService {
319
320
  getPositionHistoryByUUID(uid) {
320
321
  return this.httpClient.get(`${endpoint.closePosition}${uid}/`);
321
322
  }
322
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExcentServPositionsService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
323
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExcentServPositionsService, providedIn: 'root' }); }
323
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ExcentServPositionsService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
324
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ExcentServPositionsService, providedIn: 'root' }); }
324
325
  }
325
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExcentServPositionsService, decorators: [{
326
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ExcentServPositionsService, decorators: [{
326
327
  type: Injectable,
327
328
  args: [{
328
329
  providedIn: 'root',
@@ -330,16 +331,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
330
331
  }], ctorParameters: () => [{ type: i1.HttpClient }] });
331
332
 
332
333
  class ExcentServPositionsComponent {
333
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExcentServPositionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
334
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ExcentServPositionsComponent, selector: "lib-excent-serv-positions", ngImport: i0, template: `
334
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ExcentServPositionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
335
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: ExcentServPositionsComponent, isStandalone: false, selector: "lib-excent-serv-positions", ngImport: i0, template: `
335
336
  <p>
336
337
  excent-serv-positions works!
337
338
  </p>
338
339
  `, isInline: true }); }
339
340
  }
340
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExcentServPositionsComponent, decorators: [{
341
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ExcentServPositionsComponent, decorators: [{
341
342
  type: Component,
342
- args: [{ selector: 'lib-excent-serv-positions', template: `
343
+ args: [{ selector: 'lib-excent-serv-positions', standalone: false, template: `
343
344
  <p>
344
345
  excent-serv-positions works!
345
346
  </p>
@@ -347,11 +348,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
347
348
  }] });
348
349
 
349
350
  class ExcentServPositionsModule {
350
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExcentServPositionsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
351
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: ExcentServPositionsModule, declarations: [ExcentServPositionsComponent], exports: [ExcentServPositionsComponent] }); }
352
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExcentServPositionsModule }); }
351
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ExcentServPositionsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
352
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: ExcentServPositionsModule, declarations: [ExcentServPositionsComponent], exports: [ExcentServPositionsComponent] }); }
353
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ExcentServPositionsModule }); }
353
354
  }
354
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExcentServPositionsModule, decorators: [{
355
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ExcentServPositionsModule, decorators: [{
355
356
  type: NgModule,
356
357
  args: [{
357
358
  declarations: [
@@ -1 +1 @@
1
- {"version":3,"file":"excent-excent-serv-positions.mjs","sources":["../../../projects/excent-serv-positions/src/lib/excent-serv-positions.enpoints.ts","../../../projects/excent-serv-positions/src/lib/excent-serv-positions.service.ts","../../../projects/excent-serv-positions/src/lib/excent-serv-positions.component.ts","../../../projects/excent-serv-positions/src/lib/excent-serv-positions.module.ts","../../../projects/excent-serv-positions/src/public-api.ts","../../../projects/excent-serv-positions/src/excent-excent-serv-positions.ts"],"sourcesContent":["export const endpoint = {\n open: '/position/open/',\n closed: '/position/closed/',\n orders: '/positions/orders/',\n wsCancelOrder: '/position/order/cancel/',\n closePosition: '/positions/position-history/',\n positionSummary: '/report/position-summary',\n listOpen: '/positions/trading-positions/',\n create: '/positions/trading-positions/',\n createOrder: '/positions/orders/',\n cancellOrder1: '/positions/orders/',\n cancellOrder2: '/cancel/',\n patchPosition: '/positions/trading-positions/',\n patchOrder: '/positions/orders/',\n tradeSummary: '/positions/trade-summary/',\n positionSummaryDealing: '/positions/positions-summary/',\n closeOnHedge: '/positions/trading-positions/',\n closeMultiple: '/positions/trading-positions/close-all'\n};\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport {\n IClosePosition,\n IOrder,\n IPayloadCreatePosition,\n IPosition,\n IPositionSummaryDealing,\n IResponseClose,\n IResponseOrder,\n ITradeSummary,\n ResponsePaginator,\n Symbol\n} from '@excent/excent-models';\nimport { BehaviorSubject, Observable, Subject, tap } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { endpoint } from './excent-serv-positions.enpoints';\n\ntype IPositionResponse = Partial<IPosition> & { currentPrice: number };\n@Injectable({\n providedIn: 'root',\n})\nexport class ExcentServPositionsService {\n private _refresh$ = new Subject<void>();\n private position = new BehaviorSubject<IPosition | null>(null);\n public pendingOrders$ = new BehaviorSubject<Array<IOrder>>([]);\n public closePositions$ = new BehaviorSubject<Array<IClosePosition>>([]);\n public position$ = this.position.asObservable();\n public operationOrder: BehaviorSubject<{ type: string; value: IOrder }> =\n new BehaviorSubject<{ type: string; value: IOrder }>({\n type: '',\n value: {\n uuid: '',\n id: '',\n tradingAccount: '',\n symbol: new Symbol().id,\n idSymbol: 0,\n orderType: 0,\n orderStatus: 0,\n volume: 0,\n buy: false,\n stopLoss: 0,\n takeProfit: 0,\n activationPrice: 0,\n cancellationDate: new Date(),\n creationDate: new Date(),\n },\n });\n\n constructor(private httpClient: HttpClient) {}\n\n get refresh$(): Subject<void> {\n return this._refresh$;\n }\n\n public reloadPositions(idUser: number): Observable<IPosition[]> {\n const params = new HttpParams().set('idAccount', idUser);\n return this.httpClient.get<IPosition[]>(endpoint.open, { params });\n }\n\n public getOpenCsv<T>(headers: HttpHeaders, data?: Map<string, any>) {\n let params = new HttpParams();\n\n if (data) {\n for (let entry of data.entries()) {\n params = params.append(entry[0], entry[1]);\n }\n }\n\n return this.httpClient.get(endpoint.listOpen, {\n params,\n headers,\n observe: 'body',\n responseType: 'blob' as 'json',\n });\n }\n\n public getOpen<T>(\n uuid?: string,\n data?: Map<string, any>\n ): Observable<T> {\n\n let params = new HttpParams()\n if (uuid) params = params.append('tradingAccount', uuid);\n if (data) {\n for (let entry of data.entries()) {\n params = params.append(entry[0], entry[1]);\n }\n }\n\n return this.httpClient\n .get<T>(endpoint.listOpen, {\n params,\n })\n .pipe(\n map((el: any) => {\n if(el.results) {\n let positions = (el as ResponsePaginator<IPosition>).results.map((position: any) => ({\n ...position,\n symbolId: position.symbol,\n symbol: new Symbol(),\n }));\n return {...el, 'results': positions }\n } else {\n el = (el as Array<IPosition>).map((position) => ({\n ...position,\n symbolId: position.symbol,\n symbol: new Symbol(),\n }));\n return el;\n }\n })\n );\n }\n\n public getCloseCsv<T>(headers: HttpHeaders, data?: Map<string, any>) {\n let params = new HttpParams();\n\n if (data) {\n for (let entry of data.entries()) {\n params = params.append(entry[0], entry[1]);\n }\n }\n return this.httpClient.get(endpoint.closePosition, {\n params,\n headers,\n observe: 'body',\n responseType: 'blob' as 'json',\n });\n }\n\n public getCloseCSVTrading<T>(data?: Map<string, any>, headers?: HttpHeaders) {\n let params = new HttpParams();\n\n if (data) {\n for (let entry of data.entries()) {\n params = params.append(entry[0], entry[1]);\n }\n }\n\n return this.httpClient.get<T>(\n endpoint.closePosition,\n headers\n ? {\n params,\n headers,\n observe: 'body',\n responseType: 'blob' as 'json',\n }\n : {\n params,\n }\n );\n }\n\n public getClose<T>(\n tradingAccountUuid?: string,\n data?: Map<string, any>\n ): Observable<T> {\n \n let params = new HttpParams()\n\n if (tradingAccountUuid) {\n params = params.append('tradingAccount', tradingAccountUuid);\n }\n\n if (data) {\n for (let entry of data.entries()) {\n params = params.append(entry[0], entry[1]);\n }\n }\n return this.httpClient.get<T>(endpoint.closePosition, {\n params,\n });\n }\n\n public getOrdersCsv<T>(headers: HttpHeaders, data?: Map<string, any>) {\n let params = new HttpParams();\n\n if (data) {\n for (let entry of data.entries()) {\n params = params.append(entry[0], entry[1]);\n }\n }\n\n return this.httpClient.get(endpoint.orders, {\n params,\n headers,\n observe: 'body',\n responseType: 'blob' as 'json',\n });\n }\n\n public getOrders<T>(\n tradingAccountUuid?: string,\n orderStatus?: number,\n data?: Map<string, any>\n ): Observable<T> {\n\n let params = new HttpParams()\n\n if (tradingAccountUuid) {\n params = params.set('tradingAccount', tradingAccountUuid);\n }\n\n if (orderStatus) {\n params = params.append('orderStatus', orderStatus);\n }\n\n if (data) {\n for (let entry of data.entries()) {\n params = params.append(entry[0], entry[1]);\n }\n }\n return this.httpClient.get<T>(endpoint.orders, {\n params,\n });\n }\n\n public create(value: IPayloadCreatePosition): Observable<IPosition> {\n return this.httpClient.post<IPosition>(endpoint.create, value).pipe(\n tap(() => {\n this._refresh$.next();\n })\n );\n }\n\n public createOrder<T, U>(value: U) {\n return this.httpClient.post<T>(endpoint.createOrder, value);\n }\n\n public closePositions(\n volume: { volume: number },\n uuid: string\n ): Observable<IClosePosition> {\n return this.httpClient\n .post<IClosePosition>(\n `/positions/trading-positions/${uuid}/close/`,\n volume\n )\n .pipe(\n tap(() => {\n this.refresh$.next();\n })\n );\n }\n\n public closeWithHedge(uuid: string): Observable<IPosition> {\n return this.httpClient\n .post<IPosition>( \n `${endpoint.closeOnHedge}${uuid}/close-on-hedge/`,\n null\n )\n .pipe(\n tap(() => {\n this.refresh$.next();\n })\n )\n }\n\n public setPosition(position: IPosition | null) {\n this.position.next(position);\n }\n\n public cancellOrder(uuid: string): Observable<IResponseOrder> {\n return this.httpClient.post<IResponseOrder>(\n endpoint.cancellOrder1 + uuid + endpoint.cancellOrder2,\n {}\n );\n }\n\n public patchPosition(\n form: { stopLoss?: number; takeProfit?: number; volume?: number },\n uuid: string\n ): Observable<IPosition> {\n return this.httpClient.patch<IPosition>(\n endpoint.patchPosition + uuid + '/',\n form\n );\n }\n\n public patchOrder(value: any, uuid: string): Observable<IResponseOrder> {\n return this.httpClient.patch<IResponseOrder>(\n endpoint.patchOrder + uuid + '/',\n value\n );\n }\n\n public getPositionsTradeSummary(\n data?: Map<string, any>\n ): Observable<ITradeSummary[]> {\n let params = new HttpParams();\n if (data) {\n for (let entry of data.entries()) {\n params = params.append(entry[0], entry[1]);\n }\n }\n\n return this.httpClient.get<ITradeSummary[]>(endpoint.tradeSummary, {\n params: params,\n });\n }\n\n public getPositionsSummaryDealing(\n data?: Map<string, any>\n ): Observable<IPositionSummaryDealing[]> {\n let params = new HttpParams();\n if (data) {\n for (let entry of data.entries()) {\n params = params.append(entry[0], entry[1]);\n }\n }\n\n return this.httpClient.get<IPositionSummaryDealing[]>(\n endpoint.positionSummaryDealing,\n {\n params: params,\n }\n );\n }\n\n public closeAllPositions(uuidAccountTrd: string) {\n return this.httpClient.get<Array<IResponseClose>>(\n `/accounts/trading-accounts/${uuidAccountTrd}/close-all-positions/`\n );\n }\n\n public get positionSelected() {\n return this.position.getValue();\n }\n\n public cancelAllOrders<T>(uuidAccountTrd: string) {\n return this.httpClient\n .get<T>(`/accounts/trading-accounts/${uuidAccountTrd}/cancel-all-orders/`)\n .pipe(\n tap(() => {\n this.refresh$.next();\n })\n );\n }\n\n public getTotalPositions<T>(data?: Map<string,any>) {\n let params = new HttpParams()\n if (data) {\n for (let entry of data.entries()) {\n params = params.append(entry[0], entry[1]);\n }\n }\n return this.httpClient.get<T>(endpoint.listOpen + 'totals/', { params })\n }\n\n public getClosedPositionsTotals<T>(data?: Map<string,any>) {\n let params = new HttpParams()\n if (data) {\n for (let entry of data.entries()) {\n params = params.append(entry[0], entry[1]);\n }\n }\n return this.httpClient.get<T>(endpoint.closePosition + 'totals/', { params })\n }\n\n public getActiveOrdersTotals<T>(data?: Map<string,any>) {\n let params = new HttpParams()\n if (data) {\n for (let entry of data.entries()) {\n params = params.append(entry[0], entry[1]);\n }\n }\n return this.httpClient.get<T>(endpoint.orders + 'totals/', { params })\n }\n\n public setPendingOrders(orders: Array<IOrder>) {\n this.pendingOrders$.next(orders)\n }\n\n public setClosePositions(closePositions: Array<IClosePosition>) {\n this.closePositions$.next(closePositions)\n }\n\n public getListPositionsSlaves<T>(id: string, data?: Map<string,any>) {\n let params = new HttpParams()\n if (data) {\n for (let entry of data.entries()) {\n params = params.append(entry[0], entry[1]);\n }\n }\n\n return this.httpClient.get<T>(`${endpoint.listOpen}${id}/slaves/`, { params })\n }\n\n public closeMultiplePositions<F,R>(payload: F) {\n return this.httpClient.post<R>(endpoint.closeMultiple, payload)\n }\n\n public getListPositionsHistorySlaves<T>(id: string, data?: Map<string,any>, headers?: HttpHeaders) {\n let params = new HttpParams()\n if (data) {\n for (let entry of data.entries()) {\n params = params.append(entry[0], entry[1]);\n }\n }\n\n \n return this.httpClient.get<T>(`${endpoint.closePosition}${id}/slaves/`, \n headers\n ? {\n params,\n headers,\n observe: 'body',\n responseType: 'blob' as 'json',\n }\n : {\n params,\n }\n )\n }\n\n public getPositionHistoryByUUID<T>(uid: string) {\n return this.httpClient.get<T>(`${endpoint.closePosition}${uid}/`)\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-excent-serv-positions',\n template: `\n <p>\n excent-serv-positions works!\n </p>\n `,\n styles: [\n ]\n})\nexport class ExcentServPositionsComponent {\n}\n","import { NgModule } from '@angular/core';\nimport { ExcentServPositionsComponent } from './excent-serv-positions.component';\n\n\n\n@NgModule({\n declarations: [\n ExcentServPositionsComponent\n ],\n imports: [\n ],\n exports: [\n ExcentServPositionsComponent\n ]\n})\nexport class ExcentServPositionsModule { }\n","/*\n * Public API Surface of excent-serv-positions\n */\n\nexport * from './lib/excent-serv-positions.service';\nexport * from './lib/excent-serv-positions.component';\nexport * from './lib/excent-serv-positions.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"excent-excent-serv-positions.mjs","sources":["../../../projects/excent-serv-positions/src/lib/excent-serv-positions.enpoints.ts","../../../projects/excent-serv-positions/src/lib/excent-serv-positions.service.ts","../../../projects/excent-serv-positions/src/lib/excent-serv-positions.component.ts","../../../projects/excent-serv-positions/src/lib/excent-serv-positions.module.ts","../../../projects/excent-serv-positions/src/public-api.ts","../../../projects/excent-serv-positions/src/excent-excent-serv-positions.ts"],"sourcesContent":["export const endpoint = {\n open: '/position/open/',\n closed: '/position/closed/',\n orders: '/positions/orders/',\n wsCancelOrder: '/position/order/cancel/',\n closePosition: '/positions/position-history/',\n positionSummary: '/report/position-summary',\n listOpen: '/positions/trading-positions/',\n create: '/positions/trading-positions/',\n createOrder: '/positions/orders/',\n cancellOrder1: '/positions/orders/',\n cancellOrder2: '/cancel/',\n patchPosition: '/positions/trading-positions/',\n patchOrder: '/positions/orders/',\n tradeSummary: '/positions/trade-summary/',\n positionSummaryDealing: '/positions/positions-summary/',\n closeOnHedge: '/positions/trading-positions/',\n closeMultiple: '/positions/trading-positions/close-all'\n};\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport {\n IClosePosition,\n IOrder,\n IPayloadCreatePosition,\n IPosition,\n IPositionSummaryDealing,\n IResponseClose,\n IResponseOrder,\n ITradeSummary,\n ResponsePaginator,\n Symbol\n} from '@excent/excent-models';\nimport { BehaviorSubject, Observable, Subject, tap } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { endpoint } from './excent-serv-positions.enpoints';\n\ntype IPositionResponse = Partial<IPosition> & { currentPrice: number };\n@Injectable({\n providedIn: 'root',\n})\nexport class ExcentServPositionsService {\n private _refresh$ = new Subject<void>();\n private position = new BehaviorSubject<IPosition | null>(null);\n public pendingOrders$ = new BehaviorSubject<Array<IOrder>>([]);\n public closePositions$ = new BehaviorSubject<Array<IClosePosition>>([]);\n public position$ = this.position.asObservable();\n public operationOrder: BehaviorSubject<{ type: string; value: IOrder }> =\n new BehaviorSubject<{ type: string; value: IOrder }>({\n type: '',\n value: {\n uuid: '',\n id: '',\n tradingAccount: '',\n symbol: new Symbol().id,\n idSymbol: 0,\n orderType: 0,\n orderStatus: 0,\n volume: 0,\n buy: false,\n stopLoss: 0,\n takeProfit: 0,\n expirationDate: null,\n activationPrice: 0,\n cancellationDate: new Date(),\n creationDate: new Date(),\n },\n });\n\n constructor(private httpClient: HttpClient) {}\n\n get refresh$(): Subject<void> {\n return this._refresh$;\n }\n\n public reloadPositions(idUser: number): Observable<IPosition[]> {\n const params = new HttpParams().set('idAccount', idUser);\n return this.httpClient.get<IPosition[]>(endpoint.open, { params });\n }\n\n public getOpenCsv<T>(headers: HttpHeaders, data?: Map<string, any>) {\n let params = new HttpParams();\n\n if (data) {\n for (let entry of data.entries()) {\n params = params.append(entry[0], entry[1]);\n }\n }\n\n return this.httpClient.get(endpoint.listOpen, {\n params,\n headers,\n observe: 'body',\n responseType: 'blob' as 'json',\n });\n }\n\n public getOpen<T>(\n uuid?: string,\n data?: Map<string, any>\n ): Observable<T> {\n\n let params = new HttpParams()\n if (uuid) params = params.append('tradingAccount', uuid);\n if (data) {\n for (let entry of data.entries()) {\n params = params.append(entry[0], entry[1]);\n }\n }\n\n return this.httpClient\n .get<T>(endpoint.listOpen, {\n params,\n })\n .pipe(\n map((el: any) => {\n if(el.results) {\n let positions = (el as ResponsePaginator<IPosition>).results.map((position: any) => ({\n ...position,\n symbolId: position.symbol,\n symbol: new Symbol(),\n }));\n return {...el, 'results': positions }\n } else {\n el = (el as Array<IPosition>).map((position) => ({\n ...position,\n symbolId: position.symbol,\n symbol: new Symbol(),\n }));\n return el;\n }\n })\n );\n }\n\n public getCloseCsv<T>(headers: HttpHeaders, data?: Map<string, any>) {\n let params = new HttpParams();\n\n if (data) {\n for (let entry of data.entries()) {\n params = params.append(entry[0], entry[1]);\n }\n }\n return this.httpClient.get(endpoint.closePosition, {\n params,\n headers,\n observe: 'body',\n responseType: 'blob' as 'json',\n });\n }\n\n public getCloseCSVTrading<T>(data?: Map<string, any>, headers?: HttpHeaders) {\n let params = new HttpParams();\n\n if (data) {\n for (let entry of data.entries()) {\n params = params.append(entry[0], entry[1]);\n }\n }\n\n return this.httpClient.get<T>(\n endpoint.closePosition,\n headers\n ? {\n params,\n headers,\n observe: 'body',\n responseType: 'blob' as 'json',\n }\n : {\n params,\n }\n );\n }\n\n public getClose<T>(\n tradingAccountUuid?: string,\n data?: Map<string, any>\n ): Observable<T> {\n \n let params = new HttpParams()\n\n if (tradingAccountUuid) {\n params = params.append('tradingAccount', tradingAccountUuid);\n }\n\n if (data) {\n for (let entry of data.entries()) {\n params = params.append(entry[0], entry[1]);\n }\n }\n return this.httpClient.get<T>(endpoint.closePosition, {\n params,\n });\n }\n\n public getOrdersCsv<T>(headers: HttpHeaders, data?: Map<string, any>) {\n let params = new HttpParams();\n\n if (data) {\n for (let entry of data.entries()) {\n params = params.append(entry[0], entry[1]);\n }\n }\n\n return this.httpClient.get(endpoint.orders, {\n params,\n headers,\n observe: 'body',\n responseType: 'blob' as 'json',\n });\n }\n\n public getOrders<T>(\n tradingAccountUuid?: string,\n orderStatus?: number,\n data?: Map<string, any>\n ): Observable<T> {\n\n let params = new HttpParams()\n\n if (tradingAccountUuid) {\n params = params.set('tradingAccount', tradingAccountUuid);\n }\n\n if (orderStatus) {\n params = params.append('orderStatus', orderStatus);\n }\n\n if (data) {\n for (let entry of data.entries()) {\n params = params.append(entry[0], entry[1]);\n }\n }\n return this.httpClient.get<T>(endpoint.orders, {\n params,\n });\n }\n\n public create(value: IPayloadCreatePosition): Observable<IPosition> {\n return this.httpClient.post<IPosition>(endpoint.create, value).pipe(\n tap(() => {\n this._refresh$.next();\n })\n );\n }\n\n public createOrder<T, U>(value: U) {\n return this.httpClient.post<T>(endpoint.createOrder, value);\n }\n\n public closePositions(\n volume: { volume: number },\n uuid: string\n ): Observable<IClosePosition> {\n return this.httpClient\n .post<IClosePosition>(\n `/positions/trading-positions/${uuid}/close/`,\n volume\n )\n .pipe(\n tap(() => {\n this.refresh$.next();\n })\n );\n }\n\n public closeWithHedge(uuid: string): Observable<IPosition> {\n return this.httpClient\n .post<IPosition>( \n `${endpoint.closeOnHedge}${uuid}/close-on-hedge/`,\n null\n )\n .pipe(\n tap(() => {\n this.refresh$.next();\n })\n )\n }\n\n public setPosition(position: IPosition | null) {\n this.position.next(position);\n }\n\n public cancellOrder(uuid: string): Observable<IResponseOrder> {\n return this.httpClient.post<IResponseOrder>(\n endpoint.cancellOrder1 + uuid + endpoint.cancellOrder2,\n {}\n );\n }\n\n public patchPosition(\n form: { stopLoss?: number; takeProfit?: number; volume?: number },\n uuid: string\n ): Observable<IPosition> {\n return this.httpClient.patch<IPosition>(\n endpoint.patchPosition + uuid + '/',\n form\n );\n }\n\n public patchOrder(value: any, uuid: string): Observable<IResponseOrder> {\n return this.httpClient.patch<IResponseOrder>(\n endpoint.patchOrder + uuid + '/',\n value\n );\n }\n\n public getPositionsTradeSummary(\n data?: Map<string, any>\n ): Observable<ITradeSummary[]> {\n let params = new HttpParams();\n if (data) {\n for (let entry of data.entries()) {\n params = params.append(entry[0], entry[1]);\n }\n }\n\n return this.httpClient.get<ITradeSummary[]>(endpoint.tradeSummary, {\n params: params,\n });\n }\n\n public getPositionsSummaryDealing(\n data?: Map<string, any>\n ): Observable<IPositionSummaryDealing[]> {\n let params = new HttpParams();\n if (data) {\n for (let entry of data.entries()) {\n params = params.append(entry[0], entry[1]);\n }\n }\n\n return this.httpClient.get<IPositionSummaryDealing[]>(\n endpoint.positionSummaryDealing,\n {\n params: params,\n }\n );\n }\n\n public closeAllPositions(uuidAccountTrd: string) {\n return this.httpClient.get<Array<IResponseClose>>(\n `/accounts/trading-accounts/${uuidAccountTrd}/close-all-positions/`\n );\n }\n\n public get positionSelected() {\n return this.position.getValue();\n }\n\n public cancelAllOrders<T>(uuidAccountTrd: string) {\n return this.httpClient\n .get<T>(`/accounts/trading-accounts/${uuidAccountTrd}/cancel-all-orders/`)\n .pipe(\n tap(() => {\n this.refresh$.next();\n })\n );\n }\n\n public getTotalPositions<T>(data?: Map<string,any>) {\n let params = new HttpParams()\n if (data) {\n for (let entry of data.entries()) {\n params = params.append(entry[0], entry[1]);\n }\n }\n return this.httpClient.get<T>(endpoint.listOpen + 'totals/', { params })\n }\n\n public getClosedPositionsTotals<T>(data?: Map<string,any>) {\n let params = new HttpParams()\n if (data) {\n for (let entry of data.entries()) {\n params = params.append(entry[0], entry[1]);\n }\n }\n return this.httpClient.get<T>(endpoint.closePosition + 'totals/', { params })\n }\n\n public getActiveOrdersTotals<T>(data?: Map<string,any>) {\n let params = new HttpParams()\n if (data) {\n for (let entry of data.entries()) {\n params = params.append(entry[0], entry[1]);\n }\n }\n return this.httpClient.get<T>(endpoint.orders + 'totals/', { params })\n }\n\n public setPendingOrders(orders: Array<IOrder>) {\n this.pendingOrders$.next(orders)\n }\n\n public setClosePositions(closePositions: Array<IClosePosition>) {\n this.closePositions$.next(closePositions)\n }\n\n public getListPositionsSlaves<T>(id: string, data?: Map<string,any>) {\n let params = new HttpParams()\n if (data) {\n for (let entry of data.entries()) {\n params = params.append(entry[0], entry[1]);\n }\n }\n\n return this.httpClient.get<T>(`${endpoint.listOpen}${id}/slaves/`, { params })\n }\n\n public closeMultiplePositions<F,R>(payload: F) {\n return this.httpClient.post<R>(endpoint.closeMultiple, payload)\n }\n\n public getListPositionsHistorySlaves<T>(id: string, data?: Map<string,any>, headers?: HttpHeaders) {\n let params = new HttpParams()\n if (data) {\n for (let entry of data.entries()) {\n params = params.append(entry[0], entry[1]);\n }\n }\n\n \n return this.httpClient.get<T>(`${endpoint.closePosition}${id}/slaves/`, \n headers\n ? {\n params,\n headers,\n observe: 'body',\n responseType: 'blob' as 'json',\n }\n : {\n params,\n }\n )\n }\n\n public getPositionHistoryByUUID<T>(uid: string) {\n return this.httpClient.get<T>(`${endpoint.closePosition}${uid}/`)\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-excent-serv-positions',\n standalone: false,\n template: `\n <p>\n excent-serv-positions works!\n </p>\n `,\n styles: [\n ]\n})\nexport class ExcentServPositionsComponent {\n}\n","import { NgModule } from '@angular/core';\nimport { ExcentServPositionsComponent } from './excent-serv-positions.component';\n\n\n\n@NgModule({\n declarations: [\n ExcentServPositionsComponent\n ],\n imports: [\n ],\n exports: [\n ExcentServPositionsComponent\n ]\n})\nexport class ExcentServPositionsModule { }\n","/*\n * Public API Surface of excent-serv-positions\n */\n\nexport * from './lib/excent-serv-positions.service';\nexport * from './lib/excent-serv-positions.component';\nexport * from './lib/excent-serv-positions.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/index.d.ts CHANGED
@@ -1,5 +1,70 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- /// <amd-module name="@excent/excent-serv-positions" />
5
- export * from './public-api';
1
+ import { HttpClient, HttpHeaders } from '@angular/common/http';
2
+ import { IOrder, IClosePosition, IPosition, IPayloadCreatePosition, IResponseOrder, ITradeSummary, IPositionSummaryDealing, IResponseClose } from '@excent/excent-models';
3
+ import { BehaviorSubject, Observable, Subject } from 'rxjs';
4
+ import * as i0 from '@angular/core';
5
+
6
+ declare class ExcentServPositionsService {
7
+ private httpClient;
8
+ private _refresh$;
9
+ private position;
10
+ pendingOrders$: BehaviorSubject<IOrder[]>;
11
+ closePositions$: BehaviorSubject<IClosePosition[]>;
12
+ position$: Observable<IPosition | null>;
13
+ operationOrder: BehaviorSubject<{
14
+ type: string;
15
+ value: IOrder;
16
+ }>;
17
+ constructor(httpClient: HttpClient);
18
+ get refresh$(): Subject<void>;
19
+ reloadPositions(idUser: number): Observable<IPosition[]>;
20
+ getOpenCsv<T>(headers: HttpHeaders, data?: Map<string, any>): Observable<Object>;
21
+ getOpen<T>(uuid?: string, data?: Map<string, any>): Observable<T>;
22
+ getCloseCsv<T>(headers: HttpHeaders, data?: Map<string, any>): Observable<Object>;
23
+ getCloseCSVTrading<T>(data?: Map<string, any>, headers?: HttpHeaders): Observable<T>;
24
+ getClose<T>(tradingAccountUuid?: string, data?: Map<string, any>): Observable<T>;
25
+ getOrdersCsv<T>(headers: HttpHeaders, data?: Map<string, any>): Observable<Object>;
26
+ getOrders<T>(tradingAccountUuid?: string, orderStatus?: number, data?: Map<string, any>): Observable<T>;
27
+ create(value: IPayloadCreatePosition): Observable<IPosition>;
28
+ createOrder<T, U>(value: U): Observable<T>;
29
+ closePositions(volume: {
30
+ volume: number;
31
+ }, uuid: string): Observable<IClosePosition>;
32
+ closeWithHedge(uuid: string): Observable<IPosition>;
33
+ setPosition(position: IPosition | null): void;
34
+ cancellOrder(uuid: string): Observable<IResponseOrder>;
35
+ patchPosition(form: {
36
+ stopLoss?: number;
37
+ takeProfit?: number;
38
+ volume?: number;
39
+ }, uuid: string): Observable<IPosition>;
40
+ patchOrder(value: any, uuid: string): Observable<IResponseOrder>;
41
+ getPositionsTradeSummary(data?: Map<string, any>): Observable<ITradeSummary[]>;
42
+ getPositionsSummaryDealing(data?: Map<string, any>): Observable<IPositionSummaryDealing[]>;
43
+ closeAllPositions(uuidAccountTrd: string): Observable<IResponseClose[]>;
44
+ get positionSelected(): IPosition | null;
45
+ cancelAllOrders<T>(uuidAccountTrd: string): Observable<T>;
46
+ getTotalPositions<T>(data?: Map<string, any>): Observable<T>;
47
+ getClosedPositionsTotals<T>(data?: Map<string, any>): Observable<T>;
48
+ getActiveOrdersTotals<T>(data?: Map<string, any>): Observable<T>;
49
+ setPendingOrders(orders: Array<IOrder>): void;
50
+ setClosePositions(closePositions: Array<IClosePosition>): void;
51
+ getListPositionsSlaves<T>(id: string, data?: Map<string, any>): Observable<T>;
52
+ closeMultiplePositions<F, R>(payload: F): Observable<R>;
53
+ getListPositionsHistorySlaves<T>(id: string, data?: Map<string, any>, headers?: HttpHeaders): Observable<T>;
54
+ getPositionHistoryByUUID<T>(uid: string): Observable<T>;
55
+ static ɵfac: i0.ɵɵFactoryDeclaration<ExcentServPositionsService, never>;
56
+ static ɵprov: i0.ɵɵInjectableDeclaration<ExcentServPositionsService>;
57
+ }
58
+
59
+ declare class ExcentServPositionsComponent {
60
+ static ɵfac: i0.ɵɵFactoryDeclaration<ExcentServPositionsComponent, never>;
61
+ static ɵcmp: i0.ɵɵComponentDeclaration<ExcentServPositionsComponent, "lib-excent-serv-positions", never, {}, {}, never, never, false, never>;
62
+ }
63
+
64
+ declare class ExcentServPositionsModule {
65
+ static ɵfac: i0.ɵɵFactoryDeclaration<ExcentServPositionsModule, never>;
66
+ static ɵmod: i0.ɵɵNgModuleDeclaration<ExcentServPositionsModule, [typeof ExcentServPositionsComponent], never, [typeof ExcentServPositionsComponent]>;
67
+ static ɵinj: i0.ɵɵInjectorDeclaration<ExcentServPositionsModule>;
68
+ }
69
+
70
+ export { ExcentServPositionsComponent, ExcentServPositionsModule, ExcentServPositionsService };
package/package.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "name": "@excent/excent-serv-positions",
3
- "version": "2.0.0",
3
+ "version": "3.0.1",
4
4
  "peerDependencies": {
5
- "@angular/common": "^17.0.0",
6
- "@angular/core": "^17.0.0",
7
- "@excent/excent-models": "^1.0.0",
5
+ "@angular/common": "^16 || ^17 || ^18",
6
+ "@angular/core": "^16 || ^17 || ^18",
7
+ "@excent/excent-models": "^2.0.0",
8
8
  "rxjs": "^7.8.0"
9
9
  },
10
10
  "dependencies": {
11
11
  "tslib": "^2.6.2"
12
12
  },
13
13
  "sideEffects": false,
14
- "description": "This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 15.2.0.",
14
+ "description": "This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 18.2.14.",
15
15
  "main": "index.js",
16
16
  "repository": {
17
17
  "type": "git",
@@ -27,8 +27,6 @@
27
27
  },
28
28
  ".": {
29
29
  "types": "./index.d.ts",
30
- "esm2022": "./esm2022/excent-excent-serv-positions.mjs",
31
- "esm": "./esm2022/excent-excent-serv-positions.mjs",
32
30
  "default": "./fesm2022/excent-excent-serv-positions.mjs"
33
31
  }
34
32
  }
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZW50LWV4Y2VudC1zZXJ2LXBvc2l0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2V4Y2VudC1zZXJ2LXBvc2l0aW9ucy9zcmMvZXhjZW50LWV4Y2VudC1zZXJ2LXBvc2l0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -1,19 +0,0 @@
1
- import { Component } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class ExcentServPositionsComponent {
4
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExcentServPositionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ExcentServPositionsComponent, selector: "lib-excent-serv-positions", ngImport: i0, template: `
6
- <p>
7
- excent-serv-positions works!
8
- </p>
9
- `, isInline: true }); }
10
- }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExcentServPositionsComponent, decorators: [{
12
- type: Component,
13
- args: [{ selector: 'lib-excent-serv-positions', template: `
14
- <p>
15
- excent-serv-positions works!
16
- </p>
17
- ` }]
18
- }] });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZW50LXNlcnYtcG9zaXRpb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2V4Y2VudC1zZXJ2LXBvc2l0aW9ucy9zcmMvbGliL2V4Y2VudC1zZXJ2LXBvc2l0aW9ucy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFZMUMsTUFBTSxPQUFPLDRCQUE0QjsrR0FBNUIsNEJBQTRCO21HQUE1Qiw0QkFBNEIsaUVBUjdCOzs7O0dBSVQ7OzRGQUlVLDRCQUE0QjtrQkFWeEMsU0FBUzsrQkFDRSwyQkFBMkIsWUFDM0I7Ozs7R0FJVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItZXhjZW50LXNlcnYtcG9zaXRpb25zJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8cD5cbiAgICAgIGV4Y2VudC1zZXJ2LXBvc2l0aW9ucyB3b3JrcyFcbiAgICA8L3A+XG4gIGAsXG4gIHN0eWxlczogW1xuICBdXG59KVxuZXhwb3J0IGNsYXNzIEV4Y2VudFNlcnZQb3NpdGlvbnNDb21wb25lbnQge1xufVxuIl19
@@ -1,20 +0,0 @@
1
- export const endpoint = {
2
- open: '/position/open/',
3
- closed: '/position/closed/',
4
- orders: '/positions/orders/',
5
- wsCancelOrder: '/position/order/cancel/',
6
- closePosition: '/positions/position-history/',
7
- positionSummary: '/report/position-summary',
8
- listOpen: '/positions/trading-positions/',
9
- create: '/positions/trading-positions/',
10
- createOrder: '/positions/orders/',
11
- cancellOrder1: '/positions/orders/',
12
- cancellOrder2: '/cancel/',
13
- patchPosition: '/positions/trading-positions/',
14
- patchOrder: '/positions/orders/',
15
- tradeSummary: '/positions/trade-summary/',
16
- positionSummaryDealing: '/positions/positions-summary/',
17
- closeOnHedge: '/positions/trading-positions/',
18
- closeMultiple: '/positions/trading-positions/close-all'
19
- };
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZW50LXNlcnYtcG9zaXRpb25zLmVucG9pbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZXhjZW50LXNlcnYtcG9zaXRpb25zL3NyYy9saWIvZXhjZW50LXNlcnYtcG9zaXRpb25zLmVucG9pbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRztJQUN0QixJQUFJLEVBQUUsaUJBQWlCO0lBQ3ZCLE1BQU0sRUFBRSxtQkFBbUI7SUFDM0IsTUFBTSxFQUFFLG9CQUFvQjtJQUM1QixhQUFhLEVBQUUseUJBQXlCO0lBQ3hDLGFBQWEsRUFBRSw4QkFBOEI7SUFDN0MsZUFBZSxFQUFFLDBCQUEwQjtJQUMzQyxRQUFRLEVBQUUsK0JBQStCO0lBQ3pDLE1BQU0sRUFBRSwrQkFBK0I7SUFDdkMsV0FBVyxFQUFFLG9CQUFvQjtJQUNqQyxhQUFhLEVBQUUsb0JBQW9CO0lBQ25DLGFBQWEsRUFBRSxVQUFVO0lBQ3pCLGFBQWEsRUFBRSwrQkFBK0I7SUFDOUMsVUFBVSxFQUFFLG9CQUFvQjtJQUNoQyxZQUFZLEVBQUUsMkJBQTJCO0lBQ3pDLHNCQUFzQixFQUFFLCtCQUErQjtJQUN2RCxZQUFZLEVBQUUsK0JBQStCO0lBQzdDLGFBQWEsRUFBRSx3Q0FBd0M7Q0FDeEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBlbmRwb2ludCA9IHtcbiAgb3BlbjogJy9wb3NpdGlvbi9vcGVuLycsXG4gIGNsb3NlZDogJy9wb3NpdGlvbi9jbG9zZWQvJyxcbiAgb3JkZXJzOiAnL3Bvc2l0aW9ucy9vcmRlcnMvJyxcbiAgd3NDYW5jZWxPcmRlcjogJy9wb3NpdGlvbi9vcmRlci9jYW5jZWwvJyxcbiAgY2xvc2VQb3NpdGlvbjogJy9wb3NpdGlvbnMvcG9zaXRpb24taGlzdG9yeS8nLFxuICBwb3NpdGlvblN1bW1hcnk6ICcvcmVwb3J0L3Bvc2l0aW9uLXN1bW1hcnknLFxuICBsaXN0T3BlbjogJy9wb3NpdGlvbnMvdHJhZGluZy1wb3NpdGlvbnMvJyxcbiAgY3JlYXRlOiAnL3Bvc2l0aW9ucy90cmFkaW5nLXBvc2l0aW9ucy8nLFxuICBjcmVhdGVPcmRlcjogJy9wb3NpdGlvbnMvb3JkZXJzLycsXG4gIGNhbmNlbGxPcmRlcjE6ICcvcG9zaXRpb25zL29yZGVycy8nLFxuICBjYW5jZWxsT3JkZXIyOiAnL2NhbmNlbC8nLFxuICBwYXRjaFBvc2l0aW9uOiAnL3Bvc2l0aW9ucy90cmFkaW5nLXBvc2l0aW9ucy8nLFxuICBwYXRjaE9yZGVyOiAnL3Bvc2l0aW9ucy9vcmRlcnMvJyxcbiAgdHJhZGVTdW1tYXJ5OiAnL3Bvc2l0aW9ucy90cmFkZS1zdW1tYXJ5LycsXG4gIHBvc2l0aW9uU3VtbWFyeURlYWxpbmc6ICcvcG9zaXRpb25zL3Bvc2l0aW9ucy1zdW1tYXJ5LycsXG4gIGNsb3NlT25IZWRnZTogJy9wb3NpdGlvbnMvdHJhZGluZy1wb3NpdGlvbnMvJyxcbiAgY2xvc2VNdWx0aXBsZTogJy9wb3NpdGlvbnMvdHJhZGluZy1wb3NpdGlvbnMvY2xvc2UtYWxsJ1xufTtcbiJdfQ==
@@ -1,21 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { ExcentServPositionsComponent } from './excent-serv-positions.component';
3
- import * as i0 from "@angular/core";
4
- export class ExcentServPositionsModule {
5
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExcentServPositionsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: ExcentServPositionsModule, declarations: [ExcentServPositionsComponent], exports: [ExcentServPositionsComponent] }); }
7
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExcentServPositionsModule }); }
8
- }
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExcentServPositionsModule, decorators: [{
10
- type: NgModule,
11
- args: [{
12
- declarations: [
13
- ExcentServPositionsComponent
14
- ],
15
- imports: [],
16
- exports: [
17
- ExcentServPositionsComponent
18
- ]
19
- }]
20
- }] });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZW50LXNlcnYtcG9zaXRpb25zLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2V4Y2VudC1zZXJ2LXBvc2l0aW9ucy9zcmMvbGliL2V4Y2VudC1zZXJ2LXBvc2l0aW9ucy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFjakYsTUFBTSxPQUFPLHlCQUF5QjsrR0FBekIseUJBQXlCO2dIQUF6Qix5QkFBeUIsaUJBUmxDLDRCQUE0QixhQUs1Qiw0QkFBNEI7Z0hBR25CLHlCQUF5Qjs7NEZBQXpCLHlCQUF5QjtrQkFWckMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osNEJBQTRCO3FCQUM3QjtvQkFDRCxPQUFPLEVBQUUsRUFDUjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsNEJBQTRCO3FCQUM3QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFeGNlbnRTZXJ2UG9zaXRpb25zQ29tcG9uZW50IH0gZnJvbSAnLi9leGNlbnQtc2Vydi1wb3NpdGlvbnMuY29tcG9uZW50JztcblxuXG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEV4Y2VudFNlcnZQb3NpdGlvbnNDb21wb25lbnRcbiAgXSxcbiAgaW1wb3J0czogW1xuICBdLFxuICBleHBvcnRzOiBbXG4gICAgRXhjZW50U2VydlBvc2l0aW9uc0NvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEV4Y2VudFNlcnZQb3NpdGlvbnNNb2R1bGUgeyB9XG4iXX0=
@@ -1,311 +0,0 @@
1
- import { HttpParams } from '@angular/common/http';
2
- import { Injectable } from '@angular/core';
3
- import { Symbol } from '@excent/excent-models';
4
- import { BehaviorSubject, Subject, tap } from 'rxjs';
5
- import { map } from 'rxjs/operators';
6
- import { endpoint } from './excent-serv-positions.enpoints';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/common/http";
9
- export class ExcentServPositionsService {
10
- constructor(httpClient) {
11
- this.httpClient = httpClient;
12
- this._refresh$ = new Subject();
13
- this.position = new BehaviorSubject(null);
14
- this.pendingOrders$ = new BehaviorSubject([]);
15
- this.closePositions$ = new BehaviorSubject([]);
16
- this.position$ = this.position.asObservable();
17
- this.operationOrder = new BehaviorSubject({
18
- type: '',
19
- value: {
20
- uuid: '',
21
- id: '',
22
- tradingAccount: '',
23
- symbol: new Symbol().id,
24
- idSymbol: 0,
25
- orderType: 0,
26
- orderStatus: 0,
27
- volume: 0,
28
- buy: false,
29
- stopLoss: 0,
30
- takeProfit: 0,
31
- activationPrice: 0,
32
- cancellationDate: new Date(),
33
- creationDate: new Date(),
34
- },
35
- });
36
- }
37
- get refresh$() {
38
- return this._refresh$;
39
- }
40
- reloadPositions(idUser) {
41
- const params = new HttpParams().set('idAccount', idUser);
42
- return this.httpClient.get(endpoint.open, { params });
43
- }
44
- getOpenCsv(headers, data) {
45
- let params = new HttpParams();
46
- if (data) {
47
- for (let entry of data.entries()) {
48
- params = params.append(entry[0], entry[1]);
49
- }
50
- }
51
- return this.httpClient.get(endpoint.listOpen, {
52
- params,
53
- headers,
54
- observe: 'body',
55
- responseType: 'blob',
56
- });
57
- }
58
- getOpen(uuid, data) {
59
- let params = new HttpParams();
60
- if (uuid)
61
- params = params.append('tradingAccount', uuid);
62
- if (data) {
63
- for (let entry of data.entries()) {
64
- params = params.append(entry[0], entry[1]);
65
- }
66
- }
67
- return this.httpClient
68
- .get(endpoint.listOpen, {
69
- params,
70
- })
71
- .pipe(map((el) => {
72
- if (el.results) {
73
- let positions = el.results.map((position) => ({
74
- ...position,
75
- symbolId: position.symbol,
76
- symbol: new Symbol(),
77
- }));
78
- return { ...el, 'results': positions };
79
- }
80
- else {
81
- el = el.map((position) => ({
82
- ...position,
83
- symbolId: position.symbol,
84
- symbol: new Symbol(),
85
- }));
86
- return el;
87
- }
88
- }));
89
- }
90
- getCloseCsv(headers, data) {
91
- let params = new HttpParams();
92
- if (data) {
93
- for (let entry of data.entries()) {
94
- params = params.append(entry[0], entry[1]);
95
- }
96
- }
97
- return this.httpClient.get(endpoint.closePosition, {
98
- params,
99
- headers,
100
- observe: 'body',
101
- responseType: 'blob',
102
- });
103
- }
104
- getCloseCSVTrading(data, headers) {
105
- let params = new HttpParams();
106
- if (data) {
107
- for (let entry of data.entries()) {
108
- params = params.append(entry[0], entry[1]);
109
- }
110
- }
111
- return this.httpClient.get(endpoint.closePosition, headers
112
- ? {
113
- params,
114
- headers,
115
- observe: 'body',
116
- responseType: 'blob',
117
- }
118
- : {
119
- params,
120
- });
121
- }
122
- getClose(tradingAccountUuid, data) {
123
- let params = new HttpParams();
124
- if (tradingAccountUuid) {
125
- params = params.append('tradingAccount', tradingAccountUuid);
126
- }
127
- if (data) {
128
- for (let entry of data.entries()) {
129
- params = params.append(entry[0], entry[1]);
130
- }
131
- }
132
- return this.httpClient.get(endpoint.closePosition, {
133
- params,
134
- });
135
- }
136
- getOrdersCsv(headers, data) {
137
- let params = new HttpParams();
138
- if (data) {
139
- for (let entry of data.entries()) {
140
- params = params.append(entry[0], entry[1]);
141
- }
142
- }
143
- return this.httpClient.get(endpoint.orders, {
144
- params,
145
- headers,
146
- observe: 'body',
147
- responseType: 'blob',
148
- });
149
- }
150
- getOrders(tradingAccountUuid, orderStatus, data) {
151
- let params = new HttpParams();
152
- if (tradingAccountUuid) {
153
- params = params.set('tradingAccount', tradingAccountUuid);
154
- }
155
- if (orderStatus) {
156
- params = params.append('orderStatus', orderStatus);
157
- }
158
- if (data) {
159
- for (let entry of data.entries()) {
160
- params = params.append(entry[0], entry[1]);
161
- }
162
- }
163
- return this.httpClient.get(endpoint.orders, {
164
- params,
165
- });
166
- }
167
- create(value) {
168
- return this.httpClient.post(endpoint.create, value).pipe(tap(() => {
169
- this._refresh$.next();
170
- }));
171
- }
172
- createOrder(value) {
173
- return this.httpClient.post(endpoint.createOrder, value);
174
- }
175
- closePositions(volume, uuid) {
176
- return this.httpClient
177
- .post(`/positions/trading-positions/${uuid}/close/`, volume)
178
- .pipe(tap(() => {
179
- this.refresh$.next();
180
- }));
181
- }
182
- closeWithHedge(uuid) {
183
- return this.httpClient
184
- .post(`${endpoint.closeOnHedge}${uuid}/close-on-hedge/`, null)
185
- .pipe(tap(() => {
186
- this.refresh$.next();
187
- }));
188
- }
189
- setPosition(position) {
190
- this.position.next(position);
191
- }
192
- cancellOrder(uuid) {
193
- return this.httpClient.post(endpoint.cancellOrder1 + uuid + endpoint.cancellOrder2, {});
194
- }
195
- patchPosition(form, uuid) {
196
- return this.httpClient.patch(endpoint.patchPosition + uuid + '/', form);
197
- }
198
- patchOrder(value, uuid) {
199
- return this.httpClient.patch(endpoint.patchOrder + uuid + '/', value);
200
- }
201
- getPositionsTradeSummary(data) {
202
- let params = new HttpParams();
203
- if (data) {
204
- for (let entry of data.entries()) {
205
- params = params.append(entry[0], entry[1]);
206
- }
207
- }
208
- return this.httpClient.get(endpoint.tradeSummary, {
209
- params: params,
210
- });
211
- }
212
- getPositionsSummaryDealing(data) {
213
- let params = new HttpParams();
214
- if (data) {
215
- for (let entry of data.entries()) {
216
- params = params.append(entry[0], entry[1]);
217
- }
218
- }
219
- return this.httpClient.get(endpoint.positionSummaryDealing, {
220
- params: params,
221
- });
222
- }
223
- closeAllPositions(uuidAccountTrd) {
224
- return this.httpClient.get(`/accounts/trading-accounts/${uuidAccountTrd}/close-all-positions/`);
225
- }
226
- get positionSelected() {
227
- return this.position.getValue();
228
- }
229
- cancelAllOrders(uuidAccountTrd) {
230
- return this.httpClient
231
- .get(`/accounts/trading-accounts/${uuidAccountTrd}/cancel-all-orders/`)
232
- .pipe(tap(() => {
233
- this.refresh$.next();
234
- }));
235
- }
236
- getTotalPositions(data) {
237
- let params = new HttpParams();
238
- if (data) {
239
- for (let entry of data.entries()) {
240
- params = params.append(entry[0], entry[1]);
241
- }
242
- }
243
- return this.httpClient.get(endpoint.listOpen + 'totals/', { params });
244
- }
245
- getClosedPositionsTotals(data) {
246
- let params = new HttpParams();
247
- if (data) {
248
- for (let entry of data.entries()) {
249
- params = params.append(entry[0], entry[1]);
250
- }
251
- }
252
- return this.httpClient.get(endpoint.closePosition + 'totals/', { params });
253
- }
254
- getActiveOrdersTotals(data) {
255
- let params = new HttpParams();
256
- if (data) {
257
- for (let entry of data.entries()) {
258
- params = params.append(entry[0], entry[1]);
259
- }
260
- }
261
- return this.httpClient.get(endpoint.orders + 'totals/', { params });
262
- }
263
- setPendingOrders(orders) {
264
- this.pendingOrders$.next(orders);
265
- }
266
- setClosePositions(closePositions) {
267
- this.closePositions$.next(closePositions);
268
- }
269
- getListPositionsSlaves(id, data) {
270
- let params = new HttpParams();
271
- if (data) {
272
- for (let entry of data.entries()) {
273
- params = params.append(entry[0], entry[1]);
274
- }
275
- }
276
- return this.httpClient.get(`${endpoint.listOpen}${id}/slaves/`, { params });
277
- }
278
- closeMultiplePositions(payload) {
279
- return this.httpClient.post(endpoint.closeMultiple, payload);
280
- }
281
- getListPositionsHistorySlaves(id, data, headers) {
282
- let params = new HttpParams();
283
- if (data) {
284
- for (let entry of data.entries()) {
285
- params = params.append(entry[0], entry[1]);
286
- }
287
- }
288
- return this.httpClient.get(`${endpoint.closePosition}${id}/slaves/`, headers
289
- ? {
290
- params,
291
- headers,
292
- observe: 'body',
293
- responseType: 'blob',
294
- }
295
- : {
296
- params,
297
- });
298
- }
299
- getPositionHistoryByUUID(uid) {
300
- return this.httpClient.get(`${endpoint.closePosition}${uid}/`);
301
- }
302
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExcentServPositionsService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
303
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExcentServPositionsService, providedIn: 'root' }); }
304
- }
305
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExcentServPositionsService, decorators: [{
306
- type: Injectable,
307
- args: [{
308
- providedIn: 'root',
309
- }]
310
- }], ctorParameters: () => [{ type: i1.HttpClient }] });
311
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZW50LXNlcnYtcG9zaXRpb25zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9leGNlbnQtc2Vydi1wb3NpdGlvbnMvc3JjL2xpYi9leGNlbnQtc2Vydi1wb3NpdGlvbnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTJCLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQVVMLE1BQU0sRUFDUCxNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7QUFNNUQsTUFBTSxPQUFPLDBCQUEwQjtJQTJCckMsWUFBb0IsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQTFCbEMsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDaEMsYUFBUSxHQUFHLElBQUksZUFBZSxDQUFtQixJQUFJLENBQUMsQ0FBQztRQUN4RCxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFnQixFQUFFLENBQUMsQ0FBQztRQUN4RCxvQkFBZSxHQUFHLElBQUksZUFBZSxDQUF3QixFQUFFLENBQUMsQ0FBQztRQUNqRSxjQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN6QyxtQkFBYyxHQUNuQixJQUFJLGVBQWUsQ0FBa0M7WUFDbkQsSUFBSSxFQUFFLEVBQUU7WUFDUixLQUFLLEVBQUU7Z0JBQ0wsSUFBSSxFQUFFLEVBQUU7Z0JBQ1IsRUFBRSxFQUFFLEVBQUU7Z0JBQ04sY0FBYyxFQUFFLEVBQUU7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LEdBQUcsQ0FBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQTtJQUNuRSxDQUFDOytHQTdZVSwwQkFBMEI7bUhBQTFCLDBCQUEwQixjQUZ6QixNQUFNOzs0RkFFUCwwQkFBMEI7a0JBSHRDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBJQ2xvc2VQb3NpdGlvbixcbiAgSU9yZGVyLFxuICBJUGF5bG9hZENyZWF0ZVBvc2l0aW9uLFxuICBJUG9zaXRpb24sXG4gIElQb3NpdGlvblN1bW1hcnlEZWFsaW5nLFxuICBJUmVzcG9uc2VDbG9zZSxcbiAgSVJlc3BvbnNlT3JkZXIsXG4gIElUcmFkZVN1bW1hcnksXG4gIFJlc3BvbnNlUGFnaW5hdG9yLFxuICBTeW1ib2xcbn0gZnJvbSAnQGV4Y2VudC9leGNlbnQtbW9kZWxzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBlbmRwb2ludCB9IGZyb20gJy4vZXhjZW50LXNlcnYtcG9zaXRpb25zLmVucG9pbnRzJztcblxudHlwZSBJUG9zaXRpb25SZXNwb25zZSA9IFBhcnRpYWw8SVBvc2l0aW9uPiAmIHsgY3VycmVudFByaWNlOiBudW1iZXIgfTtcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBFeGNlbnRTZXJ2UG9zaXRpb25zU2VydmljZSB7XG4gIHByaXZhdGUgX3JlZnJlc2gkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBwb3NpdGlvbiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SVBvc2l0aW9uIHwgbnVsbD4obnVsbCk7XG4gIHB1YmxpYyBwZW5kaW5nT3JkZXJzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8SU9yZGVyPj4oW10pO1xuICBwdWJsaWMgY2xvc2VQb3NpdGlvbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcnJheTxJQ2xvc2VQb3NpdGlvbj4+KFtdKTtcbiAgcHVibGljIHBvc2l0aW9uJCA9IHRoaXMucG9zaXRpb24uYXNPYnNlcnZhYmxlKCk7XG4gIHB1YmxpYyBvcGVyYXRpb25PcmRlcjogQmVoYXZpb3JTdWJqZWN0PHsgdHlwZTogc3RyaW5nOyB2YWx1ZTogSU9yZGVyIH0+ID1cbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgdHlwZTogc3RyaW5nOyB2YWx1ZTogSU9yZGVyIH0+KHtcbiAgICAgIHR5cGU6ICcnLFxuICAgICAgdmFsdWU6IHtcbiAgICAgICAgdXVpZDogJycsXG4gICAgICAgIGlkOiAnJyxcbiAgICAgICAgdHJhZGluZ0FjY291bnQ6ICcnLFxuICAgICAgICBzeW1ib2w6IG5ldyBTeW1ib2woKS5pZCxcbiAgICAgICAgaWRTeW1ib2w6IDAsXG4gICAgICAgIG9yZGVyVHlwZTogMCxcbiAgICAgICAgb3JkZXJTdGF0dXM6IDAsXG4gICAgICAgIHZvbHVtZTogMCxcbiAgICAgICAgYnV5OiBmYWxzZSxcbiAgICAgICAgc3RvcExvc3M6IDAsXG4gICAgICAgIHRha2VQcm9maXQ6IDAsXG4gICAgICAgIGFjdGl2YXRpb25QcmljZTogMCxcbiAgICAgICAgY2FuY2VsbGF0aW9uRGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgY3JlYXRpb25EYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgfSxcbiAgICB9KTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQpIHt9XG5cbiAgZ2V0IHJlZnJlc2gkKCk6IFN1YmplY3Q8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWZyZXNoJDtcbiAgfVxuXG4gIHB1YmxpYyByZWxvYWRQb3NpdGlvbnMoaWRVc2VyOiBudW1iZXIpOiBPYnNlcnZhYmxlPElQb3NpdGlvbltdPiB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ2lkQWNjb3VudCcsIGlkVXNlcik7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8SVBvc2l0aW9uW10+KGVuZHBvaW50Lm9wZW4sIHsgcGFyYW1zIH0pO1xuICB9XG5cbiAgcHVibGljIGdldE9wZW5Dc3Y8VD4oaGVhZGVyczogSHR0cEhlYWRlcnMsIGRhdGE/OiBNYXA8c3RyaW5nLCBhbnk+KSB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgZm9yIChsZXQgZW50cnkgb2YgZGF0YS5lbnRyaWVzKCkpIHtcbiAgICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZChlbnRyeVswXSwgZW50cnlbMV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGVuZHBvaW50Lmxpc3RPcGVuLCB7XG4gICAgICBwYXJhbXMsXG4gICAgICBoZWFkZXJzLFxuICAgICAgb2JzZXJ2ZTogJ2JvZHknLFxuICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYicgYXMgJ2pzb24nLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldE9wZW48VD4oXG4gICAgdXVpZD86IHN0cmluZyxcbiAgICBkYXRhPzogTWFwPHN0cmluZywgYW55PlxuICApOiBPYnNlcnZhYmxlPFQ+IHtcblxuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpXG4gICAgaWYgKHV1aWQpIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3RyYWRpbmdBY2NvdW50JywgdXVpZCk7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGZvciAobGV0IGVudHJ5IG9mIGRhdGEuZW50cmllcygpKSB7XG4gICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XG4gICAgICAuZ2V0PFQ+KGVuZHBvaW50Lmxpc3RPcGVuLCB7XG4gICAgICAgIHBhcmFtcyxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChlbDogYW55KSA9PiB7XG4gICAgICAgICAgaWYoZWwucmVzdWx0cykge1xuICAgICAgICAgICAgbGV0IHBvc2l0aW9ucyA9IChlbCBhcyBSZXNwb25zZVBhZ2luYXRvcjxJUG9zaXRpb24+KS5yZXN1bHRzLm1hcCgocG9zaXRpb246IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgLi4ucG9zaXRpb24sXG4gICAgICAgICAgICAgIHN5bWJvbElkOiBwb3NpdGlvbi5zeW1ib2wsXG4gICAgICAgICAgICAgIHN5bWJvbDogbmV3IFN5bWJvbCgpLFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgcmV0dXJuIHsuLi5lbCwgJ3Jlc3VsdHMnOiBwb3NpdGlvbnMgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlbCA9IChlbCBhcyBBcnJheTxJUG9zaXRpb24+KS5tYXAoKHBvc2l0aW9uKSA9PiAoe1xuICAgICAgICAgICAgICAuLi5wb3NpdGlvbixcbiAgICAgICAgICAgICAgc3ltYm9sSWQ6IHBvc2l0aW9uLnN5bWJvbCxcbiAgICAgICAgICAgICAgc3ltYm9sOiBuZXcgU3ltYm9sKCksXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICByZXR1cm4gZWw7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDbG9zZUNzdjxUPihoZWFkZXJzOiBIdHRwSGVhZGVycywgZGF0YT86IE1hcDxzdHJpbmcsIGFueT4pIHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcblxuICAgIGlmIChkYXRhKSB7XG4gICAgICBmb3IgKGxldCBlbnRyeSBvZiBkYXRhLmVudHJpZXMoKSkge1xuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGVuZHBvaW50LmNsb3NlUG9zaXRpb24sIHtcbiAgICAgIHBhcmFtcyxcbiAgICAgIGhlYWRlcnMsXG4gICAgICBvYnNlcnZlOiAnYm9keScsXG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJyBhcyAnanNvbicsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2xvc2VDU1ZUcmFkaW5nPFQ+KGRhdGE/OiBNYXA8c3RyaW5nLCBhbnk+LCBoZWFkZXJzPzogSHR0cEhlYWRlcnMpIHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcblxuICAgIGlmIChkYXRhKSB7XG4gICAgICBmb3IgKGxldCBlbnRyeSBvZiBkYXRhLmVudHJpZXMoKSkge1xuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8VD4oXG4gICAgICBlbmRwb2ludC5jbG9zZVBvc2l0aW9uLFxuICAgICAgaGVhZGVyc1xuICAgICAgICA/IHtcbiAgICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgICAgICBvYnNlcnZlOiAnYm9keScsXG4gICAgICAgICAgICByZXNwb25zZVR5cGU6ICdibG9iJyBhcyAnanNvbicsXG4gICAgICAgICAgfVxuICAgICAgICA6IHtcbiAgICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDbG9zZTxUPihcbiAgICB0cmFkaW5nQWNjb3VudFV1aWQ/OiBzdHJpbmcsXG4gICAgZGF0YT86IE1hcDxzdHJpbmcsIGFueT5cbiAgKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgXG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKClcblxuICAgIGlmICh0cmFkaW5nQWNjb3VudFV1aWQpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3RyYWRpbmdBY2NvdW50JywgdHJhZGluZ0FjY291bnRVdWlkKTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgZm9yIChsZXQgZW50cnkgb2YgZGF0YS5lbnRyaWVzKCkpIHtcbiAgICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZChlbnRyeVswXSwgZW50cnlbMV0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxUPihlbmRwb2ludC5jbG9zZVBvc2l0aW9uLCB7XG4gICAgICBwYXJhbXMsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0T3JkZXJzQ3N2PFQ+KGhlYWRlcnM6IEh0dHBIZWFkZXJzLCBkYXRhPzogTWFwPHN0cmluZywgYW55Pikge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGZvciAobGV0IGVudHJ5IG9mIGRhdGEuZW50cmllcygpKSB7XG4gICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChlbmRwb2ludC5vcmRlcnMsIHtcbiAgICAgIHBhcmFtcyxcbiAgICAgIGhlYWRlcnMsXG4gICAgICBvYnNlcnZlOiAnYm9keScsXG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJyBhcyAnanNvbicsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0T3JkZXJzPFQ+KFxuICAgIHRyYWRpbmdBY2NvdW50VXVpZD86IHN0cmluZyxcbiAgICBvcmRlclN0YXR1cz86IG51bWJlcixcbiAgICBkYXRhPzogTWFwPHN0cmluZywgYW55PlxuICApOiBPYnNlcnZhYmxlPFQ+IHtcblxuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpXG5cbiAgICBpZiAodHJhZGluZ0FjY291bnRVdWlkKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCd0cmFkaW5nQWNjb3VudCcsIHRyYWRpbmdBY2NvdW50VXVpZCk7XG4gICAgfVxuXG4gICAgaWYgKG9yZGVyU3RhdHVzKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdvcmRlclN0YXR1cycsIG9yZGVyU3RhdHVzKTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgZm9yIChsZXQgZW50cnkgb2YgZGF0YS5lbnRyaWVzKCkpIHtcbiAgICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZChlbnRyeVswXSwgZW50cnlbMV0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxUPihlbmRwb2ludC5vcmRlcnMsIHtcbiAgICAgIHBhcmFtcyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGUodmFsdWU6IElQYXlsb2FkQ3JlYXRlUG9zaXRpb24pOiBPYnNlcnZhYmxlPElQb3NpdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdDxJUG9zaXRpb24+KGVuZHBvaW50LmNyZWF0ZSwgdmFsdWUpLnBpcGUoXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICB0aGlzLl9yZWZyZXNoJC5uZXh0KCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlT3JkZXI8VCwgVT4odmFsdWU6IFUpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8VD4oZW5kcG9pbnQuY3JlYXRlT3JkZXIsIHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZVBvc2l0aW9ucyhcbiAgICB2b2x1bWU6IHsgdm9sdW1lOiBudW1iZXIgfSxcbiAgICB1dWlkOiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxJQ2xvc2VQb3NpdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnRcbiAgICAgIC5wb3N0PElDbG9zZVBvc2l0aW9uPihcbiAgICAgICAgYC9wb3NpdGlvbnMvdHJhZGluZy1wb3NpdGlvbnMvJHt1dWlkfS9jbG9zZS9gLFxuICAgICAgICB2b2x1bWVcbiAgICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMucmVmcmVzaCQubmV4dCgpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZVdpdGhIZWRnZSh1dWlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPElQb3NpdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnRcbiAgICAgIC5wb3N0PElQb3NpdGlvbj4oIFxuICAgICAgICBgJHtlbmRwb2ludC5jbG9zZU9uSGVkZ2V9JHt1dWlkfS9jbG9zZS1vbi1oZWRnZS9gLFxuICAgICAgICBudWxsXG4gICAgICApXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnJlZnJlc2gkLm5leHQoKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgfVxuXG4gIHB1YmxpYyBzZXRQb3NpdGlvbihwb3NpdGlvbjogSVBvc2l0aW9uIHwgbnVsbCkge1xuICAgIHRoaXMucG9zaXRpb24ubmV4dChwb3NpdGlvbik7XG4gIH1cblxuICBwdWJsaWMgY2FuY2VsbE9yZGVyKHV1aWQ6IHN0cmluZyk6IE9ic2VydmFibGU8SVJlc3BvbnNlT3JkZXI+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8SVJlc3BvbnNlT3JkZXI+KFxuICAgICAgZW5kcG9pbnQuY2FuY2VsbE9yZGVyMSArIHV1aWQgKyBlbmRwb2ludC5jYW5jZWxsT3JkZXIyLFxuICAgICAge31cbiAgICApO1xuICB9XG5cbiAgcHVibGljIHBhdGNoUG9zaXRpb24oXG4gICAgZm9ybTogeyBzdG9wTG9zcz86IG51bWJlcjsgdGFrZVByb2ZpdD86IG51bWJlcjsgdm9sdW1lPzogbnVtYmVyIH0sXG4gICAgdXVpZDogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8SVBvc2l0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wYXRjaDxJUG9zaXRpb24+KFxuICAgICAgZW5kcG9pbnQucGF0Y2hQb3NpdGlvbiArIHV1aWQgKyAnLycsXG4gICAgICBmb3JtXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXRjaE9yZGVyKHZhbHVlOiBhbnksIHV1aWQ6IHN0cmluZyk6IE9ic2VydmFibGU8SVJlc3BvbnNlT3JkZXI+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBhdGNoPElSZXNwb25zZU9yZGVyPihcbiAgICAgIGVuZHBvaW50LnBhdGNoT3JkZXIgKyB1dWlkICsgJy8nLFxuICAgICAgdmFsdWVcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldFBvc2l0aW9uc1RyYWRlU3VtbWFyeShcbiAgICBkYXRhPzogTWFwPHN0cmluZywgYW55PlxuICApOiBPYnNlcnZhYmxlPElUcmFkZVN1bW1hcnlbXT4ge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIGlmIChkYXRhKSB7XG4gICAgICBmb3IgKGxldCBlbnRyeSBvZiBkYXRhLmVudHJpZXMoKSkge1xuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8SVRyYWRlU3VtbWFyeVtdPihlbmRwb2ludC50cmFkZVN1bW1hcnksIHtcbiAgICAgIHBhcmFtczogcGFyYW1zLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldFBvc2l0aW9uc1N1bW1hcnlEZWFsaW5nKFxuICAgIGRhdGE/OiBNYXA8c3RyaW5nLCBhbnk+XG4gICk6IE9ic2VydmFibGU8SVBvc2l0aW9uU3VtbWFyeURlYWxpbmdbXT4ge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIGlmIChkYXRhKSB7XG4gICAgICBmb3IgKGxldCBlbnRyeSBvZiBkYXRhLmVudHJpZXMoKSkge1xuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8SVBvc2l0aW9uU3VtbWFyeURlYWxpbmdbXT4oXG4gICAgICBlbmRwb2ludC5wb3NpdGlvblN1bW1hcnlEZWFsaW5nLFxuICAgICAge1xuICAgICAgICBwYXJhbXM6IHBhcmFtcyxcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHVibGljIGNsb3NlQWxsUG9zaXRpb25zKHV1aWRBY2NvdW50VHJkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxBcnJheTxJUmVzcG9uc2VDbG9zZT4+KFxuICAgICAgYC9hY2NvdW50cy90cmFkaW5nLWFjY291bnRzLyR7dXVpZEFjY291bnRUcmR9L2Nsb3NlLWFsbC1wb3NpdGlvbnMvYFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBvc2l0aW9uU2VsZWN0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMucG9zaXRpb24uZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBjYW5jZWxBbGxPcmRlcnM8VD4odXVpZEFjY291bnRUcmQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnRcbiAgICAgIC5nZXQ8VD4oYC9hY2NvdW50cy90cmFkaW5nLWFjY291bnRzLyR7dXVpZEFjY291bnRUcmR9L2NhbmNlbC1hbGwtb3JkZXJzL2ApXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnJlZnJlc2gkLm5leHQoKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VG90YWxQb3NpdGlvbnM8VD4oZGF0YT86IE1hcDxzdHJpbmcsYW55Pikge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGZvciAobGV0IGVudHJ5IG9mIGRhdGEuZW50cmllcygpKSB7XG4gICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8VD4oZW5kcG9pbnQubGlzdE9wZW4gKyAndG90YWxzLycsIHsgcGFyYW1zIH0pXG4gIH1cblxuICBwdWJsaWMgZ2V0Q2xvc2VkUG9zaXRpb25zVG90YWxzPFQ+KGRhdGE/OiBNYXA8c3RyaW5nLGFueT4pIHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKVxuICAgIGlmIChkYXRhKSB7XG4gICAgICBmb3IgKGxldCBlbnRyeSBvZiBkYXRhLmVudHJpZXMoKSkge1xuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PFQ+KGVuZHBvaW50LmNsb3NlUG9zaXRpb24gKyAndG90YWxzLycsIHsgcGFyYW1zIH0pXG4gIH1cblxuICBwdWJsaWMgZ2V0QWN0aXZlT3JkZXJzVG90YWxzPFQ+KGRhdGE/OiBNYXA8c3RyaW5nLGFueT4pIHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKVxuICAgIGlmIChkYXRhKSB7XG4gICAgICBmb3IgKGxldCBlbnRyeSBvZiBkYXRhLmVudHJpZXMoKSkge1xuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PFQ+KGVuZHBvaW50Lm9yZGVycyArICd0b3RhbHMvJywgeyBwYXJhbXMgfSlcbiAgfVxuXG4gIHB1YmxpYyBzZXRQZW5kaW5nT3JkZXJzKG9yZGVyczogQXJyYXk8SU9yZGVyPikge1xuICAgIHRoaXMucGVuZGluZ09yZGVycyQubmV4dChvcmRlcnMpXG4gIH1cblxuICBwdWJsaWMgc2V0Q2xvc2VQb3NpdGlvbnMoY2xvc2VQb3NpdGlvbnM6IEFycmF5PElDbG9zZVBvc2l0aW9uPikge1xuICAgIHRoaXMuY2xvc2VQb3NpdGlvbnMkLm5leHQoY2xvc2VQb3NpdGlvbnMpXG4gIH1cblxuICBwdWJsaWMgZ2V0TGlzdFBvc2l0aW9uc1NsYXZlczxUPihpZDogc3RyaW5nLCBkYXRhPzogTWFwPHN0cmluZyxhbnk+KSB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKClcbiAgICBpZiAoZGF0YSkge1xuICAgICAgZm9yIChsZXQgZW50cnkgb2YgZGF0YS5lbnRyaWVzKCkpIHtcbiAgICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZChlbnRyeVswXSwgZW50cnlbMV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PFQ+KGAke2VuZHBvaW50Lmxpc3RPcGVufSR7aWR9L3NsYXZlcy9gLCB7IHBhcmFtcyB9KVxuICB9XG5cbiAgcHVibGljIGNsb3NlTXVsdGlwbGVQb3NpdGlvbnM8RixSPihwYXlsb2FkOiBGKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PFI+KGVuZHBvaW50LmNsb3NlTXVsdGlwbGUsIHBheWxvYWQpXG4gIH1cblxuICBwdWJsaWMgZ2V0TGlzdFBvc2l0aW9uc0hpc3RvcnlTbGF2ZXM8VD4oaWQ6IHN0cmluZywgZGF0YT86IE1hcDxzdHJpbmcsYW55PiwgaGVhZGVycz86IEh0dHBIZWFkZXJzKSB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKClcbiAgICBpZiAoZGF0YSkge1xuICAgICAgZm9yIChsZXQgZW50cnkgb2YgZGF0YS5lbnRyaWVzKCkpIHtcbiAgICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZChlbnRyeVswXSwgZW50cnlbMV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIFxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PFQ+KGAke2VuZHBvaW50LmNsb3NlUG9zaXRpb259JHtpZH0vc2xhdmVzL2AsIFxuICAgICAgIGhlYWRlcnNcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBwYXJhbXMsXG4gICAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknLFxuICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYicgYXMgJ2pzb24nLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB7XG4gICAgICAgICAgICBwYXJhbXMsXG4gICAgICAgICAgfVxuICAgICAgKVxuICB9XG5cbiAgcHVibGljIGdldFBvc2l0aW9uSGlzdG9yeUJ5VVVJRDxUPih1aWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PFQ+KGAke2VuZHBvaW50LmNsb3NlUG9zaXRpb259JHt1aWR9L2ApXG4gIH1cbn1cbiJdfQ==
@@ -1,7 +0,0 @@
1
- /*
2
- * Public API Surface of excent-serv-positions
3
- */
4
- export * from './lib/excent-serv-positions.service';
5
- export * from './lib/excent-serv-positions.component';
6
- export * from './lib/excent-serv-positions.module';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2V4Y2VudC1zZXJ2LXBvc2l0aW9ucy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLG9DQUFvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBleGNlbnQtc2Vydi1wb3NpdGlvbnNcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9leGNlbnQtc2Vydi1wb3NpdGlvbnMuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9leGNlbnQtc2Vydi1wb3NpdGlvbnMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2V4Y2VudC1zZXJ2LXBvc2l0aW9ucy5tb2R1bGUnO1xuIl19
@@ -1,5 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- export declare class ExcentServPositionsComponent {
3
- static ɵfac: i0.ɵɵFactoryDeclaration<ExcentServPositionsComponent, never>;
4
- static ɵcmp: i0.ɵɵComponentDeclaration<ExcentServPositionsComponent, "lib-excent-serv-positions", never, {}, {}, never, never, false, never>;
5
- }
@@ -1,19 +0,0 @@
1
- export declare const endpoint: {
2
- open: string;
3
- closed: string;
4
- orders: string;
5
- wsCancelOrder: string;
6
- closePosition: string;
7
- positionSummary: string;
8
- listOpen: string;
9
- create: string;
10
- createOrder: string;
11
- cancellOrder1: string;
12
- cancellOrder2: string;
13
- patchPosition: string;
14
- patchOrder: string;
15
- tradeSummary: string;
16
- positionSummaryDealing: string;
17
- closeOnHedge: string;
18
- closeMultiple: string;
19
- };
@@ -1,7 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- import * as i1 from "./excent-serv-positions.component";
3
- export declare class ExcentServPositionsModule {
4
- static ɵfac: i0.ɵɵFactoryDeclaration<ExcentServPositionsModule, never>;
5
- static ɵmod: i0.ɵɵNgModuleDeclaration<ExcentServPositionsModule, [typeof i1.ExcentServPositionsComponent], never, [typeof i1.ExcentServPositionsComponent]>;
6
- static ɵinj: i0.ɵɵInjectorDeclaration<ExcentServPositionsModule>;
7
- }
@@ -1,56 +0,0 @@
1
- import { HttpClient, HttpHeaders } from '@angular/common/http';
2
- import { IClosePosition, IOrder, IPayloadCreatePosition, IPosition, IPositionSummaryDealing, IResponseClose, IResponseOrder, ITradeSummary } from '@excent/excent-models';
3
- import { BehaviorSubject, Observable, Subject } from 'rxjs';
4
- import * as i0 from "@angular/core";
5
- export declare class ExcentServPositionsService {
6
- private httpClient;
7
- private _refresh$;
8
- private position;
9
- pendingOrders$: BehaviorSubject<IOrder[]>;
10
- closePositions$: BehaviorSubject<IClosePosition[]>;
11
- position$: Observable<IPosition | null>;
12
- operationOrder: BehaviorSubject<{
13
- type: string;
14
- value: IOrder;
15
- }>;
16
- constructor(httpClient: HttpClient);
17
- get refresh$(): Subject<void>;
18
- reloadPositions(idUser: number): Observable<IPosition[]>;
19
- getOpenCsv<T>(headers: HttpHeaders, data?: Map<string, any>): Observable<Object>;
20
- getOpen<T>(uuid?: string, data?: Map<string, any>): Observable<T>;
21
- getCloseCsv<T>(headers: HttpHeaders, data?: Map<string, any>): Observable<Object>;
22
- getCloseCSVTrading<T>(data?: Map<string, any>, headers?: HttpHeaders): Observable<T>;
23
- getClose<T>(tradingAccountUuid?: string, data?: Map<string, any>): Observable<T>;
24
- getOrdersCsv<T>(headers: HttpHeaders, data?: Map<string, any>): Observable<Object>;
25
- getOrders<T>(tradingAccountUuid?: string, orderStatus?: number, data?: Map<string, any>): Observable<T>;
26
- create(value: IPayloadCreatePosition): Observable<IPosition>;
27
- createOrder<T, U>(value: U): Observable<T>;
28
- closePositions(volume: {
29
- volume: number;
30
- }, uuid: string): Observable<IClosePosition>;
31
- closeWithHedge(uuid: string): Observable<IPosition>;
32
- setPosition(position: IPosition | null): void;
33
- cancellOrder(uuid: string): Observable<IResponseOrder>;
34
- patchPosition(form: {
35
- stopLoss?: number;
36
- takeProfit?: number;
37
- volume?: number;
38
- }, uuid: string): Observable<IPosition>;
39
- patchOrder(value: any, uuid: string): Observable<IResponseOrder>;
40
- getPositionsTradeSummary(data?: Map<string, any>): Observable<ITradeSummary[]>;
41
- getPositionsSummaryDealing(data?: Map<string, any>): Observable<IPositionSummaryDealing[]>;
42
- closeAllPositions(uuidAccountTrd: string): Observable<IResponseClose[]>;
43
- get positionSelected(): IPosition | null;
44
- cancelAllOrders<T>(uuidAccountTrd: string): Observable<T>;
45
- getTotalPositions<T>(data?: Map<string, any>): Observable<T>;
46
- getClosedPositionsTotals<T>(data?: Map<string, any>): Observable<T>;
47
- getActiveOrdersTotals<T>(data?: Map<string, any>): Observable<T>;
48
- setPendingOrders(orders: Array<IOrder>): void;
49
- setClosePositions(closePositions: Array<IClosePosition>): void;
50
- getListPositionsSlaves<T>(id: string, data?: Map<string, any>): Observable<T>;
51
- closeMultiplePositions<F, R>(payload: F): Observable<R>;
52
- getListPositionsHistorySlaves<T>(id: string, data?: Map<string, any>, headers?: HttpHeaders): Observable<T>;
53
- getPositionHistoryByUUID<T>(uid: string): Observable<T>;
54
- static ɵfac: i0.ɵɵFactoryDeclaration<ExcentServPositionsService, never>;
55
- static ɵprov: i0.ɵɵInjectableDeclaration<ExcentServPositionsService>;
56
- }
package/public-api.d.ts DELETED
@@ -1,3 +0,0 @@
1
- export * from './lib/excent-serv-positions.service';
2
- export * from './lib/excent-serv-positions.component';
3
- export * from './lib/excent-serv-positions.module';