@firestitch/common 12.4.2 → 12.5.0

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.
@@ -1,3 +1,4 @@
1
1
  export * from './queue';
2
- export { QueueState } from './queue.enum';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91dGlsL3F1ZXVlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3F1ZXVlJztcbmV4cG9ydCB7IFF1ZXVlU3RhdGUgfSBmcm9tICcuL3F1ZXVlLmVudW0nO1xuIl19
2
+ export * from './queue.enum';
3
+ export * from './queue-stats';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91dGlsL3F1ZXVlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9xdWV1ZSc7XG5leHBvcnQgKiBmcm9tICcuL3F1ZXVlLmVudW0nO1xuZXhwb3J0ICogZnJvbSAnLi9xdWV1ZS1zdGF0cyc7XG4iXX0=
@@ -12,4 +12,4 @@ export class Operation {
12
12
  }
13
13
  }
14
14
  }
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYnMvdXRpbC9xdWV1ZS9vcGVyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFHL0IsTUFBTSxPQUFPLFNBQVM7SUFNcEIsWUFBWSxNQUFNLEVBQUUsSUFBSztRQUZsQixXQUFNLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUc1QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVqQyxJQUFJLE1BQU0sWUFBWSxVQUFVLEVBQUU7WUFDaEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7U0FDdEI7YUFBTTtZQUNMLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGd1aWQgfSBmcm9tICcuLi9ndWlkJztcblxuXG5leHBvcnQgY2xhc3MgT3BlcmF0aW9uIHtcblxuICBwdWJsaWMgbmFtZTogc3RyaW5nO1xuICBwdWJsaWMgdGFyZ2V0OiBPYnNlcnZhYmxlPGFueT47XG4gIHB1YmxpYyByZWFkeSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKHRhcmdldCwgbmFtZT8pIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lID8gbmFtZSA6IGd1aWQoKTtcblxuICAgIGlmICh0YXJnZXQgaW5zdGFuY2VvZiBPYnNlcnZhYmxlKSB7XG4gICAgICB0aGlzLnRhcmdldCA9IHRhcmdldDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50YXJnZXQgPSBvZih0YXJnZXQpO1xuICAgIH1cbiAgfVxufVxuIl19
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYnMvdXRpbC9xdWV1ZS9vcGVyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFHL0IsTUFBTSxPQUFPLFNBQVM7SUFNcEIsWUFBWSxNQUF1QixFQUFFLElBQWE7UUFGM0MsV0FBTSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFHNUIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFakMsSUFBSSxNQUFNLFlBQVksVUFBVSxFQUFFO1lBQ2hDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1NBQ3RCO2FBQU07WUFDTCxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUMxQjtJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBndWlkIH0gZnJvbSAnLi4vZ3VpZCc7XG5cblxuZXhwb3J0IGNsYXNzIE9wZXJhdGlvbiB7XG5cbiAgcHVibGljIG5hbWU6IHN0cmluZztcbiAgcHVibGljIHRhcmdldDogT2JzZXJ2YWJsZTxhbnk+O1xuICBwdWJsaWMgcmVhZHkkID0gbmV3IFN1YmplY3QoKTtcblxuICBjb25zdHJ1Y3Rvcih0YXJnZXQ6IE9ic2VydmFibGU8YW55PiwgbmFtZT86IHN0cmluZykge1xuICAgIHRoaXMubmFtZSA9IG5hbWUgPyBuYW1lIDogZ3VpZCgpO1xuXG4gICAgaWYgKHRhcmdldCBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcbiAgICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRhcmdldCA9IG9mKHRhcmdldCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWUtc3RhdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91dGlsL3F1ZXVlL3F1ZXVlLXN0YXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFF1ZXVlU3RhdHMge1xuICB0b3RhbDogbnVtYmVyO1xuICBjb21wbGV0ZWQ6IG51bWJlcjtcbiAgZXJyb3JzOiBzdHJpbmdbXTtcbn0iXX0=
@@ -1,24 +1,42 @@
1
- import { Observable, Subject } from 'rxjs';
1
+ import { of, Subject } from 'rxjs';
2
+ import { delay, map, take, takeUntil } from 'rxjs/operators';
2
3
  import { Operation } from './operation';
3
4
  import { QueueState } from './queue.enum';
4
- import { delay, takeUntil } from 'rxjs/operators';
5
5
  export class Queue {
6
- constructor(_limit = Infinity) {
6
+ constructor(_limit = Infinity, _targets) {
7
7
  this._limit = _limit;
8
+ this._targets = _targets;
9
+ this._queueStats = {
10
+ completed: 0,
11
+ total: 0,
12
+ errors: [],
13
+ };
14
+ this._doneQueueStats = {
15
+ completed: 0,
16
+ total: 0,
17
+ errors: [],
18
+ };
19
+ this._completeQueueStats = {
20
+ completed: 0,
21
+ total: 0,
22
+ errors: [],
23
+ };
8
24
  this._done = new Subject();
9
25
  this._queue = [];
10
26
  this._inProgress = [];
11
- this._total = 0;
12
- this._completed = 0;
13
- this._errors = 0;
14
27
  this._state = QueueState.Idle;
15
28
  this._destroy$ = new Subject();
29
+ if (_targets) {
30
+ _targets.forEach((target) => {
31
+ this.push(target);
32
+ });
33
+ }
16
34
  }
17
35
  get total() {
18
- return this._total;
36
+ return this._queueStats.total;
19
37
  }
20
38
  get completed() {
21
- return this._completed;
39
+ return this._queueStats.completed;
22
40
  }
23
41
  get pending() {
24
42
  return this._queue.length;
@@ -27,7 +45,7 @@ export class Queue {
27
45
  return this._inProgress.length;
28
46
  }
29
47
  get errors() {
30
- return this._errors;
48
+ return this._queueStats.errors;
31
49
  }
32
50
  get state() {
33
51
  return this._state;
@@ -52,30 +70,32 @@ export class Queue {
52
70
  setLimit(value) {
53
71
  this._limit = value;
54
72
  }
73
+ /**
74
+ * @depreated
75
+ */
55
76
  subscribe(fun, err, complete) {
56
- this._done
57
- .pipe(takeUntil(this._destroy$))
77
+ this.observe$
58
78
  .subscribe(fun, err, complete);
59
79
  }
80
+ get observe$() {
81
+ return this._done
82
+ .pipe(takeUntil(this._destroy$));
83
+ }
84
+ get complete$() {
85
+ if (!this.isProcessing()) {
86
+ return of({ total: 0, completed: 0, errors: [] });
87
+ }
88
+ return this.observe$
89
+ .pipe(take(1), map(() => (this._completeQueueStats)));
90
+ }
60
91
  complete(fun, err, complete) {
61
- Observable.create(observer => {
62
- if (!this.isProcessing()) {
63
- observer.next();
64
- observer.complete();
65
- return;
66
- }
67
- this.subscribe(() => {
68
- observer.next();
69
- observer.complete();
70
- }, (error) => {
71
- observer.error(error);
72
- this.clear();
73
- });
74
- }).subscribe(fun, err, complete);
92
+ this.complete$.subscribe(fun, err, complete);
75
93
  }
76
94
  push(target, name) {
77
95
  const operation = new Operation(target, name);
78
- this._total++;
96
+ this._queueStats.total++;
97
+ this._doneQueueStats.total++;
98
+ this._completeQueueStats.total++;
79
99
  this._state = QueueState.Processing;
80
100
  if (this._inProgress.length < this._limit) {
81
101
  this._processOperation(operation);
@@ -87,15 +107,17 @@ export class Queue {
87
107
  }
88
108
  clear() {
89
109
  this._queue = [];
90
- this._total = 0;
91
- this._errors = 0;
92
- this._completed = 0;
93
110
  this._state = QueueState.Idle;
94
- this._done = new Subject();
111
+ this._queueStats = {
112
+ total: 0,
113
+ errors: [],
114
+ completed: 0,
115
+ };
116
+ this._clearDoneQueueStats();
95
117
  }
96
118
  destroy() {
97
- this.clear();
98
119
  this._done.complete();
120
+ this.clear();
99
121
  }
100
122
  _processOperation(operation) {
101
123
  this._inProgress.push(operation);
@@ -108,21 +130,25 @@ export class Queue {
108
130
  error: (error) => {
109
131
  const opIndex = this._inProgress.indexOf(operation);
110
132
  this._inProgress.splice(opIndex, 1);
111
- this._errors++;
133
+ this._queueStats.errors.push(error);
134
+ this._doneQueueStats.errors.push(error);
135
+ this._completeQueueStats.errors.push(error);
112
136
  operation.ready$.error(error);
113
137
  if (this.empty) {
114
138
  this._state = QueueState.Idle;
115
- this._done.error(error);
116
139
  }
117
140
  },
118
141
  complete: () => {
119
142
  const opIndex = this._inProgress.indexOf(operation);
120
143
  this._inProgress.splice(opIndex, 1);
121
- this._completed++;
144
+ this._queueStats.completed++;
145
+ this._doneQueueStats.completed++;
146
+ this._completeQueueStats.completed++;
122
147
  operation.ready$.complete();
123
148
  if (this.empty) {
124
149
  this._state = QueueState.Idle;
125
- this._done.next();
150
+ this._done.next(this._doneQueueStats);
151
+ this._clearDoneQueueStats();
126
152
  }
127
153
  else {
128
154
  if (this._queue.length) {
@@ -133,5 +159,12 @@ export class Queue {
133
159
  }
134
160
  });
135
161
  }
162
+ _clearDoneQueueStats() {
163
+ this._doneQueueStats = {
164
+ total: 0,
165
+ errors: [],
166
+ completed: 0,
167
+ };
168
+ }
136
169
  }
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91dGlsL3F1ZXVlL3F1ZXVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxELE1BQU0sT0FBTyxLQUFLO0lBZWhCLFlBQW9CLFNBQVMsUUFBUTtRQUFqQixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBYjdCLFVBQUssR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRXRCLFdBQU0sR0FBZ0IsRUFBRSxDQUFDO1FBQ3pCLGdCQUFXLEdBQWdCLEVBQUUsQ0FBQztRQUU5QixXQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLFlBQU8sR0FBRyxDQUFDLENBQUM7UUFFWixXQUFNLEdBQWUsVUFBVSxDQUFDLElBQUksQ0FBQztRQUVyQyxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUVBLENBQUM7SUFFekMsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8s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Q0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDekI7WUFDSCxDQUFDO1lBRUQsUUFBUSxFQUFFLEdBQUcsRUFBRTtnQkFDYixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDcEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUVwQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBRWxCLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBRTVCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtvQkFDZCxJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7b0JBQzlCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7aUJBQ25CO3FCQUFNO29CQUNMLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7d0JBQ3RCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7d0JBQ3RDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztxQkFDbkM7aUJBQ0Y7WUFDSCxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSAnLi9vcGVyYXRpb24nO1xuaW1wb3J0IHsgUXVldWVTdGF0ZSB9IGZyb20gJy4vcXVldWUuZW51bSc7XG5pbXBvcnQgeyBkZWxheSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgY2xhc3MgUXVldWUge1xuXG4gIHByaXZhdGUgX2RvbmUgPSBuZXcgU3ViamVjdCgpO1xuXG4gIHByaXZhdGUgX3F1ZXVlOiBPcGVyYXRpb25bXSA9IFtdO1xuICBwcml2YXRlIF9pblByb2dyZXNzOiBPcGVyYXRpb25bXSA9IFtdO1xuXG4gIHByaXZhdGUgX3RvdGFsID0gMDtcbiAgcHJpdmF0ZSBfY29tcGxldGVkID0gMDtcbiAgcHJpdmF0ZSBfZXJyb3JzID0gMDtcblxuICBwcml2YXRlIF9zdGF0ZTogUXVldWVTdGF0ZSA9IFF1ZXVlU3RhdGUuSWRsZTtcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfbGltaXQgPSBJbmZpbml0eSkge31cblxuICBnZXQgdG90YWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3RvdGFsO1xuICB9XG5cbiAgZ2V0IGNvbXBsZXRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29tcGxldGVkO1xuICB9XG5cbiAgZ2V0IHBlbmRpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3F1ZXVlLmxlbmd0aDtcbiAgfVxuXG4gIGdldCBpblByb2dyZXNzKCkge1xuICAgIHJldHVybiB0aGlzLl9pblByb2dyZXNzLmxlbmd0aDtcbiAgfVxuXG4gIGdldCBlcnJvcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Vycm9ycztcbiAgfVxuXG4gIGdldCBzdGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGU7XG4gIH1cblxuICBnZXQgZW1wdHkoKSB7XG4gICAgcmV0dXJuICF0aGlzLl9xdWV1ZS5sZW5ndGggJiYgIXRoaXMuX2luUHJvZ3Jlc3MubGVuZ3RoXG4gIH1cblxuICBnZXQgcGVuZGluZ09wZXJhdGlvbnMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9xdWV1ZVxuICAgICAgLm1hcCgob3BlcmF0aW9uKSA9PiBvcGVyYXRpb24ubmFtZSk7XG4gIH1cblxuICBnZXQgaW5Qcm9ncmVzc09wZXJhdGlvbnMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9pblByb2dyZXNzXG4gICAgICAubWFwKChvcGVyYXRpb24pID0+IG9wZXJhdGlvbi5uYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1Byb2Nlc3NpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlID09PSBRdWV1ZVN0YXRlLlByb2Nlc3Npbmc7XG4gIH1cblxuICBwdWJsaWMgaXNJZGxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZSA9PT0gUXVldWVTdGF0ZS5JZGxlO1xuICB9XG5cbiAgcHVibGljIHNldExpbWl0KHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9saW1pdCA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIHN1YnNjcmliZShmdW4sIGVycj8sIGNvbXBsZXRlPykge1xuICAgIHRoaXMuX2RvbmVcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShmdW4sIGVyciwgY29tcGxldGUpO1xuICB9XG5cbiAgcHVibGljIGNvbXBsZXRlKGZ1biwgZXJyPywgY29tcGxldGU/KSB7XG5cbiAgICBPYnNlcnZhYmxlLmNyZWF0ZShvYnNlcnZlciA9PiB7XG5cbiAgICAgIGlmICghdGhpcy5pc1Byb2Nlc3NpbmcoKSkge1xuICAgICAgICAgIG9ic2VydmVyLm5leHQoKTtcbiAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBvYnNlcnZlci5uZXh0KCk7XG4gICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZXJyb3IpO1xuICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICB9KTtcbiAgICB9KS5zdWJzY3JpYmUoZnVuLCBlcnIsIGNvbXBsZXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBwdXNoKHRhcmdldCwgbmFtZT8pIHtcbiAgICBjb25zdCBvcGVyYXRpb24gPSBuZXcgT3BlcmF0aW9uKHRhcmdldCwgbmFtZSk7XG5cbiAgICB0aGlzLl90b3RhbCsrO1xuICAgIHRoaXMuX3N0YXRlID0gUXVldWVTdGF0ZS5Qcm9jZXNzaW5nO1xuXG4gICAgaWYgKHRoaXMuX2luUHJvZ3Jlc3MubGVuZ3RoIDwgdGhpcy5fbGltaXQpIHtcbiAgICAgIHRoaXMuX3Byb2Nlc3NPcGVyYXRpb24ob3BlcmF0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fcXVldWUucHVzaChvcGVyYXRpb24pO1xuICAgIH1cblxuICAgIHJldHVybiBvcGVyYXRpb24ucmVhZHkkO1xuICB9XG5cbiAgcHVibGljIGNsZWFyKCkge1xuICAgIHRoaXMuX3F1ZXVlID0gW107XG4gICAgdGhpcy5fdG90YWwgPSAwO1xuICAgIHRoaXMuX2Vycm9ycyA9IDA7XG4gICAgdGhpcy5fY29tcGxldGVkID0gMDtcbiAgICB0aGlzLl9zdGF0ZSA9IFF1ZXVlU3RhdGUuSWRsZTtcbiAgICB0aGlzLl9kb25lID0gbmV3IFN1YmplY3QoKTtcbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95KCkge1xuICAgIHRoaXMuY2xlYXIoKTtcbiAgICB0aGlzLl9kb25lLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIF9wcm9jZXNzT3BlcmF0aW9uKG9wZXJhdGlvbjogT3BlcmF0aW9uKSB7XG4gICAgdGhpcy5faW5Qcm9ncmVzcy5wdXNoKG9wZXJhdGlvbik7XG5cbiAgICBvcGVyYXRpb24udGFyZ2V0XG4gICAgICAucGlwZShcbiAgICAgICAgZGVsYXkoMjAwKSwgLy8gSGFjayB0byBwcmV2ZW50IGV4dHJhIHF1aWNrIHByb2NjZXNzIGV4ZWN1dGlvblxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoZGF0YSkgPT4ge1xuICAgICAgICAgIG9wZXJhdGlvbi5yZWFkeSQubmV4dChkYXRhKTtcbiAgICAgICAgfSxcblxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgICAgY29uc3Qgb3BJbmRleCA9IHRoaXMuX2luUHJvZ3Jlc3MuaW5kZXhPZihvcGVyYXRpb24pO1xuICAgICAgICAgIHRoaXMuX2luUHJvZ3Jlc3Muc3BsaWNlKG9wSW5kZXgsIDEpO1xuXG4gICAgICAgICAgdGhpcy5fZXJyb3JzKys7XG5cbiAgICAgICAgICBvcGVyYXRpb24ucmVhZHkkLmVycm9yKGVycm9yKTtcblxuICAgICAgICAgIGlmICh0aGlzLmVtcHR5KSB7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZSA9IFF1ZXVlU3RhdGUuSWRsZTtcbiAgICAgICAgICAgIHRoaXMuX2RvbmUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG9wSW5kZXggPSB0aGlzLl9pblByb2dyZXNzLmluZGV4T2Yob3BlcmF0aW9uKTtcbiAgICAgICAgICB0aGlzLl9pblByb2dyZXNzLnNwbGljZShvcEluZGV4LCAxKTtcblxuICAgICAgICAgIHRoaXMuX2NvbXBsZXRlZCsrO1xuXG4gICAgICAgICAgb3BlcmF0aW9uLnJlYWR5JC5jb21wbGV0ZSgpO1xuXG4gICAgICAgICAgaWYgKHRoaXMuZW1wdHkpIHtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlID0gUXVldWVTdGF0ZS5JZGxlO1xuICAgICAgICAgICAgdGhpcy5fZG9uZS5uZXh0KCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9xdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgY29uc3QgcXVldWVJdGVtID0gdGhpcy5fcXVldWUuc2hpZnQoKTtcbiAgICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc09wZXJhdGlvbihxdWV1ZUl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cbn1cbiJdfQ==
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91dGlsL3F1ZXVlL3F1ZXVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxLQUFLLEVBQVksR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXhDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHMUMsTUFBTSxPQUFPLEtBQUs7SUF3QmhCLFlBQ1UsU0FBUyxRQUFRLEVBQ2pCLFFBQTRCO1FBRDVCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIsYUFBUSxHQUFSLFFBQVEsQ0FBb0I7UUF4QjlCLGdCQUFXLEdBQWU7WUFDaEMsU0FBUyxFQUFFLENBQUM7WUFDWixLQUFLLEVBQUUsQ0FBQztZQUNSLE1BQU0sRUFBRSxFQUFFO1NBQ1gsQ0FBQztRQUNNLG9CQUFlLEdBQWU7WUFDcEMsU0FBUyxFQUFFLENBQUM7WUFDWixLQUFLLEVBQUUsQ0FBQztZQUNSLE1BQU0sRUFBRSxFQUFFO1NBQ1gsQ0FBQztRQUNNLHdCQUFtQixHQUFlO1lBQ3hDLFNBQVMsRUFBRSxDQUFDO1lBQ1osS0FBSyxFQUFFLENBQUM7WUFDUixNQUFNLEVBQUUsRUFBRTtTQUNYLENBQUM7UUFDTSxVQUFLLEdBQUcsSUFBSSxPQUFPLEVBQWMsQ0FBQztRQUNsQyxXQUFNLEdBQWdCLEVBQUUsQ0FBQztRQUN6QixnQkFBVyxHQUFnQixFQUFFLENBQUM7UUFFOUIsV0FBTSxHQUFlLFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFDckMsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFNdEMsSUFBRyxRQUFRLEVBQUU7WUFDWCxRQUFRLENB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QVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBRTVCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtvQkFDZCxJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7b0JBQzlCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztvQkFDdEMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7aUJBQzdCO3FCQUFNO29CQUNMLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7d0JBQ3RCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7d0JBQ3RDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztxQkFDbkM7aUJBQ0Y7WUFDSCxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixJQUFJLENBQUMsZUFBZSxHQUFHO1lBQ3JCLEtBQUssRUFBRSxDQUFDO1lBQ1IsTUFBTSxFQUFFLEVBQUU7WUFDVixTQUFTLEVBQUUsQ0FBQztTQUNiLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVsYXksIGZpbmFsaXplLCBtYXAsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSAnLi9vcGVyYXRpb24nO1xuaW1wb3J0IHsgUXVldWVTdGF0cyB9IGZyb20gJy4vcXVldWUtc3RhdHMnO1xuaW1wb3J0IHsgUXVldWVTdGF0ZSB9IGZyb20gJy4vcXVldWUuZW51bSc7XG5cblxuZXhwb3J0IGNsYXNzIFF1ZXVlIHtcblxuICBwcml2YXRlIF9xdWV1ZVN0YXRzOiBRdWV1ZVN0YXRzID0ge1xuICAgIGNvbXBsZXRlZDogMCxcbiAgICB0b3RhbDogMCxcbiAgICBlcnJvcnM6IFtdLFxuICB9O1xuICBwcml2YXRlIF9kb25lUXVldWVTdGF0czogUXVldWVTdGF0cyA9IHtcbiAgICBjb21wbGV0ZWQ6IDAsXG4gICAgdG90YWw6IDAsXG4gICAgZXJyb3JzOiBbXSxcbiAgfTtcbiAgcHJpdmF0ZSBfY29tcGxldGVRdWV1ZVN0YXRzOiBRdWV1ZVN0YXRzID0ge1xuICAgIGNvbXBsZXRlZDogMCxcbiAgICB0b3RhbDogMCxcbiAgICBlcnJvcnM6IFtdLFxuICB9O1xuICBwcml2YXRlIF9kb25lID0gbmV3IFN1YmplY3Q8UXVldWVTdGF0cz4oKTtcbiAgcHJpdmF0ZSBfcXVldWU6IE9wZXJhdGlvbltdID0gW107XG4gIHByaXZhdGUgX2luUHJvZ3Jlc3M6IE9wZXJhdGlvbltdID0gW107XG5cbiAgcHJpdmF0ZSBfc3RhdGU6IFF1ZXVlU3RhdGUgPSBRdWV1ZVN0YXRlLklkbGU7XG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2xpbWl0ID0gSW5maW5pdHksXG4gICAgcHJpdmF0ZSBfdGFyZ2V0cz86IE9ic2VydmFibGU8YW55PltdLFxuICApIHtcbiAgICBpZihfdGFyZ2V0cykge1xuICAgICAgX3RhcmdldHMuZm9yRWFjaCgodGFyZ2V0KSA9PiB7XG4gICAgICAgIHRoaXMucHVzaCh0YXJnZXQpO1xuICAgICAgfSk7IFxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgdG90YWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3F1ZXVlU3RhdHMudG90YWw7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbXBsZXRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcXVldWVTdGF0cy5jb21wbGV0ZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBlbmRpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3F1ZXVlLmxlbmd0aDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW5Qcm9ncmVzcygpIHtcbiAgICByZXR1cm4gdGhpcy5faW5Qcm9ncmVzcy5sZW5ndGg7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVycm9ycygpIHtcbiAgICByZXR1cm4gdGhpcy5fcXVldWVTdGF0cy5lcnJvcnM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZW1wdHkoKSB7XG4gICAgcmV0dXJuICF0aGlzLl9xdWV1ZS5sZW5ndGggJiYgIXRoaXMuX2luUHJvZ3Jlc3MubGVuZ3RoXG4gIH1cblxuICBwdWJsaWMgZ2V0IHBlbmRpbmdPcGVyYXRpb25zKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fcXVldWVcbiAgICAgIC5tYXAoKG9wZXJhdGlvbikgPT4gb3BlcmF0aW9uLm5hbWUpO1xuICB9XG5cbiAgcHVibGljIGdldCBpblByb2dyZXNzT3BlcmF0aW9ucygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2luUHJvZ3Jlc3NcbiAgICAgIC5tYXAoKG9wZXJhdGlvbikgPT4gb3BlcmF0aW9uLm5hbWUpO1xuICB9XG5cbiAgcHVibGljIGlzUHJvY2Vzc2luZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGUgPT09IFF1ZXVlU3RhdGUuUHJvY2Vzc2luZztcbiAgfVxuXG4gIHB1YmxpYyBpc0lkbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlID09PSBRdWV1ZVN0YXRlLklkbGU7XG4gIH1cblxuICBwdWJsaWMgc2V0TGltaXQodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX2xpbWl0ID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlYXRlZFxuICAgKi9cbiAgcHVibGljIHN1YnNjcmliZShmdW4sIGVycj8sIGNvbXBsZXRlPyk6IHZvaWQge1xuICAgIHRoaXMub2JzZXJ2ZSRcbiAgICAgIC5zdWJzY3JpYmUoZnVuLCBlcnIsIGNvbXBsZXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgb2JzZXJ2ZSQoKTogT2JzZXJ2YWJsZTxRdWV1ZVN0YXRzPiB7XG4gICAgcmV0dXJuIHRoaXMuX2RvbmVcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY29tcGxldGUkKCk6IE9ic2VydmFibGU8UXVldWVTdGF0cz4ge1xuICAgIGlmICghdGhpcy5pc1Byb2Nlc3NpbmcoKSkge1xuICAgICAgcmV0dXJuIG9mKHsgdG90YWw6IDAsIGNvbXBsZXRlZDogMCwgZXJyb3JzOiBbXSB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5vYnNlcnZlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIG1hcCgoKSA9PiAodGhpcy5fY29tcGxldGVRdWV1ZVN0YXRzKSksXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIGNvbXBsZXRlKGZ1biwgZXJyPywgY29tcGxldGU/KTogdm9pZCB7XG4gICAgdGhpcy5jb21wbGV0ZSQuc3Vic2NyaWJlKGZ1biwgZXJyLCBjb21wbGV0ZSk7XG4gIH1cblxuICBwdWJsaWMgcHVzaCh0YXJnZXQ6IE9ic2VydmFibGU8YW55PiwgbmFtZT86IHN0cmluZykge1xuICAgIGNvbnN0IG9wZXJhdGlvbiA9IG5ldyBPcGVyYXRpb24odGFyZ2V0LCBuYW1lKTtcblxuICAgIHRoaXMuX3F1ZXVlU3RhdHMudG90YWwrKztcbiAgICB0aGlzLl9kb25lUXVldWVTdGF0cy50b3RhbCsrO1xuICAgIHRoaXMuX2NvbXBsZXRlUXVldWVTdGF0cy50b3RhbCsrO1xuICAgIHRoaXMuX3N0YXRlID0gUXVldWVTdGF0ZS5Qcm9jZXNzaW5nO1xuXG4gICAgaWYgKHRoaXMuX2luUHJvZ3Jlc3MubGVuZ3RoIDwgdGhpcy5fbGltaXQpIHtcbiAgICAgIHRoaXMuX3Byb2Nlc3NPcGVyYXRpb24ob3BlcmF0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fcXVldWUucHVzaChvcGVyYXRpb24pO1xuICAgIH1cblxuICAgIHJldHVybiBvcGVyYXRpb24ucmVhZHkkO1xuICB9XG5cbiAgcHVibGljIGNsZWFyKCkge1xuICAgIHRoaXMuX3F1ZXVlID0gW107XG4gICAgdGhpcy5fc3RhdGUgPSBRdWV1ZVN0YXRlLklkbGU7ICAgICAgIFxuICAgIHRoaXMuX3F1ZXVlU3RhdHMgPSB7XG4gICAgICB0b3RhbDogMCxcbiAgICAgIGVycm9yczogW10sXG4gICAgICBjb21wbGV0ZWQ6IDAsXG4gICAgfTtcbiAgICB0aGlzLl9jbGVhckRvbmVRdWV1ZVN0YXRzKCk7XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveSgpIHsgICAgXG4gICAgdGhpcy5fZG9uZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuY2xlYXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3Byb2Nlc3NPcGVyYXRpb24ob3BlcmF0aW9uOiBPcGVyYXRpb24pIHtcbiAgICB0aGlzLl9pblByb2dyZXNzLnB1c2gob3BlcmF0aW9uKTtcblxuICAgIG9wZXJhdGlvbi50YXJnZXRcbiAgICAgIC5waXBlKFxuICAgICAgICBkZWxheSgyMDApLCAvLyBIYWNrIHRvIHByZXZlbnQgZXh0cmEgcXVpY2sgcHJvY2Nlc3MgZXhlY3V0aW9uXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChkYXRhKSA9PiB7XG4gICAgICAgICAgb3BlcmF0aW9uLnJlYWR5JC5uZXh0KGRhdGEpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgICAgY29uc3Qgb3BJbmRleCA9IHRoaXMuX2luUHJvZ3Jlc3MuaW5kZXhPZihvcGVyYXRpb24pO1xuICAgICAgICAgIHRoaXMuX2luUHJvZ3Jlc3Muc3BsaWNlKG9wSW5kZXgsIDEpO1xuICAgICAgICAgIHRoaXMuX3F1ZXVlU3RhdHMuZXJyb3JzLnB1c2goZXJyb3IpO1xuICAgICAgICAgIHRoaXMuX2RvbmVRdWV1ZVN0YXRzLmVycm9ycy5wdXNoKGVycm9yKTtcbiAgICAgICAgICB0aGlzLl9jb21wbGV0ZVF1ZXVlU3RhdHMuZXJyb3JzLnB1c2goZXJyb3IpO1xuXG4gICAgICAgICAgb3BlcmF0aW9uLnJlYWR5JC5lcnJvcihlcnJvcik7XG5cbiAgICAgICAgICBpZiAodGhpcy5lbXB0eSkge1xuICAgICAgICAgICAgdGhpcy5fc3RhdGUgPSBRdWV1ZVN0YXRlLklkbGU7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG9wSW5kZXggPSB0aGlzLl9pblByb2dyZXNzLmluZGV4T2Yob3BlcmF0aW9uKTtcbiAgICAgICAgICB0aGlzLl9pblByb2dyZXNzLnNwbGljZShvcEluZGV4LCAxKTtcbiAgICAgICAgICB0aGlzLl9xdWV1ZVN0YXRzLmNvbXBsZXRlZCsrO1xuICAgICAgICAgIHRoaXMuX2RvbmVRdWV1ZVN0YXRzLmNvbXBsZXRlZCsrO1xuICAgICAgICAgIHRoaXMuX2NvbXBsZXRlUXVldWVTdGF0cy5jb21wbGV0ZWQrKztcblxuICAgICAgICAgIG9wZXJhdGlvbi5yZWFkeSQuY29tcGxldGUoKTtcblxuICAgICAgICAgIGlmICh0aGlzLmVtcHR5KSB7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZSA9IFF1ZXVlU3RhdGUuSWRsZTtcbiAgICAgICAgICAgIHRoaXMuX2RvbmUubmV4dCh0aGlzLl9kb25lUXVldWVTdGF0cyk7XG4gICAgICAgICAgICB0aGlzLl9jbGVhckRvbmVRdWV1ZVN0YXRzKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9xdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgY29uc3QgcXVldWVJdGVtID0gdGhpcy5fcXVldWUuc2hpZnQoKTtcbiAgICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc09wZXJhdGlvbihxdWV1ZUl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9jbGVhckRvbmVRdWV1ZVN0YXRzKCk6IHZvaWQge1xuICAgIHRoaXMuX2RvbmVRdWV1ZVN0YXRzID0ge1xuICAgICAgdG90YWw6IDAsXG4gICAgICBlcnJvcnM6IFtdLFxuICAgICAgY29tcGxldGVkOiAwLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -3,7 +3,7 @@ import { Injectable, Pipe, LOCALE_ID, Inject, Directive, HostListener, Optional,
3
3
  import { CurrencyPipe, CommonModule } from '@angular/common';
4
4
  import * as i1 from '@angular/material/input';
5
5
  import { Subject, Observable, of, combineLatest, iif, throwError, timer, fromEvent, merge } from 'rxjs';
6
- import { takeUntil, delay, shareReplay, retryWhen, tap, concatMap, distinctUntilChanged, share, filter as filter$1 } from 'rxjs/operators';
6
+ import { takeUntil, take, map, delay, shareReplay, retryWhen, tap, concatMap, distinctUntilChanged, share, filter as filter$1 } from 'rxjs/operators';
7
7
 
8
8
  class FsArray {
9
9
  /**
@@ -1101,22 +1101,40 @@ var QueueState;
1101
1101
  })(QueueState || (QueueState = {}));
1102
1102
 
1103
1103
  class Queue {
1104
- constructor(_limit = Infinity) {
1104
+ constructor(_limit = Infinity, _targets) {
1105
1105
  this._limit = _limit;
1106
+ this._targets = _targets;
1107
+ this._queueStats = {
1108
+ completed: 0,
1109
+ total: 0,
1110
+ errors: [],
1111
+ };
1112
+ this._doneQueueStats = {
1113
+ completed: 0,
1114
+ total: 0,
1115
+ errors: [],
1116
+ };
1117
+ this._completeQueueStats = {
1118
+ completed: 0,
1119
+ total: 0,
1120
+ errors: [],
1121
+ };
1106
1122
  this._done = new Subject();
1107
1123
  this._queue = [];
1108
1124
  this._inProgress = [];
1109
- this._total = 0;
1110
- this._completed = 0;
1111
- this._errors = 0;
1112
1125
  this._state = QueueState.Idle;
1113
1126
  this._destroy$ = new Subject();
1127
+ if (_targets) {
1128
+ _targets.forEach((target) => {
1129
+ this.push(target);
1130
+ });
1131
+ }
1114
1132
  }
1115
1133
  get total() {
1116
- return this._total;
1134
+ return this._queueStats.total;
1117
1135
  }
1118
1136
  get completed() {
1119
- return this._completed;
1137
+ return this._queueStats.completed;
1120
1138
  }
1121
1139
  get pending() {
1122
1140
  return this._queue.length;
@@ -1125,7 +1143,7 @@ class Queue {
1125
1143
  return this._inProgress.length;
1126
1144
  }
1127
1145
  get errors() {
1128
- return this._errors;
1146
+ return this._queueStats.errors;
1129
1147
  }
1130
1148
  get state() {
1131
1149
  return this._state;
@@ -1150,30 +1168,32 @@ class Queue {
1150
1168
  setLimit(value) {
1151
1169
  this._limit = value;
1152
1170
  }
1171
+ /**
1172
+ * @depreated
1173
+ */
1153
1174
  subscribe(fun, err, complete) {
1154
- this._done
1155
- .pipe(takeUntil(this._destroy$))
1175
+ this.observe$
1156
1176
  .subscribe(fun, err, complete);
1157
1177
  }
1178
+ get observe$() {
1179
+ return this._done
1180
+ .pipe(takeUntil(this._destroy$));
1181
+ }
1182
+ get complete$() {
1183
+ if (!this.isProcessing()) {
1184
+ return of({ total: 0, completed: 0, errors: [] });
1185
+ }
1186
+ return this.observe$
1187
+ .pipe(take(1), map(() => (this._completeQueueStats)));
1188
+ }
1158
1189
  complete(fun, err, complete) {
1159
- Observable.create(observer => {
1160
- if (!this.isProcessing()) {
1161
- observer.next();
1162
- observer.complete();
1163
- return;
1164
- }
1165
- this.subscribe(() => {
1166
- observer.next();
1167
- observer.complete();
1168
- }, (error) => {
1169
- observer.error(error);
1170
- this.clear();
1171
- });
1172
- }).subscribe(fun, err, complete);
1190
+ this.complete$.subscribe(fun, err, complete);
1173
1191
  }
1174
1192
  push(target, name) {
1175
1193
  const operation = new Operation(target, name);
1176
- this._total++;
1194
+ this._queueStats.total++;
1195
+ this._doneQueueStats.total++;
1196
+ this._completeQueueStats.total++;
1177
1197
  this._state = QueueState.Processing;
1178
1198
  if (this._inProgress.length < this._limit) {
1179
1199
  this._processOperation(operation);
@@ -1185,15 +1205,17 @@ class Queue {
1185
1205
  }
1186
1206
  clear() {
1187
1207
  this._queue = [];
1188
- this._total = 0;
1189
- this._errors = 0;
1190
- this._completed = 0;
1191
1208
  this._state = QueueState.Idle;
1192
- this._done = new Subject();
1209
+ this._queueStats = {
1210
+ total: 0,
1211
+ errors: [],
1212
+ completed: 0,
1213
+ };
1214
+ this._clearDoneQueueStats();
1193
1215
  }
1194
1216
  destroy() {
1195
- this.clear();
1196
1217
  this._done.complete();
1218
+ this.clear();
1197
1219
  }
1198
1220
  _processOperation(operation) {
1199
1221
  this._inProgress.push(operation);
@@ -1206,21 +1228,25 @@ class Queue {
1206
1228
  error: (error) => {
1207
1229
  const opIndex = this._inProgress.indexOf(operation);
1208
1230
  this._inProgress.splice(opIndex, 1);
1209
- this._errors++;
1231
+ this._queueStats.errors.push(error);
1232
+ this._doneQueueStats.errors.push(error);
1233
+ this._completeQueueStats.errors.push(error);
1210
1234
  operation.ready$.error(error);
1211
1235
  if (this.empty) {
1212
1236
  this._state = QueueState.Idle;
1213
- this._done.error(error);
1214
1237
  }
1215
1238
  },
1216
1239
  complete: () => {
1217
1240
  const opIndex = this._inProgress.indexOf(operation);
1218
1241
  this._inProgress.splice(opIndex, 1);
1219
- this._completed++;
1242
+ this._queueStats.completed++;
1243
+ this._doneQueueStats.completed++;
1244
+ this._completeQueueStats.completed++;
1220
1245
  operation.ready$.complete();
1221
1246
  if (this.empty) {
1222
1247
  this._state = QueueState.Idle;
1223
- this._done.next();
1248
+ this._done.next(this._doneQueueStats);
1249
+ this._clearDoneQueueStats();
1224
1250
  }
1225
1251
  else {
1226
1252
  if (this._queue.length) {
@@ -1231,6 +1257,13 @@ class Queue {
1231
1257
  }
1232
1258
  });
1233
1259
  }
1260
+ _clearDoneQueueStats() {
1261
+ this._doneQueueStats = {
1262
+ total: 0,
1263
+ errors: [],
1264
+ completed: 0,
1265
+ };
1266
+ }
1234
1267
  }
1235
1268
 
1236
1269
  function removeQueryParams(path) {