@igo2/utils 1.8.2 → 1.9.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.
- package/README.md +1 -1
- package/bundles/igo2-utils.umd.js +1043 -1010
- package/bundles/igo2-utils.umd.js.map +1 -1
- package/esm2015/igo2-utils.js +5 -5
- package/esm2015/lib/base64.js +85 -85
- package/esm2015/lib/change.interface.js +7 -7
- package/esm2015/lib/change.js +87 -87
- package/esm2015/lib/clipboard.js +52 -52
- package/esm2015/lib/file.js +28 -28
- package/esm2015/lib/index.js +12 -12
- package/esm2015/lib/object-utils.js +248 -248
- package/esm2015/lib/strenum.js +8 -8
- package/esm2015/lib/string-utils.js +105 -105
- package/esm2015/lib/user-agent.js +3 -3
- package/esm2015/lib/uuid.js +9 -9
- package/esm2015/lib/watcher.js +41 -41
- package/esm2015/public_api.js +5 -5
- package/fesm2015/igo2-utils.js +651 -651
- package/fesm2015/igo2-utils.js.map +1 -1
- package/igo2-utils.d.ts +5 -5
- package/lib/base64.d.ts +8 -8
- package/lib/change.d.ts +5 -5
- package/lib/change.interface.d.ts +24 -24
- package/lib/clipboard.d.ts +7 -7
- package/lib/file.d.ts +16 -16
- package/lib/index.d.ts +11 -11
- package/lib/object-utils.d.ts +26 -26
- package/lib/strenum.d.ts +4 -4
- package/lib/string-utils.d.ts +6 -6
- package/lib/user-agent.d.ts +5 -5
- package/lib/uuid.d.ts +2 -2
- package/lib/watcher.d.ts +19 -19
- package/package.json +4 -4
- package/public_api.d.ts +1 -1
- package/bundles/igo2-utils.umd.min.js +0 -2
- package/bundles/igo2-utils.umd.min.js.map +0 -1
|
@@ -1,1044 +1,1077 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
2
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('bowser'), require('rxjs'), require('rxjs/operators')) :
|
|
3
3
|
typeof define === 'function' && define.amd ? define('@igo2/utils', ['exports', 'bowser', 'rxjs', 'rxjs/operators'], factory) :
|
|
4
|
-
(global = global || self, factory((global.igo2 = global.igo2 || {}, global.igo2.utils = {}), global.bowser, global.rxjs, global.rxjs.operators));
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.igo2 = global.igo2 || {}, global.igo2.utils = {}), global.bowser, global.rxjs, global.rxjs.operators));
|
|
5
5
|
}(this, (function (exports, Bowser, rxjs, operators) { 'use strict';
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
Base64.decode = function (s) {
|
|
21
|
-
var pads = 0, i, b10, imax = s.length, x = [];
|
|
22
|
-
s = String(s);
|
|
23
|
-
if (imax === 0) {
|
|
24
|
-
return s;
|
|
25
|
-
}
|
|
26
|
-
if (s.charAt(imax - 1) === this.PADCHAR) {
|
|
27
|
-
pads = 1;
|
|
28
|
-
if (s.charAt(imax - 2) === this.PADCHAR) {
|
|
29
|
-
pads = 2;
|
|
7
|
+
function _interopNamespace(e) {
|
|
8
|
+
if (e && e.__esModule) return e;
|
|
9
|
+
var n = Object.create(null);
|
|
10
|
+
if (e) {
|
|
11
|
+
Object.keys(e).forEach(function (k) {
|
|
12
|
+
if (k !== 'default') {
|
|
13
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
14
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: function () {
|
|
17
|
+
return e[k];
|
|
18
|
+
}
|
|
19
|
+
});
|
|
30
20
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
(this.getByte64(s, i + 1) << 12) |
|
|
37
|
-
(this.getByte64(s, i + 2) << 6) |
|
|
38
|
-
this.getByte64(s, i + 3);
|
|
39
|
-
x.push(String.fromCharCode(b10 >> 16, (b10 >> 8) & 255, b10 & 255));
|
|
40
|
-
}
|
|
41
|
-
switch (pads) {
|
|
42
|
-
case 1:
|
|
43
|
-
b10 =
|
|
44
|
-
(this.getByte64(s, i) << 18) |
|
|
45
|
-
(this.getByte64(s, i + 1) << 12) |
|
|
46
|
-
(this.getByte64(s, i + 2) << 6);
|
|
47
|
-
x.push(String.fromCharCode(b10 >> 16, (b10 >> 8) & 255));
|
|
48
|
-
break;
|
|
49
|
-
case 2:
|
|
50
|
-
b10 = (this.getByte64(s, i) << 18) | (this.getByte64(s, i + 1) << 12);
|
|
51
|
-
x.push(String.fromCharCode(b10 >> 16));
|
|
52
|
-
break;
|
|
53
|
-
}
|
|
54
|
-
return x.join('');
|
|
55
|
-
};
|
|
56
|
-
Base64.encode = function (s) {
|
|
57
|
-
s = String(s);
|
|
58
|
-
var i, b10, x = [], imax = s.length - s.length % 3;
|
|
59
|
-
if (s.length === 0) {
|
|
60
|
-
return s;
|
|
61
|
-
}
|
|
62
|
-
for (i = 0; i < imax; i += 3) {
|
|
63
|
-
b10 =
|
|
64
|
-
(this.getByte(s, i) << 16) |
|
|
65
|
-
(this.getByte(s, i + 1) << 8) |
|
|
66
|
-
this.getByte(s, i + 2);
|
|
67
|
-
x.push(this.ALPHA.charAt(b10 >> 18));
|
|
68
|
-
x.push(this.ALPHA.charAt((b10 >> 12) & 63));
|
|
69
|
-
x.push(this.ALPHA.charAt((b10 >> 6) & 63));
|
|
70
|
-
x.push(this.ALPHA.charAt(b10 & 63));
|
|
71
|
-
}
|
|
72
|
-
switch (s.length - imax) {
|
|
73
|
-
case 1:
|
|
74
|
-
b10 = this.getByte(s, i) << 16;
|
|
75
|
-
x.push(this.ALPHA.charAt(b10 >> 18) +
|
|
76
|
-
this.ALPHA.charAt((b10 >> 12) & 63) +
|
|
77
|
-
this.PADCHAR +
|
|
78
|
-
this.PADCHAR);
|
|
79
|
-
break;
|
|
80
|
-
case 2:
|
|
81
|
-
b10 = (this.getByte(s, i) << 16) | (this.getByte(s, i + 1) << 8);
|
|
82
|
-
x.push(this.ALPHA.charAt(b10 >> 18) +
|
|
83
|
-
this.ALPHA.charAt((b10 >> 12) & 63) +
|
|
84
|
-
this.ALPHA.charAt((b10 >> 6) & 63) +
|
|
85
|
-
this.PADCHAR);
|
|
86
|
-
break;
|
|
87
|
-
}
|
|
88
|
-
return x.join('');
|
|
89
|
-
};
|
|
90
|
-
return Base64;
|
|
91
|
-
}());
|
|
92
|
-
Base64.PADCHAR = '=';
|
|
93
|
-
Base64.ALPHA = ALPHA;
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
n['default'] = e;
|
|
24
|
+
return Object.freeze(n);
|
|
25
|
+
}
|
|
94
26
|
|
|
95
|
-
var
|
|
27
|
+
var Bowser__namespace = /*#__PURE__*/_interopNamespace(Bowser);
|
|
96
28
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
29
|
+
/* tslint:disable */
|
|
30
|
+
var ALPHA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
|
31
|
+
var Base64 = /** @class */ (function () {
|
|
32
|
+
function Base64() {
|
|
33
|
+
}
|
|
34
|
+
Base64.getByte = function (s, i) {
|
|
35
|
+
var x = s.charCodeAt(i);
|
|
36
|
+
return x;
|
|
37
|
+
};
|
|
38
|
+
Base64.getByte64 = function (s, i) {
|
|
39
|
+
var idx = this.ALPHA.indexOf(s.charAt(i));
|
|
40
|
+
return idx;
|
|
41
|
+
};
|
|
42
|
+
Base64.decode = function (s) {
|
|
43
|
+
var pads = 0, i, b10, imax = s.length, x = [];
|
|
44
|
+
s = String(s);
|
|
45
|
+
if (imax === 0) {
|
|
46
|
+
return s;
|
|
47
|
+
}
|
|
48
|
+
if (s.charAt(imax - 1) === this.PADCHAR) {
|
|
49
|
+
pads = 1;
|
|
50
|
+
if (s.charAt(imax - 2) === this.PADCHAR) {
|
|
51
|
+
pads = 2;
|
|
52
|
+
}
|
|
53
|
+
imax -= 4;
|
|
54
|
+
}
|
|
55
|
+
for (i = 0; i < imax; i += 4) {
|
|
56
|
+
b10 =
|
|
57
|
+
(this.getByte64(s, i) << 18) |
|
|
58
|
+
(this.getByte64(s, i + 1) << 12) |
|
|
59
|
+
(this.getByte64(s, i + 2) << 6) |
|
|
60
|
+
this.getByte64(s, i + 3);
|
|
61
|
+
x.push(String.fromCharCode(b10 >> 16, (b10 >> 8) & 255, b10 & 255));
|
|
62
|
+
}
|
|
63
|
+
switch (pads) {
|
|
64
|
+
case 1:
|
|
65
|
+
b10 =
|
|
66
|
+
(this.getByte64(s, i) << 18) |
|
|
67
|
+
(this.getByte64(s, i + 1) << 12) |
|
|
68
|
+
(this.getByte64(s, i + 2) << 6);
|
|
69
|
+
x.push(String.fromCharCode(b10 >> 16, (b10 >> 8) & 255));
|
|
70
|
+
break;
|
|
71
|
+
case 2:
|
|
72
|
+
b10 = (this.getByte64(s, i) << 18) | (this.getByte64(s, i + 1) << 12);
|
|
73
|
+
x.push(String.fromCharCode(b10 >> 16));
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
return x.join('');
|
|
77
|
+
};
|
|
78
|
+
Base64.encode = function (s) {
|
|
79
|
+
s = String(s);
|
|
80
|
+
var i, b10, x = [], imax = s.length - s.length % 3;
|
|
81
|
+
if (s.length === 0) {
|
|
82
|
+
return s;
|
|
83
|
+
}
|
|
84
|
+
for (i = 0; i < imax; i += 3) {
|
|
85
|
+
b10 =
|
|
86
|
+
(this.getByte(s, i) << 16) |
|
|
87
|
+
(this.getByte(s, i + 1) << 8) |
|
|
88
|
+
this.getByte(s, i + 2);
|
|
89
|
+
x.push(this.ALPHA.charAt(b10 >> 18));
|
|
90
|
+
x.push(this.ALPHA.charAt((b10 >> 12) & 63));
|
|
91
|
+
x.push(this.ALPHA.charAt((b10 >> 6) & 63));
|
|
92
|
+
x.push(this.ALPHA.charAt(b10 & 63));
|
|
93
|
+
}
|
|
94
|
+
switch (s.length - imax) {
|
|
95
|
+
case 1:
|
|
96
|
+
b10 = this.getByte(s, i) << 16;
|
|
97
|
+
x.push(this.ALPHA.charAt(b10 >> 18) +
|
|
98
|
+
this.ALPHA.charAt((b10 >> 12) & 63) +
|
|
99
|
+
this.PADCHAR +
|
|
100
|
+
this.PADCHAR);
|
|
101
|
+
break;
|
|
102
|
+
case 2:
|
|
103
|
+
b10 = (this.getByte(s, i) << 16) | (this.getByte(s, i + 1) << 8);
|
|
104
|
+
x.push(this.ALPHA.charAt(b10 >> 18) +
|
|
105
|
+
this.ALPHA.charAt((b10 >> 12) & 63) +
|
|
106
|
+
this.ALPHA.charAt((b10 >> 6) & 63) +
|
|
107
|
+
this.PADCHAR);
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
return x.join('');
|
|
111
|
+
};
|
|
112
|
+
return Base64;
|
|
113
|
+
}());
|
|
114
|
+
Base64.PADCHAR = '=';
|
|
115
|
+
Base64.ALPHA = ALPHA;
|
|
150
116
|
|
|
151
|
-
|
|
152
|
-
Copyright (c) Microsoft Corporation.
|
|
117
|
+
var userAgent = Bowser__namespace.getParser(window.navigator.userAgent);
|
|
153
118
|
|
|
154
|
-
|
|
155
|
-
|
|
119
|
+
var Clipboard = /** @class */ (function () {
|
|
120
|
+
function Clipboard() {
|
|
121
|
+
}
|
|
122
|
+
Clipboard.copy = function (element) {
|
|
123
|
+
var successful = false;
|
|
124
|
+
if (typeof element === 'string') {
|
|
125
|
+
var textArea = Clipboard.createTextArea(element);
|
|
126
|
+
Clipboard.selectText(textArea);
|
|
127
|
+
successful = Clipboard.copyTextToClipboard();
|
|
128
|
+
Clipboard.destroyTextArea(textArea);
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
Clipboard.selectText(element);
|
|
132
|
+
successful = Clipboard.copyTextToClipboard();
|
|
133
|
+
}
|
|
134
|
+
return successful;
|
|
135
|
+
};
|
|
136
|
+
Clipboard.createTextArea = function (text) {
|
|
137
|
+
var textArea = document.createElement('textArea');
|
|
138
|
+
textArea.value = text;
|
|
139
|
+
document.body.appendChild(textArea);
|
|
140
|
+
return textArea;
|
|
141
|
+
};
|
|
142
|
+
Clipboard.destroyTextArea = function (textArea) {
|
|
143
|
+
document.body.removeChild(textArea);
|
|
144
|
+
};
|
|
145
|
+
Clipboard.selectText = function (textArea) {
|
|
146
|
+
if (userAgent.getOSName() === 'iOS') {
|
|
147
|
+
var oldContentEditable = textArea.contentEditable;
|
|
148
|
+
var oldReadOnly = textArea.readOnly;
|
|
149
|
+
var range = document.createRange();
|
|
150
|
+
var selection = window.getSelection();
|
|
151
|
+
textArea.contenteditable = true;
|
|
152
|
+
textArea.readonly = false;
|
|
153
|
+
range.selectNodeContents(textArea);
|
|
154
|
+
selection.removeAllRanges();
|
|
155
|
+
selection.addRange(range);
|
|
156
|
+
textArea.setSelectionRange(0, 999999);
|
|
157
|
+
textArea.contentEditable = oldContentEditable;
|
|
158
|
+
textArea.readOnly = oldReadOnly;
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
textArea.select();
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
Clipboard.copyTextToClipboard = function () {
|
|
165
|
+
if (!(userAgent.getOSName() === 'iOS' && userAgent.compareVersion('<10'))) {
|
|
166
|
+
return document.execCommand('copy');
|
|
167
|
+
}
|
|
168
|
+
return false;
|
|
169
|
+
};
|
|
170
|
+
return Clipboard;
|
|
171
|
+
}());
|
|
156
172
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
function
|
|
232
|
-
step(generator
|
|
233
|
-
}
|
|
234
|
-
catch (e) {
|
|
235
|
-
reject(e);
|
|
236
|
-
} }
|
|
237
|
-
function
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
case
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
_.
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
_.
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
return ar;
|
|
367
|
-
}
|
|
368
|
-
/** @deprecated */
|
|
369
|
-
function
|
|
370
|
-
for (var
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
for (var
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
173
|
+
/*! *****************************************************************************
|
|
174
|
+
Copyright (c) Microsoft Corporation.
|
|
175
|
+
|
|
176
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
177
|
+
purpose with or without fee is hereby granted.
|
|
178
|
+
|
|
179
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
180
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
181
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
182
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
183
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
184
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
185
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
186
|
+
***************************************************************************** */
|
|
187
|
+
/* global Reflect, Promise */
|
|
188
|
+
var extendStatics = function (d, b) {
|
|
189
|
+
extendStatics = Object.setPrototypeOf ||
|
|
190
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
191
|
+
function (d, b) { for (var p in b)
|
|
192
|
+
if (Object.prototype.hasOwnProperty.call(b, p))
|
|
193
|
+
d[p] = b[p]; };
|
|
194
|
+
return extendStatics(d, b);
|
|
195
|
+
};
|
|
196
|
+
function __extends(d, b) {
|
|
197
|
+
if (typeof b !== "function" && b !== null)
|
|
198
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
199
|
+
extendStatics(d, b);
|
|
200
|
+
function __() { this.constructor = d; }
|
|
201
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
202
|
+
}
|
|
203
|
+
var __assign = function () {
|
|
204
|
+
__assign = Object.assign || function __assign(t) {
|
|
205
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
206
|
+
s = arguments[i];
|
|
207
|
+
for (var p in s)
|
|
208
|
+
if (Object.prototype.hasOwnProperty.call(s, p))
|
|
209
|
+
t[p] = s[p];
|
|
210
|
+
}
|
|
211
|
+
return t;
|
|
212
|
+
};
|
|
213
|
+
return __assign.apply(this, arguments);
|
|
214
|
+
};
|
|
215
|
+
function __rest(s, e) {
|
|
216
|
+
var t = {};
|
|
217
|
+
for (var p in s)
|
|
218
|
+
if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
219
|
+
t[p] = s[p];
|
|
220
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
221
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
222
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
223
|
+
t[p[i]] = s[p[i]];
|
|
224
|
+
}
|
|
225
|
+
return t;
|
|
226
|
+
}
|
|
227
|
+
function __decorate(decorators, target, key, desc) {
|
|
228
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
229
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
230
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
231
|
+
else
|
|
232
|
+
for (var i = decorators.length - 1; i >= 0; i--)
|
|
233
|
+
if (d = decorators[i])
|
|
234
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
235
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
236
|
+
}
|
|
237
|
+
function __param(paramIndex, decorator) {
|
|
238
|
+
return function (target, key) { decorator(target, key, paramIndex); };
|
|
239
|
+
}
|
|
240
|
+
function __metadata(metadataKey, metadataValue) {
|
|
241
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
|
|
242
|
+
return Reflect.metadata(metadataKey, metadataValue);
|
|
243
|
+
}
|
|
244
|
+
function __awaiter(thisArg, _arguments, P, generator) {
|
|
245
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
246
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
247
|
+
function fulfilled(value) { try {
|
|
248
|
+
step(generator.next(value));
|
|
249
|
+
}
|
|
250
|
+
catch (e) {
|
|
251
|
+
reject(e);
|
|
252
|
+
} }
|
|
253
|
+
function rejected(value) { try {
|
|
254
|
+
step(generator["throw"](value));
|
|
255
|
+
}
|
|
256
|
+
catch (e) {
|
|
257
|
+
reject(e);
|
|
258
|
+
} }
|
|
259
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
260
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
function __generator(thisArg, body) {
|
|
264
|
+
var _ = { label: 0, sent: function () { if (t[0] & 1)
|
|
265
|
+
throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
266
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g;
|
|
267
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
268
|
+
function step(op) {
|
|
269
|
+
if (f)
|
|
270
|
+
throw new TypeError("Generator is already executing.");
|
|
271
|
+
while (_)
|
|
272
|
+
try {
|
|
273
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
|
|
274
|
+
return t;
|
|
275
|
+
if (y = 0, t)
|
|
276
|
+
op = [op[0] & 2, t.value];
|
|
277
|
+
switch (op[0]) {
|
|
278
|
+
case 0:
|
|
279
|
+
case 1:
|
|
280
|
+
t = op;
|
|
281
|
+
break;
|
|
282
|
+
case 4:
|
|
283
|
+
_.label++;
|
|
284
|
+
return { value: op[1], done: false };
|
|
285
|
+
case 5:
|
|
286
|
+
_.label++;
|
|
287
|
+
y = op[1];
|
|
288
|
+
op = [0];
|
|
289
|
+
continue;
|
|
290
|
+
case 7:
|
|
291
|
+
op = _.ops.pop();
|
|
292
|
+
_.trys.pop();
|
|
293
|
+
continue;
|
|
294
|
+
default:
|
|
295
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
296
|
+
_ = 0;
|
|
297
|
+
continue;
|
|
298
|
+
}
|
|
299
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {
|
|
300
|
+
_.label = op[1];
|
|
301
|
+
break;
|
|
302
|
+
}
|
|
303
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
304
|
+
_.label = t[1];
|
|
305
|
+
t = op;
|
|
306
|
+
break;
|
|
307
|
+
}
|
|
308
|
+
if (t && _.label < t[2]) {
|
|
309
|
+
_.label = t[2];
|
|
310
|
+
_.ops.push(op);
|
|
311
|
+
break;
|
|
312
|
+
}
|
|
313
|
+
if (t[2])
|
|
314
|
+
_.ops.pop();
|
|
315
|
+
_.trys.pop();
|
|
316
|
+
continue;
|
|
317
|
+
}
|
|
318
|
+
op = body.call(thisArg, _);
|
|
319
|
+
}
|
|
320
|
+
catch (e) {
|
|
321
|
+
op = [6, e];
|
|
322
|
+
y = 0;
|
|
323
|
+
}
|
|
324
|
+
finally {
|
|
325
|
+
f = t = 0;
|
|
326
|
+
}
|
|
327
|
+
if (op[0] & 5)
|
|
328
|
+
throw op[1];
|
|
329
|
+
return { value: op[0] ? op[1] : void 0, done: true };
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
var __createBinding = Object.create ? (function (o, m, k, k2) {
|
|
333
|
+
if (k2 === undefined)
|
|
334
|
+
k2 = k;
|
|
335
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; } });
|
|
336
|
+
}) : (function (o, m, k, k2) {
|
|
337
|
+
if (k2 === undefined)
|
|
338
|
+
k2 = k;
|
|
339
|
+
o[k2] = m[k];
|
|
340
|
+
});
|
|
341
|
+
function __exportStar(m, o) {
|
|
342
|
+
for (var p in m)
|
|
343
|
+
if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p))
|
|
344
|
+
__createBinding(o, m, p);
|
|
345
|
+
}
|
|
346
|
+
function __values(o) {
|
|
347
|
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
348
|
+
if (m)
|
|
349
|
+
return m.call(o);
|
|
350
|
+
if (o && typeof o.length === "number")
|
|
351
|
+
return {
|
|
352
|
+
next: function () {
|
|
353
|
+
if (o && i >= o.length)
|
|
354
|
+
o = void 0;
|
|
355
|
+
return { value: o && o[i++], done: !o };
|
|
356
|
+
}
|
|
357
|
+
};
|
|
358
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
359
|
+
}
|
|
360
|
+
function __read(o, n) {
|
|
361
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
362
|
+
if (!m)
|
|
363
|
+
return o;
|
|
364
|
+
var i = m.call(o), r, ar = [], e;
|
|
365
|
+
try {
|
|
366
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done)
|
|
367
|
+
ar.push(r.value);
|
|
368
|
+
}
|
|
369
|
+
catch (error) {
|
|
370
|
+
e = { error: error };
|
|
371
|
+
}
|
|
372
|
+
finally {
|
|
373
|
+
try {
|
|
374
|
+
if (r && !r.done && (m = i["return"]))
|
|
375
|
+
m.call(i);
|
|
376
|
+
}
|
|
377
|
+
finally {
|
|
378
|
+
if (e)
|
|
379
|
+
throw e.error;
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
return ar;
|
|
383
|
+
}
|
|
384
|
+
/** @deprecated */
|
|
385
|
+
function __spread() {
|
|
386
|
+
for (var ar = [], i = 0; i < arguments.length; i++)
|
|
387
|
+
ar = ar.concat(__read(arguments[i]));
|
|
388
|
+
return ar;
|
|
389
|
+
}
|
|
390
|
+
/** @deprecated */
|
|
391
|
+
function __spreadArrays() {
|
|
392
|
+
for (var s = 0, i = 0, il = arguments.length; i < il; i++)
|
|
393
|
+
s += arguments[i].length;
|
|
394
|
+
for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
|
395
|
+
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
|
396
|
+
r[k] = a[j];
|
|
397
|
+
return r;
|
|
398
|
+
}
|
|
399
|
+
function __spreadArray(to, from, pack) {
|
|
400
|
+
if (pack || arguments.length === 2)
|
|
401
|
+
for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
402
|
+
if (ar || !(i in from)) {
|
|
403
|
+
if (!ar)
|
|
404
|
+
ar = Array.prototype.slice.call(from, 0, i);
|
|
405
|
+
ar[i] = from[i];
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
409
|
+
}
|
|
410
|
+
function __await(v) {
|
|
411
|
+
return this instanceof __await ? (this.v = v, this) : new __await(v);
|
|
412
|
+
}
|
|
413
|
+
function __asyncGenerator(thisArg, _arguments, generator) {
|
|
414
|
+
if (!Symbol.asyncIterator)
|
|
415
|
+
throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
416
|
+
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
|
417
|
+
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
|
|
418
|
+
function verb(n) { if (g[n])
|
|
419
|
+
i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
|
|
420
|
+
function resume(n, v) { try {
|
|
421
|
+
step(g[n](v));
|
|
422
|
+
}
|
|
423
|
+
catch (e) {
|
|
424
|
+
settle(q[0][3], e);
|
|
425
|
+
} }
|
|
426
|
+
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
|
|
427
|
+
function fulfill(value) { resume("next", value); }
|
|
428
|
+
function reject(value) { resume("throw", value); }
|
|
429
|
+
function settle(f, v) { if (f(v), q.shift(), q.length)
|
|
430
|
+
resume(q[0][0], q[0][1]); }
|
|
431
|
+
}
|
|
432
|
+
function __asyncDelegator(o) {
|
|
433
|
+
var i, p;
|
|
434
|
+
return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
|
|
435
|
+
function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
|
|
436
|
+
}
|
|
437
|
+
function __asyncValues(o) {
|
|
438
|
+
if (!Symbol.asyncIterator)
|
|
439
|
+
throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
440
|
+
var m = o[Symbol.asyncIterator], i;
|
|
441
|
+
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
442
|
+
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
443
|
+
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function (v) { resolve({ value: v, done: d }); }, reject); }
|
|
444
|
+
}
|
|
445
|
+
function __makeTemplateObject(cooked, raw) {
|
|
446
|
+
if (Object.defineProperty) {
|
|
447
|
+
Object.defineProperty(cooked, "raw", { value: raw });
|
|
448
|
+
}
|
|
449
|
+
else {
|
|
450
|
+
cooked.raw = raw;
|
|
451
|
+
}
|
|
452
|
+
return cooked;
|
|
453
|
+
}
|
|
454
|
+
;
|
|
455
|
+
var __setModuleDefault = Object.create ? (function (o, v) {
|
|
456
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
457
|
+
}) : function (o, v) {
|
|
458
|
+
o["default"] = v;
|
|
459
|
+
};
|
|
460
|
+
function __importStar(mod) {
|
|
461
|
+
if (mod && mod.__esModule)
|
|
462
|
+
return mod;
|
|
463
|
+
var result = {};
|
|
464
|
+
if (mod != null)
|
|
465
|
+
for (var k in mod)
|
|
466
|
+
if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
|
|
467
|
+
__createBinding(result, mod, k);
|
|
468
|
+
__setModuleDefault(result, mod);
|
|
469
|
+
return result;
|
|
470
|
+
}
|
|
471
|
+
function __importDefault(mod) {
|
|
472
|
+
return (mod && mod.__esModule) ? mod : { default: mod };
|
|
473
|
+
}
|
|
474
|
+
function __classPrivateFieldGet(receiver, state, kind, f) {
|
|
475
|
+
if (kind === "a" && !f)
|
|
476
|
+
throw new TypeError("Private accessor was defined without a getter");
|
|
477
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
|
|
478
|
+
throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
479
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
480
|
+
}
|
|
481
|
+
function __classPrivateFieldSet(receiver, state, value, kind, f) {
|
|
482
|
+
if (kind === "m")
|
|
483
|
+
throw new TypeError("Private method is not writable");
|
|
484
|
+
if (kind === "a" && !f)
|
|
485
|
+
throw new TypeError("Private accessor was defined without a setter");
|
|
486
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
|
|
487
|
+
throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
488
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
458
489
|
}
|
|
459
490
|
|
|
460
|
-
var StringUtils = /** @class */ (function () {
|
|
461
|
-
function StringUtils() {
|
|
462
|
-
}
|
|
463
|
-
StringUtils.diff = function (s1, s2, p) {
|
|
464
|
-
if (p === void 0) { p = 4; }
|
|
465
|
-
if (!s1 && !s2) {
|
|
466
|
-
return '';
|
|
467
|
-
}
|
|
468
|
-
if (!s1) {
|
|
469
|
-
return '<span class="inserted">' + s2 + '</span>';
|
|
470
|
-
}
|
|
471
|
-
if (!s2) {
|
|
472
|
-
return '<span class="deleted">' + s1 + '</span>';
|
|
473
|
-
}
|
|
474
|
-
s1 = s1.toString();
|
|
475
|
-
s2 = s2.toString();
|
|
476
|
-
var changeData = StringUtils.getChanges(s1, s2, '', p);
|
|
477
|
-
var nextS = s2.slice(changeData.mtc.length + changeData.ins.length + changeData.sbs.length); // remaining part of "s"
|
|
478
|
-
var nextThis = s1.slice(changeData.mtc.length + changeData.del.length + changeData.sbs.length); // remaining part of "this"
|
|
479
|
-
var result = ''; // the glorious result
|
|
480
|
-
if (changeData.del.length > 0) {
|
|
481
|
-
changeData.del = '<span class="deleted">' + changeData.del + '</span>';
|
|
482
|
-
}
|
|
483
|
-
if (changeData.ins.length > 0) {
|
|
484
|
-
changeData.ins = '<span class="inserted">' + changeData.ins + '</span>';
|
|
485
|
-
}
|
|
486
|
-
result = changeData.mtc + changeData.del + changeData.ins + changeData.sbs;
|
|
487
|
-
result +=
|
|
488
|
-
nextThis !== '' || nextS !== ''
|
|
489
|
-
? StringUtils.diff(nextThis, nextS, p)
|
|
490
|
-
: '';
|
|
491
|
-
return result;
|
|
492
|
-
};
|
|
493
|
-
StringUtils.getMatchingSubstring = function (s, l, m) {
|
|
494
|
-
// returns the first matching substring in-between the two strings
|
|
495
|
-
var i = 0;
|
|
496
|
-
var match = false;
|
|
497
|
-
var slen = s.length;
|
|
498
|
-
var o = { fis: slen, mtc: m, sbs: '' }; // temporary object used to construct the cd (change data) object
|
|
499
|
-
while (i < slen) {
|
|
500
|
-
l[i] === s[i]
|
|
501
|
-
? match
|
|
502
|
-
? (o.sbs += s[i]) // o.sbs holds the matching substring itsef
|
|
503
|
-
: ((match = true), (o.fis = i), (o.sbs = s[i]))
|
|
504
|
-
: match
|
|
505
|
-
? (i = slen) // stop after the first found substring
|
|
506
|
-
: (i = i);
|
|
507
|
-
++i;
|
|
508
|
-
}
|
|
509
|
-
return o;
|
|
510
|
-
};
|
|
511
|
-
StringUtils.getChanges = function (s1, s2, m, p) {
|
|
512
|
-
var _a;
|
|
513
|
-
var isThisLonger = s1.length >= s1.length ? true : false;
|
|
514
|
-
var _b = __read(isThisLonger ? [s1, s2] : [s2, s1], 2), longer = _b[0], shorter = _b[1]; // assignment of longer and shorter by es6 destructuring
|
|
515
|
-
var bi = 0; // base index designating the index of first mismacthing character in both strings
|
|
516
|
-
while (shorter[bi] === longer[bi] && bi < shorter.length) {
|
|
517
|
-
++bi;
|
|
518
|
-
} // make bi the index of first mismatching character
|
|
519
|
-
longer = longer.split('').slice(bi); // as the longer string will be rotated it is converted into array
|
|
520
|
-
shorter = shorter.slice(bi); // shorter and longer now starts from the first mismatching character
|
|
521
|
-
var len = longer.length; // length of the longer string
|
|
522
|
-
var cd = {
|
|
523
|
-
fis: shorter.length,
|
|
524
|
-
fil: len,
|
|
525
|
-
sbs: '',
|
|
526
|
-
mtc: m + s2.slice(0, bi)
|
|
527
|
-
}; // if exists mtc holds the matching string at the front
|
|
528
|
-
var sub = { sbs: '' }; // returned substring per 1 character rotation of the longer string
|
|
529
|
-
if (shorter !== '') {
|
|
530
|
-
for (var rc = 0; rc < len && sub.sbs.length < p; rc++) {
|
|
531
|
-
// rc -> rotate count, p -> precision factor
|
|
532
|
-
sub = StringUtils.getMatchingSubstring(shorter, StringUtils.rotateArray(longer, rc), cd.mtc); // rotate longer string 1 char and get substring
|
|
533
|
-
sub.fil =
|
|
534
|
-
rc < len - sub.fis
|
|
535
|
-
? sub.fis + rc // mismatch is longer than the mismatch in short
|
|
536
|
-
: sub.fis - len + rc; // mismatch is shorter than the mismatch in short
|
|
537
|
-
if (sub.sbs.length > cd.sbs.length) {
|
|
538
|
-
cd = sub; // only keep the one with the longest substring.
|
|
539
|
-
}
|
|
540
|
-
}
|
|
541
|
-
}
|
|
542
|
-
// insert the mismatching delete subsrt and insert substr to the cd object and attach the previous substring
|
|
543
|
-
_a = __read(isThisLonger
|
|
544
|
-
? [longer.slice(0, cd.fil).join(''), shorter.slice(0, cd.fis)]
|
|
545
|
-
: [shorter.slice(0, cd.fis), longer.slice(0, cd.fil).join('')], 2), cd.del = _a[0], cd.ins = _a[1];
|
|
546
|
-
return cd.del.indexOf(' ') === -1 ||
|
|
547
|
-
cd.ins.indexOf(' ') === -1 ||
|
|
548
|
-
cd.del === '' ||
|
|
549
|
-
cd.ins === '' ||
|
|
550
|
-
cd.sbs === ''
|
|
551
|
-
? cd
|
|
552
|
-
: StringUtils.getChanges(cd.del, cd.ins, cd.mtc, p);
|
|
553
|
-
};
|
|
554
|
-
StringUtils.rotateArray = function (array, n) {
|
|
555
|
-
var len = array.length;
|
|
556
|
-
var res = new Array(array.length);
|
|
557
|
-
if (n % len === 0) {
|
|
558
|
-
return array.slice();
|
|
559
|
-
}
|
|
560
|
-
else {
|
|
561
|
-
for (var i = 0; i < len; i++) {
|
|
562
|
-
res[i] = array[(i + (len + (n % len))) % len];
|
|
563
|
-
}
|
|
564
|
-
}
|
|
565
|
-
return res;
|
|
566
|
-
};
|
|
567
|
-
return StringUtils;
|
|
491
|
+
var StringUtils = /** @class */ (function () {
|
|
492
|
+
function StringUtils() {
|
|
493
|
+
}
|
|
494
|
+
StringUtils.diff = function (s1, s2, p) {
|
|
495
|
+
if (p === void 0) { p = 4; }
|
|
496
|
+
if (!s1 && !s2) {
|
|
497
|
+
return '';
|
|
498
|
+
}
|
|
499
|
+
if (!s1) {
|
|
500
|
+
return '<span class="inserted">' + s2 + '</span>';
|
|
501
|
+
}
|
|
502
|
+
if (!s2) {
|
|
503
|
+
return '<span class="deleted">' + s1 + '</span>';
|
|
504
|
+
}
|
|
505
|
+
s1 = s1.toString();
|
|
506
|
+
s2 = s2.toString();
|
|
507
|
+
var changeData = StringUtils.getChanges(s1, s2, '', p);
|
|
508
|
+
var nextS = s2.slice(changeData.mtc.length + changeData.ins.length + changeData.sbs.length); // remaining part of "s"
|
|
509
|
+
var nextThis = s1.slice(changeData.mtc.length + changeData.del.length + changeData.sbs.length); // remaining part of "this"
|
|
510
|
+
var result = ''; // the glorious result
|
|
511
|
+
if (changeData.del.length > 0) {
|
|
512
|
+
changeData.del = '<span class="deleted">' + changeData.del + '</span>';
|
|
513
|
+
}
|
|
514
|
+
if (changeData.ins.length > 0) {
|
|
515
|
+
changeData.ins = '<span class="inserted">' + changeData.ins + '</span>';
|
|
516
|
+
}
|
|
517
|
+
result = changeData.mtc + changeData.del + changeData.ins + changeData.sbs;
|
|
518
|
+
result +=
|
|
519
|
+
nextThis !== '' || nextS !== ''
|
|
520
|
+
? StringUtils.diff(nextThis, nextS, p)
|
|
521
|
+
: '';
|
|
522
|
+
return result;
|
|
523
|
+
};
|
|
524
|
+
StringUtils.getMatchingSubstring = function (s, l, m) {
|
|
525
|
+
// returns the first matching substring in-between the two strings
|
|
526
|
+
var i = 0;
|
|
527
|
+
var match = false;
|
|
528
|
+
var slen = s.length;
|
|
529
|
+
var o = { fis: slen, mtc: m, sbs: '' }; // temporary object used to construct the cd (change data) object
|
|
530
|
+
while (i < slen) {
|
|
531
|
+
l[i] === s[i]
|
|
532
|
+
? match
|
|
533
|
+
? (o.sbs += s[i]) // o.sbs holds the matching substring itsef
|
|
534
|
+
: ((match = true), (o.fis = i), (o.sbs = s[i]))
|
|
535
|
+
: match
|
|
536
|
+
? (i = slen) // stop after the first found substring
|
|
537
|
+
: (i = i);
|
|
538
|
+
++i;
|
|
539
|
+
}
|
|
540
|
+
return o;
|
|
541
|
+
};
|
|
542
|
+
StringUtils.getChanges = function (s1, s2, m, p) {
|
|
543
|
+
var _a;
|
|
544
|
+
var isThisLonger = s1.length >= s1.length ? true : false;
|
|
545
|
+
var _b = __read(isThisLonger ? [s1, s2] : [s2, s1], 2), longer = _b[0], shorter = _b[1]; // assignment of longer and shorter by es6 destructuring
|
|
546
|
+
var bi = 0; // base index designating the index of first mismacthing character in both strings
|
|
547
|
+
while (shorter[bi] === longer[bi] && bi < shorter.length) {
|
|
548
|
+
++bi;
|
|
549
|
+
} // make bi the index of first mismatching character
|
|
550
|
+
longer = longer.split('').slice(bi); // as the longer string will be rotated it is converted into array
|
|
551
|
+
shorter = shorter.slice(bi); // shorter and longer now starts from the first mismatching character
|
|
552
|
+
var len = longer.length; // length of the longer string
|
|
553
|
+
var cd = {
|
|
554
|
+
fis: shorter.length,
|
|
555
|
+
fil: len,
|
|
556
|
+
sbs: '',
|
|
557
|
+
mtc: m + s2.slice(0, bi)
|
|
558
|
+
}; // if exists mtc holds the matching string at the front
|
|
559
|
+
var sub = { sbs: '' }; // returned substring per 1 character rotation of the longer string
|
|
560
|
+
if (shorter !== '') {
|
|
561
|
+
for (var rc = 0; rc < len && sub.sbs.length < p; rc++) {
|
|
562
|
+
// rc -> rotate count, p -> precision factor
|
|
563
|
+
sub = StringUtils.getMatchingSubstring(shorter, StringUtils.rotateArray(longer, rc), cd.mtc); // rotate longer string 1 char and get substring
|
|
564
|
+
sub.fil =
|
|
565
|
+
rc < len - sub.fis
|
|
566
|
+
? sub.fis + rc // mismatch is longer than the mismatch in short
|
|
567
|
+
: sub.fis - len + rc; // mismatch is shorter than the mismatch in short
|
|
568
|
+
if (sub.sbs.length > cd.sbs.length) {
|
|
569
|
+
cd = sub; // only keep the one with the longest substring.
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
// insert the mismatching delete subsrt and insert substr to the cd object and attach the previous substring
|
|
574
|
+
_a = __read(isThisLonger
|
|
575
|
+
? [longer.slice(0, cd.fil).join(''), shorter.slice(0, cd.fis)]
|
|
576
|
+
: [shorter.slice(0, cd.fis), longer.slice(0, cd.fil).join('')], 2), cd.del = _a[0], cd.ins = _a[1];
|
|
577
|
+
return cd.del.indexOf(' ') === -1 ||
|
|
578
|
+
cd.ins.indexOf(' ') === -1 ||
|
|
579
|
+
cd.del === '' ||
|
|
580
|
+
cd.ins === '' ||
|
|
581
|
+
cd.sbs === ''
|
|
582
|
+
? cd
|
|
583
|
+
: StringUtils.getChanges(cd.del, cd.ins, cd.mtc, p);
|
|
584
|
+
};
|
|
585
|
+
StringUtils.rotateArray = function (array, n) {
|
|
586
|
+
var len = array.length;
|
|
587
|
+
var res = new Array(array.length);
|
|
588
|
+
if (n % len === 0) {
|
|
589
|
+
return array.slice();
|
|
590
|
+
}
|
|
591
|
+
else {
|
|
592
|
+
for (var i = 0; i < len; i++) {
|
|
593
|
+
res[i] = array[(i + (len + (n % len))) % len];
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
return res;
|
|
597
|
+
};
|
|
598
|
+
return StringUtils;
|
|
568
599
|
}());
|
|
569
600
|
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
ChangeType["
|
|
573
|
-
ChangeType["
|
|
601
|
+
exports.ChangeType = void 0;
|
|
602
|
+
(function (ChangeType) {
|
|
603
|
+
ChangeType["ADDED"] = "added";
|
|
604
|
+
ChangeType["DELETED"] = "deleted";
|
|
605
|
+
ChangeType["MODIFIED"] = "modified";
|
|
574
606
|
})(exports.ChangeType || (exports.ChangeType = {}));
|
|
575
607
|
|
|
576
|
-
var ChangeUtils = /** @class */ (function () {
|
|
577
|
-
function ChangeUtils() {
|
|
578
|
-
}
|
|
579
|
-
ChangeUtils.findChanges = function (obj1, obj2, ignoreKeys) {
|
|
580
|
-
var e_1, _a;
|
|
581
|
-
if (ignoreKeys === void 0) { ignoreKeys = []; }
|
|
582
|
-
var items = {
|
|
583
|
-
added: [],
|
|
584
|
-
deleted: [],
|
|
585
|
-
modified: []
|
|
586
|
-
};
|
|
587
|
-
if (!obj1 || !obj2) {
|
|
588
|
-
return items;
|
|
589
|
-
}
|
|
590
|
-
var obj1Clone =
|
|
591
|
-
var obj2Clone =
|
|
592
|
-
var _loop_1 = function (fromItem) {
|
|
593
|
-
var index = obj2Clone.findIndex(function (s) { return s.id === fromItem.id; });
|
|
594
|
-
if (index === -1) {
|
|
595
|
-
items.deleted.push({
|
|
596
|
-
change: { type: exports.ChangeType.DELETED },
|
|
597
|
-
value: fromItem
|
|
598
|
-
});
|
|
599
|
-
return "continue";
|
|
600
|
-
}
|
|
601
|
-
var toItem = obj2Clone.splice(index, 1)[0];
|
|
602
|
-
var fromItemClone = JSON.parse(JSON.stringify(fromItem));
|
|
603
|
-
var toItemClone = JSON.parse(JSON.stringify(toItem));
|
|
604
|
-
var keysChanged = ChangeUtils.compareObject(fromItemClone, toItemClone, undefined, ignoreKeys);
|
|
605
|
-
if (keysChanged.length) {
|
|
606
|
-
items.modified.push({
|
|
607
|
-
change: {
|
|
608
|
-
type: exports.ChangeType.MODIFIED,
|
|
609
|
-
keysChanged: keysChanged
|
|
610
|
-
},
|
|
611
|
-
value: fromItemClone,
|
|
612
|
-
oldValue: fromItem,
|
|
613
|
-
newValue: toItem
|
|
614
|
-
});
|
|
615
|
-
}
|
|
616
|
-
};
|
|
617
|
-
try {
|
|
618
|
-
for (var obj1Clone_1 = __values(obj1Clone), obj1Clone_1_1 = obj1Clone_1.next(); !obj1Clone_1_1.done; obj1Clone_1_1 = obj1Clone_1.next()) {
|
|
619
|
-
var fromItem = obj1Clone_1_1.value;
|
|
620
|
-
_loop_1(fromItem);
|
|
621
|
-
}
|
|
622
|
-
}
|
|
623
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
624
|
-
finally {
|
|
625
|
-
try {
|
|
626
|
-
if (obj1Clone_1_1 && !obj1Clone_1_1.done && (_a = obj1Clone_1.return)) _a.call(obj1Clone_1);
|
|
627
|
-
}
|
|
628
|
-
finally { if (e_1) throw e_1.error; }
|
|
629
|
-
}
|
|
630
|
-
items.added = obj2Clone.map(function (itemAdded) {
|
|
631
|
-
return {
|
|
632
|
-
change: { type: exports.ChangeType.ADDED },
|
|
633
|
-
value: itemAdded
|
|
634
|
-
};
|
|
635
|
-
});
|
|
636
|
-
return items;
|
|
637
|
-
};
|
|
638
|
-
ChangeUtils.compareObject = function (fromItem, toItem, baseKey, ignoreKeys) {
|
|
639
|
-
var _this = this;
|
|
640
|
-
if (ignoreKeys === void 0) { ignoreKeys = []; }
|
|
641
|
-
var fromItemClone = JSON.parse(JSON.stringify(fromItem));
|
|
642
|
-
var toItemClone = JSON.parse(JSON.stringify(toItem));
|
|
643
|
-
var keys = new Set(
|
|
644
|
-
var keysChanged = [];
|
|
645
|
-
keys.forEach(function (key) {
|
|
646
|
-
var keyString = baseKey ? baseKey + "." + key : key;
|
|
647
|
-
if (ignoreKeys.indexOf(keyString) !== -1) {
|
|
648
|
-
return;
|
|
649
|
-
}
|
|
650
|
-
if (Array.isArray(fromItem[key])) {
|
|
651
|
-
fromItem[key] = fromItem[key].join(',<br>');
|
|
652
|
-
}
|
|
653
|
-
if (Array.isArray(toItem[key])) {
|
|
654
|
-
toItem[key] = toItem[key].join(',<br>');
|
|
655
|
-
}
|
|
656
|
-
if (typeof fromItem[key] === 'object' &&
|
|
657
|
-
typeof toItem[key] === 'object' &&
|
|
658
|
-
fromItem[key] !== null &&
|
|
659
|
-
toItem[key] !== null) {
|
|
660
|
-
keysChanged = keysChanged.concat(_this.compareObject(fromItem[key], toItem[key], keyString));
|
|
661
|
-
}
|
|
662
|
-
else {
|
|
663
|
-
if (fromItem[key] !== toItem[key]) {
|
|
664
|
-
keysChanged.push({
|
|
665
|
-
key: keyString,
|
|
666
|
-
oldValue: fromItemClone[key],
|
|
667
|
-
newValue: toItemClone[key]
|
|
668
|
-
});
|
|
669
|
-
fromItem[key] = StringUtils.diff(fromItem[key], toItem[key]);
|
|
670
|
-
}
|
|
671
|
-
}
|
|
672
|
-
});
|
|
673
|
-
return keysChanged;
|
|
674
|
-
};
|
|
675
|
-
return ChangeUtils;
|
|
608
|
+
var ChangeUtils = /** @class */ (function () {
|
|
609
|
+
function ChangeUtils() {
|
|
610
|
+
}
|
|
611
|
+
ChangeUtils.findChanges = function (obj1, obj2, ignoreKeys) {
|
|
612
|
+
var e_1, _a;
|
|
613
|
+
if (ignoreKeys === void 0) { ignoreKeys = []; }
|
|
614
|
+
var items = {
|
|
615
|
+
added: [],
|
|
616
|
+
deleted: [],
|
|
617
|
+
modified: []
|
|
618
|
+
};
|
|
619
|
+
if (!obj1 || !obj2) {
|
|
620
|
+
return items;
|
|
621
|
+
}
|
|
622
|
+
var obj1Clone = __spreadArray([], __read(obj1));
|
|
623
|
+
var obj2Clone = __spreadArray([], __read(obj2));
|
|
624
|
+
var _loop_1 = function (fromItem) {
|
|
625
|
+
var index = obj2Clone.findIndex(function (s) { return s.id === fromItem.id; });
|
|
626
|
+
if (index === -1) {
|
|
627
|
+
items.deleted.push({
|
|
628
|
+
change: { type: exports.ChangeType.DELETED },
|
|
629
|
+
value: fromItem
|
|
630
|
+
});
|
|
631
|
+
return "continue";
|
|
632
|
+
}
|
|
633
|
+
var toItem = obj2Clone.splice(index, 1)[0];
|
|
634
|
+
var fromItemClone = JSON.parse(JSON.stringify(fromItem));
|
|
635
|
+
var toItemClone = JSON.parse(JSON.stringify(toItem));
|
|
636
|
+
var keysChanged = ChangeUtils.compareObject(fromItemClone, toItemClone, undefined, ignoreKeys);
|
|
637
|
+
if (keysChanged.length) {
|
|
638
|
+
items.modified.push({
|
|
639
|
+
change: {
|
|
640
|
+
type: exports.ChangeType.MODIFIED,
|
|
641
|
+
keysChanged: keysChanged
|
|
642
|
+
},
|
|
643
|
+
value: fromItemClone,
|
|
644
|
+
oldValue: fromItem,
|
|
645
|
+
newValue: toItem
|
|
646
|
+
});
|
|
647
|
+
}
|
|
648
|
+
};
|
|
649
|
+
try {
|
|
650
|
+
for (var obj1Clone_1 = __values(obj1Clone), obj1Clone_1_1 = obj1Clone_1.next(); !obj1Clone_1_1.done; obj1Clone_1_1 = obj1Clone_1.next()) {
|
|
651
|
+
var fromItem = obj1Clone_1_1.value;
|
|
652
|
+
_loop_1(fromItem);
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
656
|
+
finally {
|
|
657
|
+
try {
|
|
658
|
+
if (obj1Clone_1_1 && !obj1Clone_1_1.done && (_a = obj1Clone_1.return)) _a.call(obj1Clone_1);
|
|
659
|
+
}
|
|
660
|
+
finally { if (e_1) throw e_1.error; }
|
|
661
|
+
}
|
|
662
|
+
items.added = obj2Clone.map(function (itemAdded) {
|
|
663
|
+
return {
|
|
664
|
+
change: { type: exports.ChangeType.ADDED },
|
|
665
|
+
value: itemAdded
|
|
666
|
+
};
|
|
667
|
+
});
|
|
668
|
+
return items;
|
|
669
|
+
};
|
|
670
|
+
ChangeUtils.compareObject = function (fromItem, toItem, baseKey, ignoreKeys) {
|
|
671
|
+
var _this = this;
|
|
672
|
+
if (ignoreKeys === void 0) { ignoreKeys = []; }
|
|
673
|
+
var fromItemClone = JSON.parse(JSON.stringify(fromItem));
|
|
674
|
+
var toItemClone = JSON.parse(JSON.stringify(toItem));
|
|
675
|
+
var keys = new Set(__spreadArray(__spreadArray([], __read(Object.keys(fromItem))), __read(Object.keys(toItem))));
|
|
676
|
+
var keysChanged = [];
|
|
677
|
+
keys.forEach(function (key) {
|
|
678
|
+
var keyString = baseKey ? baseKey + "." + key : key;
|
|
679
|
+
if (ignoreKeys.indexOf(keyString) !== -1) {
|
|
680
|
+
return;
|
|
681
|
+
}
|
|
682
|
+
if (Array.isArray(fromItem[key])) {
|
|
683
|
+
fromItem[key] = fromItem[key].join(',<br>');
|
|
684
|
+
}
|
|
685
|
+
if (Array.isArray(toItem[key])) {
|
|
686
|
+
toItem[key] = toItem[key].join(',<br>');
|
|
687
|
+
}
|
|
688
|
+
if (typeof fromItem[key] === 'object' &&
|
|
689
|
+
typeof toItem[key] === 'object' &&
|
|
690
|
+
fromItem[key] !== null &&
|
|
691
|
+
toItem[key] !== null) {
|
|
692
|
+
keysChanged = keysChanged.concat(_this.compareObject(fromItem[key], toItem[key], keyString));
|
|
693
|
+
}
|
|
694
|
+
else {
|
|
695
|
+
if (fromItem[key] !== toItem[key]) {
|
|
696
|
+
keysChanged.push({
|
|
697
|
+
key: keyString,
|
|
698
|
+
oldValue: fromItemClone[key],
|
|
699
|
+
newValue: toItemClone[key]
|
|
700
|
+
});
|
|
701
|
+
fromItem[key] = StringUtils.diff(fromItem[key], toItem[key]);
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
});
|
|
705
|
+
return keysChanged;
|
|
706
|
+
};
|
|
707
|
+
return ChangeUtils;
|
|
676
708
|
}());
|
|
677
709
|
|
|
678
|
-
/**
|
|
679
|
-
* Trigger download of a file
|
|
680
|
-
*
|
|
681
|
-
* @param content File content
|
|
682
|
-
* @param mimeType File mime type
|
|
683
|
-
* @param fileName File name
|
|
684
|
-
*/
|
|
685
|
-
function downloadContent(content, mimeType, fileName) {
|
|
686
|
-
var uri = "data:" + mimeType + "," + encodeURIComponent(content);
|
|
687
|
-
downloadFromUri(uri, fileName);
|
|
688
|
-
}
|
|
689
|
-
/**
|
|
690
|
-
* Trigger download of a file
|
|
691
|
-
*
|
|
692
|
-
* @param content File content
|
|
693
|
-
* @param mimeType File mime type
|
|
694
|
-
* @param fileName File name
|
|
695
|
-
*/
|
|
696
|
-
function downloadFromUri(uri, fileName) {
|
|
697
|
-
var element = document.createElement('a');
|
|
698
|
-
element.setAttribute('href', uri);
|
|
699
|
-
element.setAttribute('download', fileName);
|
|
700
|
-
element.style.display = 'none';
|
|
701
|
-
document.body.appendChild(element);
|
|
702
|
-
element.click();
|
|
703
|
-
document.body.removeChild(element);
|
|
710
|
+
/**
|
|
711
|
+
* Trigger download of a file
|
|
712
|
+
*
|
|
713
|
+
* @param content File content
|
|
714
|
+
* @param mimeType File mime type
|
|
715
|
+
* @param fileName File name
|
|
716
|
+
*/
|
|
717
|
+
function downloadContent(content, mimeType, fileName) {
|
|
718
|
+
var uri = "data:" + mimeType + "," + encodeURIComponent(content);
|
|
719
|
+
downloadFromUri(uri, fileName);
|
|
720
|
+
}
|
|
721
|
+
/**
|
|
722
|
+
* Trigger download of a file
|
|
723
|
+
*
|
|
724
|
+
* @param content File content
|
|
725
|
+
* @param mimeType File mime type
|
|
726
|
+
* @param fileName File name
|
|
727
|
+
*/
|
|
728
|
+
function downloadFromUri(uri, fileName) {
|
|
729
|
+
var element = document.createElement('a');
|
|
730
|
+
element.setAttribute('href', uri);
|
|
731
|
+
element.setAttribute('download', fileName);
|
|
732
|
+
element.style.display = 'none';
|
|
733
|
+
document.body.appendChild(element);
|
|
734
|
+
element.click();
|
|
735
|
+
document.body.removeChild(element);
|
|
704
736
|
}
|
|
705
737
|
|
|
706
|
-
var ObjectUtils = /** @class */ (function () {
|
|
707
|
-
function ObjectUtils() {
|
|
708
|
-
}
|
|
709
|
-
ObjectUtils.resolve = function (obj, key) {
|
|
710
|
-
var keysArray = key
|
|
711
|
-
.replace(/\[/g, '.')
|
|
712
|
-
.replace(/\]/g, '')
|
|
713
|
-
.split('.');
|
|
714
|
-
var current = obj;
|
|
715
|
-
while (keysArray.length) {
|
|
716
|
-
if (typeof current !== 'object') {
|
|
717
|
-
return undefined;
|
|
718
|
-
}
|
|
719
|
-
current = current[keysArray.shift()];
|
|
720
|
-
}
|
|
721
|
-
return current;
|
|
722
|
-
};
|
|
723
|
-
ObjectUtils.isObject = function (item) {
|
|
724
|
-
return (item &&
|
|
725
|
-
typeof item === 'object' &&
|
|
726
|
-
!Array.isArray(item) &&
|
|
727
|
-
item !== null &&
|
|
728
|
-
!(item instanceof Date));
|
|
729
|
-
};
|
|
730
|
-
ObjectUtils.mergeDeep = function (target, source, ignoreUndefined) {
|
|
731
|
-
if (ignoreUndefined === void 0) { ignoreUndefined = false; }
|
|
732
|
-
var output = Object.assign({}, target);
|
|
733
|
-
if (ObjectUtils.isObject(target) && ObjectUtils.isObject(source)) {
|
|
734
|
-
Object.keys(source)
|
|
735
|
-
.filter(function (key) { return !ignoreUndefined || source[key] !== undefined; })
|
|
736
|
-
.forEach(function (key) {
|
|
737
|
-
var _a, _b;
|
|
738
|
-
if (ObjectUtils.isObject(source[key])) {
|
|
739
|
-
if (!(key in target)) {
|
|
740
|
-
Object.assign(output, (_a = {}, _a[key] = source[key], _a));
|
|
741
|
-
}
|
|
742
|
-
else {
|
|
743
|
-
output[key] = ObjectUtils.mergeDeep(target[key], source[key], ignoreUndefined);
|
|
744
|
-
}
|
|
745
|
-
}
|
|
746
|
-
else {
|
|
747
|
-
Object.assign(output, (_b = {}, _b[key] = source[key], _b));
|
|
748
|
-
}
|
|
749
|
-
});
|
|
750
|
-
}
|
|
751
|
-
return output;
|
|
752
|
-
};
|
|
753
|
-
ObjectUtils.copyDeep = function (src) {
|
|
754
|
-
var target = Array.isArray(src) ? [] : {};
|
|
755
|
-
for (var prop in src) {
|
|
756
|
-
if (src.hasOwnProperty(prop)) {
|
|
757
|
-
var value = src[prop];
|
|
758
|
-
if (value && typeof value === 'object') {
|
|
759
|
-
target[prop] = this.copyDeep(value);
|
|
760
|
-
}
|
|
761
|
-
else {
|
|
762
|
-
target[prop] = value;
|
|
763
|
-
}
|
|
764
|
-
}
|
|
765
|
-
}
|
|
766
|
-
return target;
|
|
767
|
-
};
|
|
768
|
-
ObjectUtils.removeDuplicateCaseInsensitive = function (obj) {
|
|
769
|
-
var _a, _b;
|
|
770
|
-
var summaryCapitalizeObject = {};
|
|
771
|
-
var capitalizeObject = {};
|
|
772
|
-
var upperCaseCount = [];
|
|
773
|
-
for (var property in obj) {
|
|
774
|
-
if (obj.hasOwnProperty(property)) {
|
|
775
|
-
var upperCaseProperty = property.toUpperCase();
|
|
776
|
-
if (!summaryCapitalizeObject.hasOwnProperty(upperCaseProperty)) {
|
|
777
|
-
summaryCapitalizeObject[upperCaseProperty] = [
|
|
778
|
-
(_a = {}, _a[property] = obj[property], _a)
|
|
779
|
-
];
|
|
780
|
-
}
|
|
781
|
-
else {
|
|
782
|
-
summaryCapitalizeObject[upperCaseProperty].push((_b = {},
|
|
783
|
-
_b[property] = obj[property],
|
|
784
|
-
_b));
|
|
785
|
-
}
|
|
786
|
-
// counting the number of uppercase lettersMna
|
|
787
|
-
upperCaseCount.push({
|
|
788
|
-
key: property,
|
|
789
|
-
count: property.replace(/[^A-Z]/g, '').length
|
|
790
|
-
});
|
|
791
|
-
}
|
|
792
|
-
}
|
|
793
|
-
var _loop_1 = function (capitalizedProperty) {
|
|
794
|
-
if (summaryCapitalizeObject.hasOwnProperty(capitalizedProperty)) {
|
|
795
|
-
if (summaryCapitalizeObject.hasOwnProperty(capitalizedProperty)) {
|
|
796
|
-
var capitalizedPropertyObject = summaryCapitalizeObject[capitalizedProperty];
|
|
797
|
-
if (capitalizedPropertyObject.length === 1) {
|
|
798
|
-
// for single params (no duplicates)
|
|
799
|
-
var singlePossibility = capitalizedPropertyObject[0];
|
|
800
|
-
capitalizeObject[capitalizedProperty] =
|
|
801
|
-
singlePossibility[Object.keys(singlePossibility)[0]];
|
|
802
|
-
}
|
|
803
|
-
else if (capitalizedPropertyObject.length > 1) {
|
|
804
|
-
// defining the closest to lowercase property
|
|
805
|
-
var paramClosestToLowercase = upperCaseCount
|
|
806
|
-
.filter(function (f) { return f.key.toLowerCase() === capitalizedProperty.toLowerCase(); })
|
|
807
|
-
.reduce(function (prev, current) {
|
|
808
|
-
return prev.y < current.y ? prev : current;
|
|
809
|
-
});
|
|
810
|
-
capitalizeObject[paramClosestToLowercase.key.toUpperCase()] =
|
|
811
|
-
obj[paramClosestToLowercase.key];
|
|
812
|
-
}
|
|
813
|
-
}
|
|
814
|
-
}
|
|
815
|
-
};
|
|
816
|
-
for (var capitalizedProperty in summaryCapitalizeObject) {
|
|
817
|
-
_loop_1(capitalizedProperty);
|
|
818
|
-
}
|
|
819
|
-
for (var property in obj) {
|
|
820
|
-
if (obj.hasOwnProperty(property)) {
|
|
821
|
-
delete obj[property];
|
|
822
|
-
}
|
|
823
|
-
}
|
|
824
|
-
for (var property in capitalizeObject) {
|
|
825
|
-
if (capitalizeObject.hasOwnProperty(property)) {
|
|
826
|
-
obj[property] = capitalizeObject[property];
|
|
827
|
-
}
|
|
828
|
-
}
|
|
829
|
-
};
|
|
830
|
-
ObjectUtils.removeUndefined = function (obj) {
|
|
831
|
-
var output = {};
|
|
832
|
-
if (ObjectUtils.isObject(obj)) {
|
|
833
|
-
Object.keys(obj)
|
|
834
|
-
.filter(function (key) { return obj[key] !== undefined; })
|
|
835
|
-
.forEach(function (key) {
|
|
836
|
-
if (ObjectUtils.isObject(obj[key]) || Array.isArray(obj[key])) {
|
|
837
|
-
output[key] = ObjectUtils.removeUndefined(obj[key]);
|
|
838
|
-
}
|
|
839
|
-
else {
|
|
840
|
-
output[key] = obj[key];
|
|
841
|
-
}
|
|
842
|
-
});
|
|
843
|
-
return output;
|
|
844
|
-
}
|
|
845
|
-
if (Array.isArray(obj)) {
|
|
846
|
-
return obj.map(function (o) { return ObjectUtils.removeUndefined(o); });
|
|
847
|
-
}
|
|
848
|
-
return obj;
|
|
849
|
-
};
|
|
850
|
-
ObjectUtils.removeNull = function (obj) {
|
|
851
|
-
var output = {};
|
|
852
|
-
if (ObjectUtils.isObject(obj)) {
|
|
853
|
-
Object.keys(obj)
|
|
854
|
-
.filter(function (key) { return obj[key] !== null; })
|
|
855
|
-
.forEach(function (key) {
|
|
856
|
-
if (ObjectUtils.isObject(obj[key]) || Array.isArray(obj[key])) {
|
|
857
|
-
output[key] = ObjectUtils.removeNull(obj[key]);
|
|
858
|
-
}
|
|
859
|
-
else {
|
|
860
|
-
output[key] = obj[key];
|
|
861
|
-
}
|
|
862
|
-
});
|
|
863
|
-
return output;
|
|
864
|
-
}
|
|
865
|
-
if (Array.isArray(obj)) {
|
|
866
|
-
return obj.map(function (o) { return ObjectUtils.removeNull(o); });
|
|
867
|
-
}
|
|
868
|
-
return obj;
|
|
869
|
-
};
|
|
870
|
-
ObjectUtils.naturalCompare = function (a, b, direction, nullsFirst) {
|
|
871
|
-
if (direction === void 0) { direction = 'asc'; }
|
|
872
|
-
if (direction === 'desc') {
|
|
873
|
-
b = [a, (a = b)][0];
|
|
874
|
-
}
|
|
875
|
-
// nullsFirst = undefined : end if direction = 'asc', first if direction = 'desc'
|
|
876
|
-
// nullsFirst = true : always first
|
|
877
|
-
// nullsFirst = false : always end
|
|
878
|
-
if (a === null ||
|
|
879
|
-
a === '' ||
|
|
880
|
-
a === undefined ||
|
|
881
|
-
b === null ||
|
|
882
|
-
b === '' ||
|
|
883
|
-
b === undefined) {
|
|
884
|
-
var nullScore = a === b
|
|
885
|
-
? 0
|
|
886
|
-
: a === undefined
|
|
887
|
-
? 3
|
|
888
|
-
: b === undefined
|
|
889
|
-
? -3
|
|
890
|
-
: a === null
|
|
891
|
-
? 2
|
|
892
|
-
: b === null
|
|
893
|
-
? -2
|
|
894
|
-
: a === ''
|
|
895
|
-
? 1
|
|
896
|
-
: -1;
|
|
897
|
-
if (direction === 'desc') {
|
|
898
|
-
return nullsFirst !== false ? nullScore : nullScore * -1;
|
|
899
|
-
}
|
|
900
|
-
return nullsFirst === true ? nullScore * -1 : nullScore;
|
|
901
|
-
}
|
|
902
|
-
var ax = [];
|
|
903
|
-
var bx = [];
|
|
904
|
-
a = '' + a;
|
|
905
|
-
b = '' + b;
|
|
906
|
-
a.replace(/(\d+)|(\D+)/g, function (_, $1, $2) {
|
|
907
|
-
ax.push([$1 || Infinity, $2 || '']);
|
|
908
|
-
});
|
|
909
|
-
b.replace(/(\d+)|(\D+)/g, function (_, $1, $2) {
|
|
910
|
-
bx.push([$1 || Infinity, $2 || '']);
|
|
911
|
-
});
|
|
912
|
-
while (ax.length && bx.length) {
|
|
913
|
-
var an = ax.shift();
|
|
914
|
-
var bn = bx.shift();
|
|
915
|
-
var nn = an[0] - bn[0] || an[1].localeCompare(bn[1]);
|
|
916
|
-
if (nn) {
|
|
917
|
-
return nn;
|
|
918
|
-
}
|
|
919
|
-
}
|
|
920
|
-
return ax.length - bx.length;
|
|
921
|
-
};
|
|
922
|
-
/**
|
|
923
|
-
* Return true if two object are equivalent.
|
|
924
|
-
* Objects are considered equivalent if they have the same properties and
|
|
925
|
-
* if all of their properties (first-level only) share the same value.
|
|
926
|
-
* @param obj1 First object
|
|
927
|
-
* @param obj2 Second object
|
|
928
|
-
* @returns Whether two objects arer equivalent
|
|
929
|
-
*/
|
|
930
|
-
ObjectUtils.objectsAreEquivalent = function (obj1, obj2) {
|
|
931
|
-
var e_1, _a;
|
|
932
|
-
if (obj1 === obj2) {
|
|
933
|
-
return true;
|
|
934
|
-
}
|
|
935
|
-
var obj1Props = Object.getOwnPropertyNames(obj1);
|
|
936
|
-
var obj2Props = Object.getOwnPropertyNames(obj2);
|
|
937
|
-
if (obj1Props.length !== obj2Props.length) {
|
|
938
|
-
return false;
|
|
939
|
-
}
|
|
940
|
-
try {
|
|
941
|
-
for (var obj1Props_1 = __values(obj1Props), obj1Props_1_1 = obj1Props_1.next(); !obj1Props_1_1.done; obj1Props_1_1 = obj1Props_1.next()) {
|
|
942
|
-
var prop = obj1Props_1_1.value;
|
|
943
|
-
if (obj1[prop] !== obj2[prop]) {
|
|
944
|
-
return false;
|
|
945
|
-
}
|
|
946
|
-
}
|
|
947
|
-
}
|
|
948
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
949
|
-
finally {
|
|
950
|
-
try {
|
|
951
|
-
if (obj1Props_1_1 && !obj1Props_1_1.done && (_a = obj1Props_1.return)) _a.call(obj1Props_1);
|
|
952
|
-
}
|
|
953
|
-
finally { if (e_1) throw e_1.error; }
|
|
954
|
-
}
|
|
955
|
-
return true;
|
|
956
|
-
};
|
|
957
|
-
/**
|
|
958
|
-
* Return a new object with an array of keys removed
|
|
959
|
-
* @param obj Source object
|
|
960
|
-
* @param keys Keys to remove
|
|
961
|
-
* @returns A new object
|
|
962
|
-
*/
|
|
963
|
-
ObjectUtils.removeKeys = function (obj, keys) {
|
|
964
|
-
var newObj = Object.keys(obj)
|
|
965
|
-
.filter(function (key) { return keys.indexOf(key) < 0; })
|
|
966
|
-
.reduce(function (_obj, key) {
|
|
967
|
-
_obj[key] = obj[key];
|
|
968
|
-
return _obj;
|
|
969
|
-
}, {});
|
|
970
|
-
return newObj;
|
|
971
|
-
};
|
|
972
|
-
return ObjectUtils;
|
|
738
|
+
var ObjectUtils = /** @class */ (function () {
|
|
739
|
+
function ObjectUtils() {
|
|
740
|
+
}
|
|
741
|
+
ObjectUtils.resolve = function (obj, key) {
|
|
742
|
+
var keysArray = key
|
|
743
|
+
.replace(/\[/g, '.')
|
|
744
|
+
.replace(/\]/g, '')
|
|
745
|
+
.split('.');
|
|
746
|
+
var current = obj;
|
|
747
|
+
while (keysArray.length) {
|
|
748
|
+
if (typeof current !== 'object') {
|
|
749
|
+
return undefined;
|
|
750
|
+
}
|
|
751
|
+
current = current[keysArray.shift()];
|
|
752
|
+
}
|
|
753
|
+
return current;
|
|
754
|
+
};
|
|
755
|
+
ObjectUtils.isObject = function (item) {
|
|
756
|
+
return (item &&
|
|
757
|
+
typeof item === 'object' &&
|
|
758
|
+
!Array.isArray(item) &&
|
|
759
|
+
item !== null &&
|
|
760
|
+
!(item instanceof Date));
|
|
761
|
+
};
|
|
762
|
+
ObjectUtils.mergeDeep = function (target, source, ignoreUndefined) {
|
|
763
|
+
if (ignoreUndefined === void 0) { ignoreUndefined = false; }
|
|
764
|
+
var output = Object.assign({}, target);
|
|
765
|
+
if (ObjectUtils.isObject(target) && ObjectUtils.isObject(source)) {
|
|
766
|
+
Object.keys(source)
|
|
767
|
+
.filter(function (key) { return !ignoreUndefined || source[key] !== undefined; })
|
|
768
|
+
.forEach(function (key) {
|
|
769
|
+
var _a, _b;
|
|
770
|
+
if (ObjectUtils.isObject(source[key])) {
|
|
771
|
+
if (!(key in target)) {
|
|
772
|
+
Object.assign(output, (_a = {}, _a[key] = source[key], _a));
|
|
773
|
+
}
|
|
774
|
+
else {
|
|
775
|
+
output[key] = ObjectUtils.mergeDeep(target[key], source[key], ignoreUndefined);
|
|
776
|
+
}
|
|
777
|
+
}
|
|
778
|
+
else {
|
|
779
|
+
Object.assign(output, (_b = {}, _b[key] = source[key], _b));
|
|
780
|
+
}
|
|
781
|
+
});
|
|
782
|
+
}
|
|
783
|
+
return output;
|
|
784
|
+
};
|
|
785
|
+
ObjectUtils.copyDeep = function (src) {
|
|
786
|
+
var target = Array.isArray(src) ? [] : {};
|
|
787
|
+
for (var prop in src) {
|
|
788
|
+
if (src.hasOwnProperty(prop)) {
|
|
789
|
+
var value = src[prop];
|
|
790
|
+
if (value && typeof value === 'object') {
|
|
791
|
+
target[prop] = this.copyDeep(value);
|
|
792
|
+
}
|
|
793
|
+
else {
|
|
794
|
+
target[prop] = value;
|
|
795
|
+
}
|
|
796
|
+
}
|
|
797
|
+
}
|
|
798
|
+
return target;
|
|
799
|
+
};
|
|
800
|
+
ObjectUtils.removeDuplicateCaseInsensitive = function (obj) {
|
|
801
|
+
var _a, _b;
|
|
802
|
+
var summaryCapitalizeObject = {};
|
|
803
|
+
var capitalizeObject = {};
|
|
804
|
+
var upperCaseCount = [];
|
|
805
|
+
for (var property in obj) {
|
|
806
|
+
if (obj.hasOwnProperty(property)) {
|
|
807
|
+
var upperCaseProperty = property.toUpperCase();
|
|
808
|
+
if (!summaryCapitalizeObject.hasOwnProperty(upperCaseProperty)) {
|
|
809
|
+
summaryCapitalizeObject[upperCaseProperty] = [
|
|
810
|
+
(_a = {}, _a[property] = obj[property], _a)
|
|
811
|
+
];
|
|
812
|
+
}
|
|
813
|
+
else {
|
|
814
|
+
summaryCapitalizeObject[upperCaseProperty].push((_b = {},
|
|
815
|
+
_b[property] = obj[property],
|
|
816
|
+
_b));
|
|
817
|
+
}
|
|
818
|
+
// counting the number of uppercase lettersMna
|
|
819
|
+
upperCaseCount.push({
|
|
820
|
+
key: property,
|
|
821
|
+
count: property.replace(/[^A-Z]/g, '').length
|
|
822
|
+
});
|
|
823
|
+
}
|
|
824
|
+
}
|
|
825
|
+
var _loop_1 = function (capitalizedProperty) {
|
|
826
|
+
if (summaryCapitalizeObject.hasOwnProperty(capitalizedProperty)) {
|
|
827
|
+
if (summaryCapitalizeObject.hasOwnProperty(capitalizedProperty)) {
|
|
828
|
+
var capitalizedPropertyObject = summaryCapitalizeObject[capitalizedProperty];
|
|
829
|
+
if (capitalizedPropertyObject.length === 1) {
|
|
830
|
+
// for single params (no duplicates)
|
|
831
|
+
var singlePossibility = capitalizedPropertyObject[0];
|
|
832
|
+
capitalizeObject[capitalizedProperty] =
|
|
833
|
+
singlePossibility[Object.keys(singlePossibility)[0]];
|
|
834
|
+
}
|
|
835
|
+
else if (capitalizedPropertyObject.length > 1) {
|
|
836
|
+
// defining the closest to lowercase property
|
|
837
|
+
var paramClosestToLowercase = upperCaseCount
|
|
838
|
+
.filter(function (f) { return f.key.toLowerCase() === capitalizedProperty.toLowerCase(); })
|
|
839
|
+
.reduce(function (prev, current) {
|
|
840
|
+
return prev.y < current.y ? prev : current;
|
|
841
|
+
});
|
|
842
|
+
capitalizeObject[paramClosestToLowercase.key.toUpperCase()] =
|
|
843
|
+
obj[paramClosestToLowercase.key];
|
|
844
|
+
}
|
|
845
|
+
}
|
|
846
|
+
}
|
|
847
|
+
};
|
|
848
|
+
for (var capitalizedProperty in summaryCapitalizeObject) {
|
|
849
|
+
_loop_1(capitalizedProperty);
|
|
850
|
+
}
|
|
851
|
+
for (var property in obj) {
|
|
852
|
+
if (obj.hasOwnProperty(property)) {
|
|
853
|
+
delete obj[property];
|
|
854
|
+
}
|
|
855
|
+
}
|
|
856
|
+
for (var property in capitalizeObject) {
|
|
857
|
+
if (capitalizeObject.hasOwnProperty(property)) {
|
|
858
|
+
obj[property] = capitalizeObject[property];
|
|
859
|
+
}
|
|
860
|
+
}
|
|
861
|
+
};
|
|
862
|
+
ObjectUtils.removeUndefined = function (obj) {
|
|
863
|
+
var output = {};
|
|
864
|
+
if (ObjectUtils.isObject(obj)) {
|
|
865
|
+
Object.keys(obj)
|
|
866
|
+
.filter(function (key) { return obj[key] !== undefined; })
|
|
867
|
+
.forEach(function (key) {
|
|
868
|
+
if (ObjectUtils.isObject(obj[key]) || Array.isArray(obj[key])) {
|
|
869
|
+
output[key] = ObjectUtils.removeUndefined(obj[key]);
|
|
870
|
+
}
|
|
871
|
+
else {
|
|
872
|
+
output[key] = obj[key];
|
|
873
|
+
}
|
|
874
|
+
});
|
|
875
|
+
return output;
|
|
876
|
+
}
|
|
877
|
+
if (Array.isArray(obj)) {
|
|
878
|
+
return obj.map(function (o) { return ObjectUtils.removeUndefined(o); });
|
|
879
|
+
}
|
|
880
|
+
return obj;
|
|
881
|
+
};
|
|
882
|
+
ObjectUtils.removeNull = function (obj) {
|
|
883
|
+
var output = {};
|
|
884
|
+
if (ObjectUtils.isObject(obj)) {
|
|
885
|
+
Object.keys(obj)
|
|
886
|
+
.filter(function (key) { return obj[key] !== null; })
|
|
887
|
+
.forEach(function (key) {
|
|
888
|
+
if (ObjectUtils.isObject(obj[key]) || Array.isArray(obj[key])) {
|
|
889
|
+
output[key] = ObjectUtils.removeNull(obj[key]);
|
|
890
|
+
}
|
|
891
|
+
else {
|
|
892
|
+
output[key] = obj[key];
|
|
893
|
+
}
|
|
894
|
+
});
|
|
895
|
+
return output;
|
|
896
|
+
}
|
|
897
|
+
if (Array.isArray(obj)) {
|
|
898
|
+
return obj.map(function (o) { return ObjectUtils.removeNull(o); });
|
|
899
|
+
}
|
|
900
|
+
return obj;
|
|
901
|
+
};
|
|
902
|
+
ObjectUtils.naturalCompare = function (a, b, direction, nullsFirst) {
|
|
903
|
+
if (direction === void 0) { direction = 'asc'; }
|
|
904
|
+
if (direction === 'desc') {
|
|
905
|
+
b = [a, (a = b)][0];
|
|
906
|
+
}
|
|
907
|
+
// nullsFirst = undefined : end if direction = 'asc', first if direction = 'desc'
|
|
908
|
+
// nullsFirst = true : always first
|
|
909
|
+
// nullsFirst = false : always end
|
|
910
|
+
if (a === null ||
|
|
911
|
+
a === '' ||
|
|
912
|
+
a === undefined ||
|
|
913
|
+
b === null ||
|
|
914
|
+
b === '' ||
|
|
915
|
+
b === undefined) {
|
|
916
|
+
var nullScore = a === b
|
|
917
|
+
? 0
|
|
918
|
+
: a === undefined
|
|
919
|
+
? 3
|
|
920
|
+
: b === undefined
|
|
921
|
+
? -3
|
|
922
|
+
: a === null
|
|
923
|
+
? 2
|
|
924
|
+
: b === null
|
|
925
|
+
? -2
|
|
926
|
+
: a === ''
|
|
927
|
+
? 1
|
|
928
|
+
: -1;
|
|
929
|
+
if (direction === 'desc') {
|
|
930
|
+
return nullsFirst !== false ? nullScore : nullScore * -1;
|
|
931
|
+
}
|
|
932
|
+
return nullsFirst === true ? nullScore * -1 : nullScore;
|
|
933
|
+
}
|
|
934
|
+
var ax = [];
|
|
935
|
+
var bx = [];
|
|
936
|
+
a = '' + a;
|
|
937
|
+
b = '' + b;
|
|
938
|
+
a.replace(/(\d+)|(\D+)/g, function (_, $1, $2) {
|
|
939
|
+
ax.push([$1 || Infinity, $2 || '']);
|
|
940
|
+
});
|
|
941
|
+
b.replace(/(\d+)|(\D+)/g, function (_, $1, $2) {
|
|
942
|
+
bx.push([$1 || Infinity, $2 || '']);
|
|
943
|
+
});
|
|
944
|
+
while (ax.length && bx.length) {
|
|
945
|
+
var an = ax.shift();
|
|
946
|
+
var bn = bx.shift();
|
|
947
|
+
var nn = an[0] - bn[0] || an[1].localeCompare(bn[1]);
|
|
948
|
+
if (nn) {
|
|
949
|
+
return nn;
|
|
950
|
+
}
|
|
951
|
+
}
|
|
952
|
+
return ax.length - bx.length;
|
|
953
|
+
};
|
|
954
|
+
/**
|
|
955
|
+
* Return true if two object are equivalent.
|
|
956
|
+
* Objects are considered equivalent if they have the same properties and
|
|
957
|
+
* if all of their properties (first-level only) share the same value.
|
|
958
|
+
* @param obj1 First object
|
|
959
|
+
* @param obj2 Second object
|
|
960
|
+
* @returns Whether two objects arer equivalent
|
|
961
|
+
*/
|
|
962
|
+
ObjectUtils.objectsAreEquivalent = function (obj1, obj2) {
|
|
963
|
+
var e_1, _a;
|
|
964
|
+
if (obj1 === obj2) {
|
|
965
|
+
return true;
|
|
966
|
+
}
|
|
967
|
+
var obj1Props = Object.getOwnPropertyNames(obj1);
|
|
968
|
+
var obj2Props = Object.getOwnPropertyNames(obj2);
|
|
969
|
+
if (obj1Props.length !== obj2Props.length) {
|
|
970
|
+
return false;
|
|
971
|
+
}
|
|
972
|
+
try {
|
|
973
|
+
for (var obj1Props_1 = __values(obj1Props), obj1Props_1_1 = obj1Props_1.next(); !obj1Props_1_1.done; obj1Props_1_1 = obj1Props_1.next()) {
|
|
974
|
+
var prop = obj1Props_1_1.value;
|
|
975
|
+
if (obj1[prop] !== obj2[prop]) {
|
|
976
|
+
return false;
|
|
977
|
+
}
|
|
978
|
+
}
|
|
979
|
+
}
|
|
980
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
981
|
+
finally {
|
|
982
|
+
try {
|
|
983
|
+
if (obj1Props_1_1 && !obj1Props_1_1.done && (_a = obj1Props_1.return)) _a.call(obj1Props_1);
|
|
984
|
+
}
|
|
985
|
+
finally { if (e_1) throw e_1.error; }
|
|
986
|
+
}
|
|
987
|
+
return true;
|
|
988
|
+
};
|
|
989
|
+
/**
|
|
990
|
+
* Return a new object with an array of keys removed
|
|
991
|
+
* @param obj Source object
|
|
992
|
+
* @param keys Keys to remove
|
|
993
|
+
* @returns A new object
|
|
994
|
+
*/
|
|
995
|
+
ObjectUtils.removeKeys = function (obj, keys) {
|
|
996
|
+
var newObj = Object.keys(obj)
|
|
997
|
+
.filter(function (key) { return keys.indexOf(key) < 0; })
|
|
998
|
+
.reduce(function (_obj, key) {
|
|
999
|
+
_obj[key] = obj[key];
|
|
1000
|
+
return _obj;
|
|
1001
|
+
}, {});
|
|
1002
|
+
return newObj;
|
|
1003
|
+
};
|
|
1004
|
+
return ObjectUtils;
|
|
973
1005
|
}());
|
|
974
1006
|
|
|
975
|
-
/** Utility function to create a K:V from a list of strings */
|
|
976
|
-
function strEnum(o) {
|
|
977
|
-
return o.reduce(function (res, key) {
|
|
978
|
-
res[key] = key;
|
|
979
|
-
return res;
|
|
980
|
-
}, Object.create(null));
|
|
1007
|
+
/** Utility function to create a K:V from a list of strings */
|
|
1008
|
+
function strEnum(o) {
|
|
1009
|
+
return o.reduce(function (res, key) {
|
|
1010
|
+
res[key] = key;
|
|
1011
|
+
return res;
|
|
1012
|
+
}, Object.create(null));
|
|
981
1013
|
}
|
|
982
1014
|
|
|
983
|
-
function S4() {
|
|
984
|
-
// tslint:disable-next-line: no-bitwise
|
|
985
|
-
return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
|
|
986
|
-
}
|
|
987
|
-
function uuid() {
|
|
988
|
-
var id = "" + S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4();
|
|
989
|
-
return id.toLowerCase();
|
|
1015
|
+
function S4() {
|
|
1016
|
+
// tslint:disable-next-line: no-bitwise
|
|
1017
|
+
return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
|
|
1018
|
+
}
|
|
1019
|
+
function uuid() {
|
|
1020
|
+
var id = "" + S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4();
|
|
1021
|
+
return id.toLowerCase();
|
|
990
1022
|
}
|
|
991
1023
|
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
SubjectStatus[SubjectStatus["
|
|
995
|
-
SubjectStatus[SubjectStatus["
|
|
996
|
-
SubjectStatus[SubjectStatus["
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
this.
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
this
|
|
1017
|
-
this.
|
|
1018
|
-
|
|
1019
|
-
.
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
this.status
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1024
|
+
exports.SubjectStatus = void 0;
|
|
1025
|
+
(function (SubjectStatus) {
|
|
1026
|
+
SubjectStatus[SubjectStatus["Error"] = 0] = "Error";
|
|
1027
|
+
SubjectStatus[SubjectStatus["Done"] = 1] = "Done";
|
|
1028
|
+
SubjectStatus[SubjectStatus["Working"] = 2] = "Working";
|
|
1029
|
+
SubjectStatus[SubjectStatus["Waiting"] = 3] = "Waiting";
|
|
1030
|
+
})(exports.SubjectStatus || (exports.SubjectStatus = {}));
|
|
1031
|
+
var Watcher = /** @class */ (function () {
|
|
1032
|
+
function Watcher() {
|
|
1033
|
+
this.status$ = new rxjs.Subject();
|
|
1034
|
+
}
|
|
1035
|
+
Object.defineProperty(Watcher.prototype, "status", {
|
|
1036
|
+
get: function () {
|
|
1037
|
+
return this._status;
|
|
1038
|
+
},
|
|
1039
|
+
set: function (value) {
|
|
1040
|
+
this._status = value;
|
|
1041
|
+
this.status$.next(value);
|
|
1042
|
+
},
|
|
1043
|
+
enumerable: false,
|
|
1044
|
+
configurable: true
|
|
1045
|
+
});
|
|
1046
|
+
// tslint:disable-next-line:ban-types
|
|
1047
|
+
Watcher.prototype.subscribe = function (callback, scope) {
|
|
1048
|
+
var _this = this;
|
|
1049
|
+
this.watch();
|
|
1050
|
+
this.status$$ = this.status$
|
|
1051
|
+
.pipe(operators.distinctUntilChanged())
|
|
1052
|
+
.subscribe(function (status) {
|
|
1053
|
+
_this.handleStatusChange(status);
|
|
1054
|
+
callback.call(scope, _this);
|
|
1055
|
+
});
|
|
1056
|
+
};
|
|
1057
|
+
Watcher.prototype.unsubscribe = function () {
|
|
1058
|
+
this.unwatch();
|
|
1059
|
+
if (this.status$$ !== undefined) {
|
|
1060
|
+
this.status$$.unsubscribe();
|
|
1061
|
+
this.status$$ = undefined;
|
|
1062
|
+
}
|
|
1063
|
+
this.status = exports.SubjectStatus.Waiting;
|
|
1064
|
+
};
|
|
1065
|
+
Watcher.prototype.handleStatusChange = function (status) { };
|
|
1066
|
+
return Watcher;
|
|
1034
1067
|
}());
|
|
1035
1068
|
|
|
1036
|
-
/*
|
|
1037
|
-
* Public API Surface of utils
|
|
1069
|
+
/*
|
|
1070
|
+
* Public API Surface of utils
|
|
1038
1071
|
*/
|
|
1039
1072
|
|
|
1040
|
-
/**
|
|
1041
|
-
* Generated bundle index. Do not edit.
|
|
1073
|
+
/**
|
|
1074
|
+
* Generated bundle index. Do not edit.
|
|
1042
1075
|
*/
|
|
1043
1076
|
|
|
1044
1077
|
exports.Base64 = Base64;
|