@firestitch/common 14.0.0 → 16.0.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.
Files changed (135) hide show
  1. package/app/directives/auto-focus.directive.d.ts +1 -1
  2. package/app/directives/auto-select.directive.d.ts +1 -1
  3. package/app/directives/model-change.directive.d.ts +1 -1
  4. package/app/directives/prevent-default.directive.d.ts +1 -1
  5. package/app/directives/stop-propagation.directive.d.ts +1 -1
  6. package/esm2022/app/directives/auto-focus.directive.mjs +61 -0
  7. package/esm2022/app/directives/auto-select.directive.mjs +32 -0
  8. package/esm2022/app/directives/model-change.directive.mjs +39 -0
  9. package/{esm2020 → esm2022}/app/directives/prevent-default.directive.mjs +4 -4
  10. package/{esm2020 → esm2022}/app/directives/stop-propagation.directive.mjs +4 -4
  11. package/{esm2020 → esm2022}/app/fs-common.module.mjs +31 -31
  12. package/{esm2020 → esm2022}/app/pipes/bytes.pipe.mjs +4 -4
  13. package/esm2022/app/pipes/currency.pipe.mjs +24 -0
  14. package/{esm2020 → esm2022}/app/pipes/number.pipe.mjs +4 -4
  15. package/{esm2020 → esm2022}/app/pipes/ordinal-number.pipe.mjs +4 -4
  16. package/{esm2020 → esm2022}/app/pipes/truncate.pipe.mjs +4 -4
  17. package/{esm2020 → esm2022}/app/pipes/util.pipe.mjs +13 -13
  18. package/{esm2020 → esm2022}/app/services/array.service.mjs +4 -4
  19. package/{esm2020 → esm2022}/app/services/math.service.mjs +4 -4
  20. package/esm2022/app/services/util.service.mjs +249 -0
  21. package/esm2022/app/services/vaildate.service.mjs +29 -0
  22. package/esm2022/libs/util/queue/operation.mjs +17 -0
  23. package/esm2022/libs/util/queue/queue.mjs +166 -0
  24. package/{fesm2020 → fesm2022}/firestitch-common.mjs +123 -115
  25. package/{fesm2020 → fesm2022}/firestitch-common.mjs.map +1 -1
  26. package/package.json +5 -11
  27. package/esm2020/app/directives/auto-focus.directive.mjs +0 -59
  28. package/esm2020/app/directives/auto-select.directive.mjs +0 -31
  29. package/esm2020/app/directives/model-change.directive.mjs +0 -37
  30. package/esm2020/app/pipes/currency.pipe.mjs +0 -23
  31. package/esm2020/app/services/util.service.mjs +0 -251
  32. package/esm2020/app/services/vaildate.service.mjs +0 -28
  33. package/esm2020/libs/util/queue/operation.mjs +0 -15
  34. package/esm2020/libs/util/queue/queue.mjs +0 -165
  35. package/fesm2015/firestitch-common.mjs +0 -1754
  36. package/fesm2015/firestitch-common.mjs.map +0 -1
  37. /package/{esm2020 → esm2022}/app/directives/index.mjs +0 -0
  38. /package/{esm2020 → esm2022}/app/pipes/index.mjs +0 -0
  39. /package/{esm2020 → esm2022}/firestitch-common.mjs +0 -0
  40. /package/{esm2020 → esm2022}/libs/array/compare/compare.mjs +0 -0
  41. /package/{esm2020 → esm2022}/libs/array/compare/index.mjs +0 -0
  42. /package/{esm2020 → esm2022}/libs/array/filter/filter.mjs +0 -0
  43. /package/{esm2020 → esm2022}/libs/array/filter/index.mjs +0 -0
  44. /package/{esm2020 → esm2022}/libs/array/find/find.mjs +0 -0
  45. /package/{esm2020 → esm2022}/libs/array/find/index.mjs +0 -0
  46. /package/{esm2020 → esm2022}/libs/array/inArray/inArray.mjs +0 -0
  47. /package/{esm2020 → esm2022}/libs/array/inArray/index.mjs +0 -0
  48. /package/{esm2020 → esm2022}/libs/array/index/index.mjs +0 -0
  49. /package/{esm2020 → esm2022}/libs/array/index.mjs +0 -0
  50. /package/{esm2020 → esm2022}/libs/array/indexOf/index.mjs +0 -0
  51. /package/{esm2020 → esm2022}/libs/array/indexOf/indexOf.mjs +0 -0
  52. /package/{esm2020 → esm2022}/libs/array/keyExists/index.mjs +0 -0
  53. /package/{esm2020 → esm2022}/libs/array/keyExists/keyExists.mjs +0 -0
  54. /package/{esm2020 → esm2022}/libs/array/ksort/index.mjs +0 -0
  55. /package/{esm2020 → esm2022}/libs/array/ksort/ksort.mjs +0 -0
  56. /package/{esm2020 → esm2022}/libs/array/list/index.mjs +0 -0
  57. /package/{esm2020 → esm2022}/libs/array/list/list.mjs +0 -0
  58. /package/{esm2020 → esm2022}/libs/array/nameValue/index.mjs +0 -0
  59. /package/{esm2020 → esm2022}/libs/array/nameValue/nameValue.mjs +0 -0
  60. /package/{esm2020 → esm2022}/libs/array/remove/index.mjs +0 -0
  61. /package/{esm2020 → esm2022}/libs/array/remove/remove.mjs +0 -0
  62. /package/{esm2020 → esm2022}/libs/array/rsort/index.mjs +0 -0
  63. /package/{esm2020 → esm2022}/libs/array/rsort/rsort.mjs +0 -0
  64. /package/{esm2020 → esm2022}/libs/array/sort/index.mjs +0 -0
  65. /package/{esm2020 → esm2022}/libs/array/sort/sort.mjs +0 -0
  66. /package/{esm2020 → esm2022}/libs/format/acronym/acronym.mjs +0 -0
  67. /package/{esm2020 → esm2022}/libs/format/acronym/index.mjs +0 -0
  68. /package/{esm2020 → esm2022}/libs/format/bytes/bytes.mjs +0 -0
  69. /package/{esm2020 → esm2022}/libs/format/bytes/index.mjs +0 -0
  70. /package/{esm2020 → esm2022}/libs/format/currency/currency.mjs +0 -0
  71. /package/{esm2020 → esm2022}/libs/format/currency/index.mjs +0 -0
  72. /package/{esm2020 → esm2022}/libs/format/index.mjs +0 -0
  73. /package/{esm2020 → esm2022}/libs/format/number/index.mjs +0 -0
  74. /package/{esm2020 → esm2022}/libs/format/number/number.mjs +0 -0
  75. /package/{esm2020 → esm2022}/libs/format/truncate/index.mjs +0 -0
  76. /package/{esm2020 → esm2022}/libs/format/truncate/truncate.mjs +0 -0
  77. /package/{esm2020 → esm2022}/libs/index.mjs +0 -0
  78. /package/{esm2020 → esm2022}/libs/rxjs/delayedRetry.mjs +0 -0
  79. /package/{esm2020 → esm2022}/libs/rxjs/keyboard-shortcut.mjs +0 -0
  80. /package/{esm2020 → esm2022}/libs/util/boolean/boolean.mjs +0 -0
  81. /package/{esm2020 → esm2022}/libs/util/boolean/index.mjs +0 -0
  82. /package/{esm2020 → esm2022}/libs/util/clone/clone.mjs +0 -0
  83. /package/{esm2020 → esm2022}/libs/util/clone/index.mjs +0 -0
  84. /package/{esm2020 → esm2022}/libs/util/debounce/debounce.mjs +0 -0
  85. /package/{esm2020 → esm2022}/libs/util/debounce/index.mjs +0 -0
  86. /package/{esm2020 → esm2022}/libs/util/get-normalized-path/get-normalized-path.mjs +0 -0
  87. /package/{esm2020 → esm2022}/libs/util/get-normalized-path/index.mjs +0 -0
  88. /package/{esm2020 → esm2022}/libs/util/guid/guid.mjs +0 -0
  89. /package/{esm2020 → esm2022}/libs/util/guid/index.mjs +0 -0
  90. /package/{esm2020 → esm2022}/libs/util/index.mjs +0 -0
  91. /package/{esm2020 → esm2022}/libs/util/is-array-equal/index.mjs +0 -0
  92. /package/{esm2020 → esm2022}/libs/util/is-array-equal/is-array-equal.mjs +0 -0
  93. /package/{esm2020 → esm2022}/libs/util/is-class/index.mjs +0 -0
  94. /package/{esm2020 → esm2022}/libs/util/is-class/is-class.mjs +0 -0
  95. /package/{esm2020 → esm2022}/libs/util/is-empty/index.mjs +0 -0
  96. /package/{esm2020 → esm2022}/libs/util/is-empty/is-empty.mjs +0 -0
  97. /package/{esm2020 → esm2022}/libs/util/is-numeric/index.mjs +0 -0
  98. /package/{esm2020 → esm2022}/libs/util/is-numeric/is-numeric.mjs +0 -0
  99. /package/{esm2020 → esm2022}/libs/util/is-object/index.mjs +0 -0
  100. /package/{esm2020 → esm2022}/libs/util/is-object/is-object.mjs +0 -0
  101. /package/{esm2020 → esm2022}/libs/util/keys/index.mjs +0 -0
  102. /package/{esm2020 → esm2022}/libs/util/keys/keys.mjs +0 -0
  103. /package/{esm2020 → esm2022}/libs/util/length/index.mjs +0 -0
  104. /package/{esm2020 → esm2022}/libs/util/length/length.mjs +0 -0
  105. /package/{esm2020 → esm2022}/libs/util/ordinal-number/index.mjs +0 -0
  106. /package/{esm2020 → esm2022}/libs/util/ordinal-number/ordinal-number.mjs +0 -0
  107. /package/{esm2020 → esm2022}/libs/util/queue/index.mjs +0 -0
  108. /package/{esm2020 → esm2022}/libs/util/queue/queue-stats.mjs +0 -0
  109. /package/{esm2020 → esm2022}/libs/util/queue/queue.enum.mjs +0 -0
  110. /package/{esm2020 → esm2022}/libs/util/remove-query-params/index.mjs +0 -0
  111. /package/{esm2020 → esm2022}/libs/util/remove-query-params/remove-query-params.mjs +0 -0
  112. /package/{esm2020 → esm2022}/libs/util/resolve/index.mjs +0 -0
  113. /package/{esm2020 → esm2022}/libs/util/resolve/resolve.mjs +0 -0
  114. /package/{esm2020 → esm2022}/libs/util/round/index.mjs +0 -0
  115. /package/{esm2020 → esm2022}/libs/util/round/round.mjs +0 -0
  116. /package/{esm2020 → esm2022}/libs/util/source-loader/index.mjs +0 -0
  117. /package/{esm2020 → esm2022}/libs/util/source-loader/source-loader.mjs +0 -0
  118. /package/{esm2020 → esm2022}/libs/util/stringify/index.mjs +0 -0
  119. /package/{esm2020 → esm2022}/libs/util/stringify/stringify.mjs +0 -0
  120. /package/{esm2020 → esm2022}/libs/util/throttle/index.mjs +0 -0
  121. /package/{esm2020 → esm2022}/libs/util/throttle/throttle.mjs +0 -0
  122. /package/{esm2020 → esm2022}/libs/util/to-string/index.mjs +0 -0
  123. /package/{esm2020 → esm2022}/libs/util/to-string/to-string.mjs +0 -0
  124. /package/{esm2020 → esm2022}/libs/util/uuid/index.mjs +0 -0
  125. /package/{esm2020 → esm2022}/libs/util/uuid/uuid.mjs +0 -0
  126. /package/{esm2020 → esm2022}/libs/util/value/index.mjs +0 -0
  127. /package/{esm2020 → esm2022}/libs/util/value/value.mjs +0 -0
  128. /package/{esm2020 → esm2022}/libs/validate/email/email.mjs +0 -0
  129. /package/{esm2020 → esm2022}/libs/validate/email/index.mjs +0 -0
  130. /package/{esm2020 → esm2022}/libs/validate/index.mjs +0 -0
  131. /package/{esm2020 → esm2022}/libs/validate/phone/index.mjs +0 -0
  132. /package/{esm2020 → esm2022}/libs/validate/phone/phone.mjs +0 -0
  133. /package/{esm2020 → esm2022}/libs/validate/url/index.mjs +0 -0
  134. /package/{esm2020 → esm2022}/libs/validate/url/url.mjs +0 -0
  135. /package/{esm2020 → esm2022}/public_api.mjs +0 -0
@@ -1,165 +0,0 @@
1
- import { of, Subject } from 'rxjs';
2
- import { delay, finalize, map, take, takeUntil } from 'rxjs/operators';
3
- import { Operation } from './operation';
4
- import { QueueState } from './queue.enum';
5
- export class Queue {
6
- constructor(_limit = Infinity) {
7
- this._limit = _limit;
8
- this._queueStats = {
9
- completed: 0,
10
- total: 0,
11
- errors: [],
12
- };
13
- this._doneQueueStats = {
14
- completed: 0,
15
- total: 0,
16
- errors: [],
17
- };
18
- this._completeQueueStats = {
19
- completed: 0,
20
- total: 0,
21
- errors: [],
22
- };
23
- this._done = new Subject();
24
- this._queue = [];
25
- this._inProgress = [];
26
- this._state = QueueState.Idle;
27
- this._destroy$ = new Subject();
28
- // if(_targets) {
29
- // _targets.forEach((target) => {
30
- // this.push(target);
31
- // });
32
- // }
33
- }
34
- get total() {
35
- return this._queueStats.total;
36
- }
37
- get completed() {
38
- return this._queueStats.completed;
39
- }
40
- get pending() {
41
- return this._queue.length;
42
- }
43
- get inProgress() {
44
- return this._inProgress.length;
45
- }
46
- get errors() {
47
- return this._queueStats.errors;
48
- }
49
- get state() {
50
- return this._state;
51
- }
52
- get empty() {
53
- return !this._queue.length && !this._inProgress.length;
54
- }
55
- get pendingOperations() {
56
- return this._queue
57
- .map((operation) => operation.name);
58
- }
59
- get inProgressOperations() {
60
- return this._inProgress
61
- .map((operation) => operation.name);
62
- }
63
- isProcessing() {
64
- return this._state === QueueState.Processing;
65
- }
66
- isIdle() {
67
- return this._state === QueueState.Idle;
68
- }
69
- setLimit(value) {
70
- this._limit = value;
71
- }
72
- /**
73
- * @depreated
74
- */
75
- subscribe(fun, err, complete) {
76
- this.observe$
77
- .subscribe(fun, err, complete);
78
- }
79
- get observe$() {
80
- return this._done
81
- .pipe(takeUntil(this._destroy$));
82
- }
83
- get complete$() {
84
- if (!this.isProcessing()) {
85
- return of({ total: 0, completed: 0, errors: [] });
86
- }
87
- return this.observe$
88
- .pipe(take(1), map(() => (this._completeQueueStats)));
89
- }
90
- complete(fun, err, complete) {
91
- this.complete$.subscribe(fun, err, complete);
92
- }
93
- push(target, name) {
94
- const operation = new Operation(target, name);
95
- this._queueStats.total++;
96
- this._doneQueueStats.total++;
97
- this._completeQueueStats.total++;
98
- this._state = QueueState.Processing;
99
- if (this._inProgress.length < this._limit) {
100
- this._processOperation(operation);
101
- }
102
- else {
103
- this._queue.push(operation);
104
- }
105
- return operation.ready$;
106
- }
107
- clear() {
108
- this._queue = [];
109
- this._state = QueueState.Idle;
110
- this._queueStats = {
111
- total: 0,
112
- errors: [],
113
- completed: 0,
114
- };
115
- this._clearDoneQueueStats();
116
- }
117
- destroy() {
118
- this._done.complete();
119
- this.clear();
120
- }
121
- _processOperation(operation) {
122
- this._inProgress.push(operation);
123
- operation.target
124
- .pipe(delay(200), // Hack to prevent extra quick proccess execution
125
- finalize(() => {
126
- const opIndex = this._inProgress.indexOf(operation);
127
- this._inProgress.splice(opIndex, 1);
128
- if (this.empty) {
129
- this._state = QueueState.Idle;
130
- this._done.next(this._doneQueueStats);
131
- this._clearDoneQueueStats();
132
- }
133
- else {
134
- if (this._queue.length) {
135
- const queueItem = this._queue.shift();
136
- this._processOperation(queueItem);
137
- }
138
- }
139
- }), takeUntil(this._destroy$)).subscribe({
140
- next: (data) => {
141
- operation.ready$.next(data);
142
- },
143
- error: (error) => {
144
- this._queueStats.errors.push(error);
145
- this._doneQueueStats.errors.push(error);
146
- this._completeQueueStats.errors.push(error);
147
- operation.ready$.error(error);
148
- },
149
- complete: () => {
150
- this._queueStats.completed++;
151
- this._doneQueueStats.completed++;
152
- this._completeQueueStats.completed++;
153
- operation.ready$.complete();
154
- }
155
- });
156
- }
157
- _clearDoneQueueStats() {
158
- this._doneQueueStats = {
159
- total: 0,
160
- errors: [],
161
- completed: 0,
162
- };
163
- }
164
- }
165
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91dGlsL3F1ZXVlL3F1ZXVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV4QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRzFDLE1BQU0sT0FBTyxLQUFLO0lBMEJoQixZQUNVLFNBQVMsUUFBUTtRQUFqQixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBekJuQixnQkFBVyxHQUFlO1lBQ2hDLFNBQVMsRUFBRSxDQUFDO1lBQ1osS0FBSyxFQUFFLENBQUM7WUFDUixNQUFNLEVBQUUsRUFBRTtTQUNYLENBQUM7UUFFTSxvQkFBZSxHQUFlO1lBQ3BDLFNBQVMsRUFBRSxDQUFDO1lBQ1osS0FBSyxFQUFFLENBQUM7WUFDUixNQUFNLEVBQUUsRUFBRTtTQUNYLENBQUM7UUFFTSx3QkFBbUIsR0FBZTtZQUN4QyxTQUFTLEVBQUUsQ0FBQztZQUNaLEtBQUssRUFBRSxDQUFDO1lBQ1IsTUFBTSxFQUFFLEVBQUU7U0FDWCxDQUFDO1FBRU0sVUFBSyxHQUFHLElBQUksT0FBTyxFQUFjLENBQUM7UUFDbEMsV0FBTSxHQUFnQixFQUFFLENBQUM7UUFDekIsZ0JBQVcsR0FBZ0IsRUFBRSxDQUFDO1FBQzlCLFdBQU0sR0FBZSxVQUFVLENBQUMsSUFBSSxDQUFDO1FBQ3JDLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBTXRDLGlCQUFpQjtRQUNqQixtQ0FBbUM7UUFDbkMseUJBQXlCO1FBQ3pCLFNBQVM7UUFDVCxJQUFJO0lB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RSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBRXJDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDOUIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxvQkFBb0I7UUFDMUIsSUFBSSxDQUFDLGVBQWUsR0FBRztZQUNyQixLQUFLLEVBQUUsQ0FBQztZQUNSLE1BQU0sRUFBRSxFQUFFO1lBQ1YsU0FBUyxFQUFFLENBQUM7U0FDYixDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlbGF5LCBmaW5hbGl6ZSwgbWFwLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gJy4vb3BlcmF0aW9uJztcbmltcG9ydCB7IFF1ZXVlU3RhdHMgfSBmcm9tICcuL3F1ZXVlLXN0YXRzJztcbmltcG9ydCB7IFF1ZXVlU3RhdGUgfSBmcm9tICcuL3F1ZXVlLmVudW0nO1xuXG5cbmV4cG9ydCBjbGFzcyBRdWV1ZSB7XG5cbiAgcHJpdmF0ZSBfcXVldWVTdGF0czogUXVldWVTdGF0cyA9IHtcbiAgICBjb21wbGV0ZWQ6IDAsXG4gICAgdG90YWw6IDAsXG4gICAgZXJyb3JzOiBbXSxcbiAgfTtcblxuICBwcml2YXRlIF9kb25lUXVldWVTdGF0czogUXVldWVTdGF0cyA9IHtcbiAgICBjb21wbGV0ZWQ6IDAsXG4gICAgdG90YWw6IDAsXG4gICAgZXJyb3JzOiBbXSxcbiAgfTtcblxuICBwcml2YXRlIF9jb21wbGV0ZVF1ZXVlU3RhdHM6IFF1ZXVlU3RhdHMgPSB7XG4gICAgY29tcGxldGVkOiAwLFxuICAgIHRvdGFsOiAwLFxuICAgIGVycm9yczogW10sXG4gIH07XG5cbiAgcHJpdmF0ZSBfZG9uZSA9IG5ldyBTdWJqZWN0PFF1ZXVlU3RhdHM+KCk7XG4gIHByaXZhdGUgX3F1ZXVlOiBPcGVyYXRpb25bXSA9IFtdO1xuICBwcml2YXRlIF9pblByb2dyZXNzOiBPcGVyYXRpb25bXSA9IFtdO1xuICBwcml2YXRlIF9zdGF0ZTogUXVldWVTdGF0ZSA9IFF1ZXVlU3RhdGUuSWRsZTtcbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfbGltaXQgPSBJbmZpbml0eSxcbiAgICAvL3ByaXZhdGUgX3RhcmdldHM/OiBPYnNlcnZhYmxlPGFueT5bXSxcbiAgKSB7XG4gICAgLy8gaWYoX3RhcmdldHMpIHtcbiAgICAvLyAgIF90YXJnZXRzLmZvckVhY2goKHRhcmdldCkgPT4ge1xuICAgIC8vICAgICB0aGlzLnB1c2godGFyZ2V0KTtcbiAgICAvLyAgIH0pOyBcbiAgICAvLyB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRvdGFsKCkge1xuICAgIHJldHVybiB0aGlzLl9xdWV1ZVN0YXRzLnRvdGFsO1xuICB9XG5cbiAgcHVibGljIGdldCBjb21wbGV0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3F1ZXVlU3RhdHMuY29tcGxldGVkO1xuICB9XG5cbiAgcHVibGljIGdldCBwZW5kaW5nKCkge1xuICAgIHJldHVybiB0aGlzLl9xdWV1ZS5sZW5ndGg7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGluUHJvZ3Jlc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2luUHJvZ3Jlc3MubGVuZ3RoO1xuICB9XG5cbiAgcHVibGljIGdldCBlcnJvcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3F1ZXVlU3RhdHMuZXJyb3JzO1xuICB9XG5cbiAgcHVibGljIGdldCBzdGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVtcHR5KCkge1xuICAgIHJldHVybiAhdGhpcy5fcXVldWUubGVuZ3RoICYmICF0aGlzLl9pblByb2dyZXNzLmxlbmd0aFxuICB9XG5cbiAgcHVibGljIGdldCBwZW5kaW5nT3BlcmF0aW9ucygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3F1ZXVlXG4gICAgICAubWFwKChvcGVyYXRpb24pID0+IG9wZXJhdGlvbi5uYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW5Qcm9ncmVzc09wZXJhdGlvbnMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9pblByb2dyZXNzXG4gICAgICAubWFwKChvcGVyYXRpb24pID0+IG9wZXJhdGlvbi5uYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1Byb2Nlc3NpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlID09PSBRdWV1ZVN0YXRlLlByb2Nlc3Npbmc7XG4gIH1cblxuICBwdWJsaWMgaXNJZGxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZSA9PT0gUXVldWVTdGF0ZS5JZGxlO1xuICB9XG5cbiAgcHVibGljIHNldExpbWl0KHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9saW1pdCA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWF0ZWRcbiAgICovXG4gIHB1YmxpYyBzdWJzY3JpYmUoZnVuLCBlcnI/LCBjb21wbGV0ZT8pOiB2b2lkIHtcbiAgICB0aGlzLm9ic2VydmUkXG4gICAgICAuc3Vic2NyaWJlKGZ1biwgZXJyLCBjb21wbGV0ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG9ic2VydmUkKCk6IE9ic2VydmFibGU8UXVldWVTdGF0cz4ge1xuICAgIHJldHVybiB0aGlzLl9kb25lXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbXBsZXRlJCgpOiBPYnNlcnZhYmxlPFF1ZXVlU3RhdHM+IHtcbiAgICBpZiAoIXRoaXMuaXNQcm9jZXNzaW5nKCkpIHtcbiAgICAgIHJldHVybiBvZih7IHRvdGFsOiAwLCBjb21wbGV0ZWQ6IDAsIGVycm9yczogW10gfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMub2JzZXJ2ZSRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICBtYXAoKCkgPT4gKHRoaXMuX2NvbXBsZXRlUXVldWVTdGF0cykpLFxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBjb21wbGV0ZShmdW4sIGVycj8sIGNvbXBsZXRlPyk6IHZvaWQge1xuICAgIHRoaXMuY29tcGxldGUkLnN1YnNjcmliZShmdW4sIGVyciwgY29tcGxldGUpO1xuICB9XG5cbiAgcHVibGljIHB1c2godGFyZ2V0OiBPYnNlcnZhYmxlPGFueT4sIG5hbWU/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBvcGVyYXRpb24gPSBuZXcgT3BlcmF0aW9uKHRhcmdldCwgbmFtZSk7XG5cbiAgICB0aGlzLl9xdWV1ZVN0YXRzLnRvdGFsKys7XG4gICAgdGhpcy5fZG9uZVF1ZXVlU3RhdHMudG90YWwrKztcbiAgICB0aGlzLl9jb21wbGV0ZVF1ZXVlU3RhdHMudG90YWwrKztcbiAgICB0aGlzLl9zdGF0ZSA9IFF1ZXVlU3RhdGUuUHJvY2Vzc2luZztcblxuICAgIGlmICh0aGlzLl9pblByb2dyZXNzLmxlbmd0aCA8IHRoaXMuX2xpbWl0KSB7XG4gICAgICB0aGlzLl9wcm9jZXNzT3BlcmF0aW9uKG9wZXJhdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3F1ZXVlLnB1c2gob3BlcmF0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3BlcmF0aW9uLnJlYWR5JDtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLl9xdWV1ZSA9IFtdO1xuICAgIHRoaXMuX3N0YXRlID0gUXVldWVTdGF0ZS5JZGxlOyAgICAgICBcbiAgICB0aGlzLl9xdWV1ZVN0YXRzID0ge1xuICAgICAgdG90YWw6IDAsXG4gICAgICBlcnJvcnM6IFtdLFxuICAgICAgY29tcGxldGVkOiAwLFxuICAgIH07XG4gICAgdGhpcy5fY2xlYXJEb25lUXVldWVTdGF0cygpO1xuICB9XG5cbiAgcHVibGljIGRlc3Ryb3koKTogdm9pZCB7ICAgIFxuICAgIHRoaXMuX2RvbmUuY29tcGxldGUoKTtcbiAgICB0aGlzLmNsZWFyKCk7XG4gIH1cblxuICBwcml2YXRlIF9wcm9jZXNzT3BlcmF0aW9uKG9wZXJhdGlvbjogT3BlcmF0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5faW5Qcm9ncmVzcy5wdXNoKG9wZXJhdGlvbik7XG5cbiAgICBvcGVyYXRpb24udGFyZ2V0XG4gICAgICAucGlwZShcbiAgICAgICAgZGVsYXkoMjAwKSwgLy8gSGFjayB0byBwcmV2ZW50IGV4dHJhIHF1aWNrIHByb2NjZXNzIGV4ZWN1dGlvblxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgY29uc3Qgb3BJbmRleCA9IHRoaXMuX2luUHJvZ3Jlc3MuaW5kZXhPZihvcGVyYXRpb24pO1xuICAgICAgICAgIHRoaXMuX2luUHJvZ3Jlc3Muc3BsaWNlKG9wSW5kZXgsIDEpO1xuICAgICAgICAgIFxuICAgICAgICAgIGlmICh0aGlzLmVtcHR5KSB7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZSA9IFF1ZXVlU3RhdGUuSWRsZTtcbiAgICAgICAgICAgIHRoaXMuX2RvbmUubmV4dCh0aGlzLl9kb25lUXVldWVTdGF0cyk7XG4gICAgICAgICAgICB0aGlzLl9jbGVhckRvbmVRdWV1ZVN0YXRzKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9xdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgY29uc3QgcXVldWVJdGVtID0gdGhpcy5fcXVldWUuc2hpZnQoKTtcbiAgICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc09wZXJhdGlvbihxdWV1ZUl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChkYXRhKSA9PiB7XG4gICAgICAgICAgb3BlcmF0aW9uLnJlYWR5JC5uZXh0KGRhdGEpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgICAgdGhpcy5fcXVldWVTdGF0cy5lcnJvcnMucHVzaChlcnJvcik7XG4gICAgICAgICAgdGhpcy5fZG9uZVF1ZXVlU3RhdHMuZXJyb3JzLnB1c2goZXJyb3IpO1xuICAgICAgICAgIHRoaXMuX2NvbXBsZXRlUXVldWVTdGF0cy5lcnJvcnMucHVzaChlcnJvcik7XG5cbiAgICAgICAgICBvcGVyYXRpb24ucmVhZHkkLmVycm9yKGVycm9yKTtcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLl9xdWV1ZVN0YXRzLmNvbXBsZXRlZCsrO1xuICAgICAgICAgIHRoaXMuX2RvbmVRdWV1ZVN0YXRzLmNvbXBsZXRlZCsrO1xuICAgICAgICAgIHRoaXMuX2NvbXBsZXRlUXVldWVTdGF0cy5jb21wbGV0ZWQrKztcblxuICAgICAgICAgIG9wZXJhdGlvbi5yZWFkeSQuY29tcGxldGUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9jbGVhckRvbmVRdWV1ZVN0YXRzKCk6IHZvaWQge1xuICAgIHRoaXMuX2RvbmVRdWV1ZVN0YXRzID0ge1xuICAgICAgdG90YWw6IDAsXG4gICAgICBlcnJvcnM6IFtdLFxuICAgICAgY29tcGxldGVkOiAwLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==