necessary 12.1.3 → 12.2.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 +59 -9
- package/lib/browser.js +10 -2
- package/lib/main.js +7 -3
- package/lib/utilities/array.js +29 -29
- package/lib/utilities/string.js +74 -0
- package/package.json +1 -1
- package/src/browser.js +4 -2
- package/src/main.js +5 -2
- package/src/utilities/array.js +29 -29
- package/src/utilities/string.js +36 -0
package/README.md
CHANGED
|
@@ -22,6 +22,7 @@ These can be used both on Node and in the browser:
|
|
|
22
22
|
* [Path utilities](#path-utilities)
|
|
23
23
|
* [Array utilities](#array-utilities)
|
|
24
24
|
* [HTTP utilities](#http-utilities)
|
|
25
|
+
* [String utilities](#string-utilities)
|
|
25
26
|
* [Version utilities](#version-utilities)
|
|
26
27
|
* [Template utilities](#template-utilities)
|
|
27
28
|
* [Asynchronous utilities](#asynchronous-utilities)
|
|
@@ -648,10 +649,10 @@ pathWithoutTopmostDirectoryNameFromPath("root/etc/init.conf"); // returns 'etc/i
|
|
|
648
649
|
- `clear()`
|
|
649
650
|
- `copy()`
|
|
650
651
|
- `merge()`
|
|
651
|
-
- `
|
|
652
|
+
- `find()`
|
|
652
653
|
- `replace()`
|
|
654
|
+
- `splice()`
|
|
653
655
|
- `filter()`
|
|
654
|
-
- `find()`
|
|
655
656
|
- `prune()`
|
|
656
657
|
- `extract()`
|
|
657
658
|
- `patch()`
|
|
@@ -704,10 +705,10 @@ copy([1, 2, 3], [4, 5, 6, 7]); // the first array argument becomes [4, 5, 6, 7]
|
|
|
704
705
|
merge([1, 2, 3], [4, 5, 6, 7]); // the first array argument becomes [1, 2, 3, 4, 5, 6, 7]
|
|
705
706
|
```
|
|
706
707
|
|
|
707
|
-
* The `
|
|
708
|
+
* The `find()` function is like its native counterpart, however it returns an array of all the elements for which the callback function returns a truthy value, rather than just the first:
|
|
708
709
|
|
|
709
710
|
```
|
|
710
|
-
|
|
711
|
+
find([1, 2, -1, -2], (element, index) => (element > 0)); // returns [1, 2]
|
|
711
712
|
```
|
|
712
713
|
|
|
713
714
|
* The `replace()` function will replace an element in the array with the given element the first time that the callback function returns a truthy value:
|
|
@@ -716,16 +717,16 @@ splice([1, 2, 3], 1, 2, [4, 5]); // the first array argument becomes [1, 4, 5]
|
|
|
716
717
|
replace([1, 0, -2], 3, (element, index) => (element === 0)); // the array argument becomes [1, 3, -2]
|
|
717
718
|
```
|
|
718
719
|
|
|
719
|
-
* The `
|
|
720
|
+
* The `splice()` function works in a similar vein to its native counterpart, however it takes an array as the optional fourth argument rather than a series of elements from the fourth argument onwards. It mutates the first array argument and returns an array of the elements that have been deleted:
|
|
720
721
|
|
|
721
722
|
```
|
|
722
|
-
|
|
723
|
+
splice([1, 2, 3], 1, 2, [4, 5]); // the first array argument becomes [1, 4, 5]
|
|
723
724
|
```
|
|
724
725
|
|
|
725
|
-
* The `
|
|
726
|
+
* The `filter()` function is like its native counterpart, however it filters the first array argument *in place*. The second argument should be a callback function that will be invoked for each element of the array. If it does not return a truthy value, the corresponding element will be deleted. The deleted elements are returned.
|
|
726
727
|
|
|
727
728
|
```
|
|
728
|
-
|
|
729
|
+
filter([1, 2, -2], (element, index) => (element > 0)); // returns [-2] and the array argument becomes [1, 2]
|
|
729
730
|
```
|
|
730
731
|
|
|
731
732
|
* The `prune()` function is much like the `filter()` function, however it will terminate the first time that the callback function does not return a truthy value:
|
|
@@ -734,7 +735,7 @@ find([1, 2, -1, -2], (element, index) => (element > 0)); // returns [1, 2]
|
|
|
734
735
|
prune([1, 2, -1, -2], (element, index) => (element > 0)); // returns -1 and the array argument becomes [1, 2, -2]
|
|
735
736
|
```
|
|
736
737
|
|
|
737
|
-
* The `extract()` function is identical to the `
|
|
738
|
+
* The `extract()` function is identical to the `prune()` function, however the callback should return a truthy value in order to delete and return an element:
|
|
738
739
|
|
|
739
740
|
```
|
|
740
741
|
extract([1, 2, -1, -2], (element, index) => (element === 2)); // returns 2 and the array argument becomes [1, -1, -2]
|
|
@@ -856,6 +857,55 @@ urlFromHostURIAndQuery(host, uri, query); // returns "https://site.com/user?name
|
|
|
856
857
|
|
|
857
858
|
Ideally the `host` argument should not include a trailing forward slash whereas `uri` arguments should always start with a leading forward slash.
|
|
858
859
|
|
|
860
|
+
## String utilities
|
|
861
|
+
|
|
862
|
+
- `strcmp()`
|
|
863
|
+
- `strlen()`
|
|
864
|
+
- `substring()`
|
|
865
|
+
|
|
866
|
+
Substitute functions with support for Unicode. Specifically, characters in Unicode astral plains are counted twice in native functions. These functions fix this issue by converting strings to arrays and if necessary back again. Be warned that for this reason they are nowhere near as fast as their native counterparts.
|
|
867
|
+
|
|
868
|
+
* The `strcmp` function takes `stringA` and `stringB` arguments. It compares them character by character in order to find the lexicographically lesser of the two. Its return value is the difference between the code points of the first differing characters, with the code point of either string given as zero if it is empty. Some examples should clarify:
|
|
869
|
+
|
|
870
|
+
```
|
|
871
|
+
strcmp("", "") = 0;
|
|
872
|
+
|
|
873
|
+
strcmp("a", "") < 0;
|
|
874
|
+
|
|
875
|
+
strcmp("", "a") > 0;
|
|
876
|
+
|
|
877
|
+
strcmp("a", "a") = 0;
|
|
878
|
+
|
|
879
|
+
strcmp("ab", "a") < 0;
|
|
880
|
+
|
|
881
|
+
strcmp("ab", "ac") > 0;
|
|
882
|
+
|
|
883
|
+
strcmp("C", "𝔸") > 0;
|
|
884
|
+
```
|
|
885
|
+
|
|
886
|
+
Note that, conceptually speaking, the first argument is taken away from the second argument in order to compute the difference and not the other way around.
|
|
887
|
+
|
|
888
|
+
Note also that the double-struck `C` is in the basic multilingual plane and has code point `0x02102` whereas the double-struck `𝔸` is in an astral plane and has code point `0x1D538`, therefore their difference is positive.
|
|
889
|
+
|
|
890
|
+
* The `strlen()` function takes a single `string` argument. It works in much the same way as the `length` property of the `String` prototype, however it is Unicode safe:
|
|
891
|
+
|
|
892
|
+
```
|
|
893
|
+
"𝔸𝔹C".length = 5 // The 𝔹 and C characters are in an astral plane and count as two each.
|
|
894
|
+
|
|
895
|
+
strlen("𝔸𝔹C") = 3 // The string is converted to an array whose length is 3.
|
|
896
|
+
|
|
897
|
+
```
|
|
898
|
+
|
|
899
|
+
* The `substring()` function takes `string` and `start` arguments and an optional `end` argument. It works in much the same way as the `substring()` method of the `String` prototype, however it is Unicode safe:
|
|
900
|
+
|
|
901
|
+
```
|
|
902
|
+
"𝔸𝔹C".substring(3) = "C" // The 𝔹 character is in an astral plane and counts as two.
|
|
903
|
+
|
|
904
|
+
substring("𝔸𝔹C", 2) = "C" // Again the string is converted to an array and thus the third character is returned.
|
|
905
|
+
```
|
|
906
|
+
|
|
907
|
+
Note the native `substring()` method can be particularly egregious because the `start` and `end` arguments may result in only half of some characters being returned, so to speak.
|
|
908
|
+
|
|
859
909
|
## Version utilities
|
|
860
910
|
|
|
861
911
|
- `migrate()`
|
package/lib/browser.js
CHANGED
|
@@ -51,6 +51,12 @@ _export(exports, {
|
|
|
51
51
|
statusMessages: function() {
|
|
52
52
|
return _statusMessages.default;
|
|
53
53
|
},
|
|
54
|
+
stringUtilities: function() {
|
|
55
|
+
return _string.default;
|
|
56
|
+
},
|
|
57
|
+
templateUtilities: function() {
|
|
58
|
+
return _template.default;
|
|
59
|
+
},
|
|
54
60
|
versionUtilities: function() {
|
|
55
61
|
return _version.default;
|
|
56
62
|
}
|
|
@@ -64,16 +70,18 @@ var _characters = /*#__PURE__*/ _interop_require_default(require("./characters")
|
|
|
64
70
|
var _statusCodes = /*#__PURE__*/ _interop_require_default(require("./statusCodes"));
|
|
65
71
|
var _contentTypes = /*#__PURE__*/ _interop_require_default(require("./contentTypes"));
|
|
66
72
|
var _statusMessages = /*#__PURE__*/ _interop_require_default(require("./statusMessages"));
|
|
67
|
-
var _ajax = /*#__PURE__*/ _interop_require_default(require("./utilities/ajax"));
|
|
68
73
|
var _path = /*#__PURE__*/ _interop_require_default(require("./utilities/path"));
|
|
69
74
|
var _http = /*#__PURE__*/ _interop_require_default(require("./utilities/http"));
|
|
70
75
|
var _array = /*#__PURE__*/ _interop_require_default(require("./utilities/array"));
|
|
76
|
+
var _string = /*#__PURE__*/ _interop_require_default(require("./utilities/string"));
|
|
71
77
|
var _version = /*#__PURE__*/ _interop_require_default(require("./utilities/version"));
|
|
78
|
+
var _template = /*#__PURE__*/ _interop_require_default(require("./utilities/template"));
|
|
72
79
|
var _asynchronous = /*#__PURE__*/ _interop_require_default(require("./utilities/asynchronous"));
|
|
80
|
+
var _ajax = /*#__PURE__*/ _interop_require_default(require("./utilities/ajax"));
|
|
73
81
|
function _interop_require_default(obj) {
|
|
74
82
|
return obj && obj.__esModule ? obj : {
|
|
75
83
|
default: obj
|
|
76
84
|
};
|
|
77
85
|
}
|
|
78
86
|
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9icm93c2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIGxldmVscyB9IGZyb20gXCIuL2xldmVsc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtZXRob2RzIH0gZnJvbSBcIi4vbWV0aG9kc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBoZWFkZXJzIH0gZnJvbSBcIi4vaGVhZGVyc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBrZXlDb2RlcyB9IGZyb20gXCIuL2tleUNvZGVzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVuY29kaW5ncyB9IGZyb20gXCIuL2VuY29kaW5nc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjaGFyYWN0ZXJzIH0gZnJvbSBcIi4vY2hhcmFjdGVyc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdGF0dXNDb2RlcyB9IGZyb20gXCIuL3N0YXR1c0NvZGVzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNvbnRlbnRUeXBlcyB9IGZyb20gXCIuL2NvbnRlbnRUeXBlc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdGF0dXNNZXNzYWdlcyB9IGZyb20gXCIuL3N0YXR1c01lc3NhZ2VzXCI7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgcGF0aFV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9wYXRoXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGh0dHBVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvaHR0cFwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9hcnJheVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdHJpbmdVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHZlcnNpb25VdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvdmVyc2lvblwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB0ZW1wbGF0ZVV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy90ZW1wbGF0ZVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhc3luY2hyb25vdXNVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvYXN5bmNocm9ub3VzXCI7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgYWpheFV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9hamF4XCI7XG4iXSwibmFtZXMiOlsiYWpheFV0aWxpdGllcyIsImFycmF5VXRpbGl0aWVzIiwiYXN5bmNocm9ub3VzVXRpbGl0aWVzIiwiY2hhcmFjdGVycyIsImNvbnRlbnRUeXBlcyIsImVuY29kaW5ncyIsImhlYWRlcnMiLCJodHRwVXRpbGl0aWVzIiwia2V5Q29kZXMiLCJsZXZlbHMiLCJtZXRob2RzIiwicGF0aFV0aWxpdGllcyIsInN0YXR1c0NvZGVzIiwic3RhdHVzTWVzc2FnZXMiLCJzdHJpbmdVdGlsaXRpZXMiLCJ0ZW1wbGF0ZVV0aWxpdGllcyIsInZlcnNpb25VdGlsaXRpZXMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQW9Cb0JBLGFBQWE7ZUFBYkEsYUFBYTs7SUFOYkMsY0FBYztlQUFkQSxjQUFjOztJQUlkQyxxQkFBcUI7ZUFBckJBLHFCQUFxQjs7SUFYckJDLFVBQVU7ZUFBVkEsbUJBQVU7O0lBRVZDLFlBQVk7ZUFBWkEscUJBQVk7O0lBSFpDLFNBQVM7ZUFBVEEsa0JBQVM7O0lBRlRDLE9BQU87ZUFBUEEsZ0JBQU87O0lBU1BDLGFBQWE7ZUFBYkEsYUFBYTs7SUFSYkMsUUFBUTtlQUFSQSxpQkFBUTs7SUFIUkMsTUFBTTtlQUFOQSxlQUFNOztJQUNOQyxPQUFPO2VBQVBBLGdCQUFPOztJQVNQQyxhQUFhO2VBQWJBLGFBQWE7O0lBSmJDLFdBQVc7ZUFBWEEsb0JBQVc7O0lBRVhDLGNBQWM7ZUFBZEEsdUJBQWM7O0lBS2RDLGVBQWU7ZUFBZkEsZUFBZTs7SUFFZkMsaUJBQWlCO2VBQWpCQSxpQkFBaUI7O0lBRGpCQyxnQkFBZ0I7ZUFBaEJBLGdCQUFnQjs7OzZEQWRGOzhEQUNDOzhEQUNBOytEQUNDO2dFQUNDO2lFQUNDO2tFQUNDO21FQUNDO3FFQUNFOzJEQUVEOzJEQUNBOzREQUNDOzZEQUNDOzhEQUNDOytEQUNDO21FQUNJOzJEQUVSIn0=
|
package/lib/main.js
CHANGED
|
@@ -66,6 +66,9 @@ _export(exports, {
|
|
|
66
66
|
statusMessages: function() {
|
|
67
67
|
return _statusMessages.default;
|
|
68
68
|
},
|
|
69
|
+
stringUtilities: function() {
|
|
70
|
+
return _string.default;
|
|
71
|
+
},
|
|
69
72
|
templateUtilities: function() {
|
|
70
73
|
return _template.default;
|
|
71
74
|
},
|
|
@@ -85,13 +88,14 @@ var _statusMessages = /*#__PURE__*/ _interop_require_default(require("./statusMe
|
|
|
85
88
|
var _path = /*#__PURE__*/ _interop_require_default(require("./utilities/path"));
|
|
86
89
|
var _http = /*#__PURE__*/ _interop_require_default(require("./utilities/http"));
|
|
87
90
|
var _array = /*#__PURE__*/ _interop_require_default(require("./utilities/array"));
|
|
91
|
+
var _string = /*#__PURE__*/ _interop_require_default(require("./utilities/string"));
|
|
88
92
|
var _version = /*#__PURE__*/ _interop_require_default(require("./utilities/version"));
|
|
89
|
-
var
|
|
93
|
+
var _template = /*#__PURE__*/ _interop_require_default(require("./utilities/template"));
|
|
90
94
|
var _asynchronous = /*#__PURE__*/ _interop_require_default(require("./utilities/asynchronous"));
|
|
91
95
|
var _shell = /*#__PURE__*/ _interop_require_default(require("./utilities/shell"));
|
|
92
96
|
var _request = /*#__PURE__*/ _interop_require_default(require("./utilities/request"));
|
|
93
97
|
var _logging = /*#__PURE__*/ _interop_require_default(require("./utilities/logging"));
|
|
94
|
-
var
|
|
98
|
+
var _package = /*#__PURE__*/ _interop_require_default(require("./utilities/package"));
|
|
95
99
|
var _fileSystem = /*#__PURE__*/ _interop_require_default(require("./utilities/fileSystem"));
|
|
96
100
|
var _configuration = /*#__PURE__*/ _interop_require_default(require("./utilities/configuration"));
|
|
97
101
|
function _interop_require_default(obj) {
|
|
@@ -100,4 +104,4 @@ function _interop_require_default(obj) {
|
|
|
100
104
|
};
|
|
101
105
|
}
|
|
102
106
|
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIGxldmVscyB9IGZyb20gXCIuL2xldmVsc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtZXRob2RzIH0gZnJvbSBcIi4vbWV0aG9kc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBoZWFkZXJzIH0gZnJvbSBcIi4vaGVhZGVyc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBrZXlDb2RlcyB9IGZyb20gXCIuL2tleUNvZGVzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVuY29kaW5ncyB9IGZyb20gXCIuL2VuY29kaW5nc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjaGFyYWN0ZXJzIH0gZnJvbSBcIi4vY2hhcmFjdGVyc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdGF0dXNDb2RlcyB9IGZyb20gXCIuL3N0YXR1c0NvZGVzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNvbnRlbnRUeXBlcyB9IGZyb20gXCIuL2NvbnRlbnRUeXBlc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdGF0dXNNZXNzYWdlcyB9IGZyb20gXCIuL3N0YXR1c01lc3NhZ2VzXCI7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgcGF0aFV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9wYXRoXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGh0dHBVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvaHR0cFwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9hcnJheVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdHJpbmdVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHZlcnNpb25VdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvdmVyc2lvblwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB0ZW1wbGF0ZVV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy90ZW1wbGF0ZVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhc3luY2hyb25vdXNVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvYXN5bmNocm9ub3VzXCI7XG5cblxuXG5leHBvcnQgeyBkZWZhdWx0IGFzIHNoZWxsVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3NoZWxsXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHJlcXVlc3RVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvcmVxdWVzdFwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBsb2dnaW5nVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2xvZ2dpbmdcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcGFja2FnZVV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9wYWNrYWdlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZpbGVTeXN0ZW1VdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvZmlsZVN5c3RlbVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjb25maWd1cmF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2NvbmZpZ3VyYXRpb25cIjtcbiJdLCJuYW1lcyI6WyJhcnJheVV0aWxpdGllcyIsImFzeW5jaHJvbm91c1V0aWxpdGllcyIsImNoYXJhY3RlcnMiLCJjb25maWd1cmF0aW9uVXRpbGl0aWVzIiwiY29udGVudFR5cGVzIiwiZW5jb2RpbmdzIiwiZmlsZVN5c3RlbVV0aWxpdGllcyIsImhlYWRlcnMiLCJodHRwVXRpbGl0aWVzIiwia2V5Q29kZXMiLCJsZXZlbHMiLCJsb2dnaW5nVXRpbGl0aWVzIiwibWV0aG9kcyIsInBhY2thZ2VVdGlsaXRpZXMiLCJwYXRoVXRpbGl0aWVzIiwicmVxdWVzdFV0aWxpdGllcyIsInNoZWxsVXRpbGl0aWVzIiwic3RhdHVzQ29kZXMiLCJzdGF0dXNNZXNzYWdlcyIsInN0cmluZ1V0aWxpdGllcyIsInRlbXBsYXRlVXRpbGl0aWVzIiwidmVyc2lvblV0aWxpdGllcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBY29CQSxjQUFjO2VBQWRBLGNBQWM7O0lBSWRDLHFCQUFxQjtlQUFyQkEscUJBQXFCOztJQVhyQkMsVUFBVTtlQUFWQSxtQkFBVTs7SUFvQlZDLHNCQUFzQjtlQUF0QkEsc0JBQXNCOztJQWxCdEJDLFlBQVk7ZUFBWkEscUJBQVk7O0lBSFpDLFNBQVM7ZUFBVEEsa0JBQVM7O0lBb0JUQyxtQkFBbUI7ZUFBbkJBLG1CQUFtQjs7SUF0Qm5CQyxPQUFPO2VBQVBBLGdCQUFPOztJQVNQQyxhQUFhO2VBQWJBLGFBQWE7O0lBUmJDLFFBQVE7ZUFBUkEsaUJBQVE7O0lBSFJDLE1BQU07ZUFBTkEsZUFBTTs7SUFzQk5DLGdCQUFnQjtlQUFoQkEsZ0JBQWdCOztJQXJCaEJDLE9BQU87ZUFBUEEsZ0JBQU87O0lBc0JQQyxnQkFBZ0I7ZUFBaEJBLGdCQUFnQjs7SUFiaEJDLGFBQWE7ZUFBYkEsYUFBYTs7SUFXYkMsZ0JBQWdCO2VBQWhCQSxnQkFBZ0I7O0lBRGhCQyxjQUFjO2VBQWRBLGNBQWM7O0lBZGRDLFdBQVc7ZUFBWEEsb0JBQVc7O0lBRVhDLGNBQWM7ZUFBZEEsdUJBQWM7O0lBS2RDLGVBQWU7ZUFBZkEsZUFBZTs7SUFFZkMsaUJBQWlCO2VBQWpCQSxpQkFBaUI7O0lBRGpCQyxnQkFBZ0I7ZUFBaEJBLGdCQUFnQjs7OzZEQWRGOzhEQUNDOzhEQUNBOytEQUNDO2dFQUNDO2lFQUNDO2tFQUNDO21FQUNDO3FFQUNFOzJEQUVEOzJEQUNBOzREQUNDOzZEQUNDOzhEQUNDOytEQUNDO21FQUNJOzREQUlQOzhEQUNFOzhEQUNBOzhEQUNBO2lFQUNHO29FQUNHIn0=
|
package/lib/utilities/array.js
CHANGED
|
@@ -239,13 +239,15 @@ function copy(array1, array2) {
|
|
|
239
239
|
function merge(array1, array2) {
|
|
240
240
|
Array.prototype.push.apply(array1, array2);
|
|
241
241
|
}
|
|
242
|
-
function
|
|
243
|
-
var
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
242
|
+
function find(array, callback) {
|
|
243
|
+
var elements = [];
|
|
244
|
+
forwardsForEach(array, function(element, index) {
|
|
245
|
+
var passed = callback(element, index);
|
|
246
|
+
if (passed) {
|
|
247
|
+
elements.push(element);
|
|
248
|
+
}
|
|
249
|
+
});
|
|
250
|
+
return elements;
|
|
249
251
|
}
|
|
250
252
|
function replace(array, element, callback) {
|
|
251
253
|
var start;
|
|
@@ -262,50 +264,48 @@ function replace(array, element, callback) {
|
|
|
262
264
|
}
|
|
263
265
|
return found;
|
|
264
266
|
}
|
|
267
|
+
function splice(array1, start) {
|
|
268
|
+
var deleteCount = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : Infinity, array2 = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : [];
|
|
269
|
+
var args = [
|
|
270
|
+
start,
|
|
271
|
+
deleteCount
|
|
272
|
+
].concat(_to_consumable_array(array2)), deletedElements = Array.prototype.splice.apply(array1, args);
|
|
273
|
+
return deletedElements;
|
|
274
|
+
}
|
|
265
275
|
function filter(array, callback) {
|
|
266
|
-
var
|
|
276
|
+
var deletedElements = [];
|
|
267
277
|
backwardsForEach(array, function(element, index) {
|
|
268
278
|
var passed = callback(element, index);
|
|
269
279
|
if (!passed) {
|
|
270
280
|
var start = index, deleteCount = 1, deletedElements = array.splice(start, deleteCount), firstDeletedElement = first(deletedElements);
|
|
271
|
-
|
|
281
|
+
deletedElements.unshift(firstDeletedElement); ///
|
|
272
282
|
}
|
|
273
283
|
});
|
|
274
|
-
return
|
|
275
|
-
}
|
|
276
|
-
function find(array, callback) {
|
|
277
|
-
var elements = [];
|
|
278
|
-
forwardsForEach(array, function(element, index) {
|
|
279
|
-
var passed = callback(element, index);
|
|
280
|
-
if (passed) {
|
|
281
|
-
elements.push(element);
|
|
282
|
-
}
|
|
283
|
-
});
|
|
284
|
-
return elements;
|
|
284
|
+
return deletedElements;
|
|
285
285
|
}
|
|
286
286
|
function prune(array, callback) {
|
|
287
|
-
var
|
|
287
|
+
var deletedElement = undefined;
|
|
288
288
|
array.some(function(element, index) {
|
|
289
289
|
var passed = callback(element, index);
|
|
290
290
|
if (!passed) {
|
|
291
291
|
var start = index, deleteCount = 1, deletedElements = array.splice(start, deleteCount), firstDeletedElement = first(deletedElements);
|
|
292
|
-
|
|
292
|
+
deletedElement = firstDeletedElement; ///
|
|
293
293
|
return true;
|
|
294
294
|
}
|
|
295
295
|
});
|
|
296
|
-
return
|
|
296
|
+
return deletedElement;
|
|
297
297
|
}
|
|
298
298
|
function extract(array, callback) {
|
|
299
|
-
var
|
|
299
|
+
var deletedElement = undefined;
|
|
300
300
|
array.some(function(element, index) {
|
|
301
301
|
var passed = callback(element, index);
|
|
302
302
|
if (passed) {
|
|
303
303
|
var start = index, deleteCount = 1, deletedElements = array.splice(start, deleteCount), firstDeletedElement = first(deletedElements);
|
|
304
|
-
|
|
304
|
+
deletedElement = firstDeletedElement; ///
|
|
305
305
|
return true;
|
|
306
306
|
}
|
|
307
307
|
});
|
|
308
|
-
return
|
|
308
|
+
return deletedElement;
|
|
309
309
|
}
|
|
310
310
|
function patch(array, element, callback) {
|
|
311
311
|
var found = array.some(function(element, index) {
|
|
@@ -467,10 +467,10 @@ var _default = {
|
|
|
467
467
|
clear: clear,
|
|
468
468
|
copy: copy,
|
|
469
469
|
merge: merge,
|
|
470
|
-
|
|
470
|
+
find: find,
|
|
471
471
|
replace: replace,
|
|
472
|
+
splice: splice,
|
|
472
473
|
filter: filter,
|
|
473
|
-
find: find,
|
|
474
474
|
prune: prune,
|
|
475
475
|
extract: extract,
|
|
476
476
|
patch: patch,
|
|
@@ -490,4 +490,4 @@ var _default = {
|
|
|
490
490
|
backwardsForEach: backwardsForEach
|
|
491
491
|
};
|
|
492
492
|
|
|
493
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvYXJyYXkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXJzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbMF07fVxuXG5leHBvcnQgZnVuY3Rpb24gc2Vjb25kKGFycmF5KSB7IHJldHVybiBhcnJheVsxXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gdGhpcmQoYXJyYXkpIHsgcmV0dXJuIGFycmF5WzJdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3VydGgoYXJyYXkpIHsgcmV0dXJuIGFycmF5WzNdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWZ0aChhcnJheSkgeyByZXR1cm4gYXJyYXlbNF07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpZnRoTGFzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gNV07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvdXJ0aExhc3QoYXJyYXkpIHsgcmV0dXJuIGFycmF5W2FycmF5Lmxlbmd0aCAtIDRdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiB0aGlyZExhc3QoYXJyYXkpIHsgcmV0dXJuIGFycmF5W2FycmF5Lmxlbmd0aCAtIDNdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWNvbmRMYXN0KGFycmF5KSB7IHJldHVybiBhcnJheVthcnJheS5sZW5ndGggLSAyXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gZmlyc3RMYXN0KGFycmF5KSB7IHJldHVybiBhcnJheVthcnJheS5sZW5ndGggLSAxXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gbGFzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gMV07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGhlYWQoYXJyYXkpIHsgcmV0dXJuIGFycmF5LnNsaWNlKDAsIDEpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWlsKGFycmF5KSB7IHJldHVybiBhcnJheS5zbGljZSgxKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gYmFjayhhcnJheSkgeyByZXR1cm4gYXJyYXkuc2xpY2UoYXJyYXkubGVuZ3RoIC0gMSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb250KGFycmF5KSB7IHJldHVybiBhcnJheS5zbGljZSgwLCBNYXRoLm1heCgxLCBhcnJheS5sZW5ndGggLSAxKSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIHB1c2goYXJyYXkxLCBhcnJheTIpIHsgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoYXJyYXkxLCBhcnJheTIpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiB1bnNoaWZ0KGFycmF5MSwgYXJyYXkyKSB7IEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LmFwcGx5KGFycmF5MSwgYXJyYXkyKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gY29uY2F0KGFycmF5MSwgZWxlbWVudE9yQXJyYXkyKSB7XG4gIGNvbnN0IGFycmF5MiA9IChlbGVtZW50T3JBcnJheTIgaW5zdGFuY2VvZiBBcnJheSkgP1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50T3JBcnJheTIgOlxuICAgICAgICAgICAgICAgICAgICAgWyBlbGVtZW50T3JBcnJheTIgXTtcbiAgXG4gIHB1c2goYXJyYXkxLCBhcnJheTIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXIoYXJyYXkpIHtcbiAgY29uc3Qgc3RhcnQgPSAwO1xuICBcbiAgcmV0dXJuIGFycmF5LnNwbGljZShzdGFydCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb3B5KGFycmF5MSwgYXJyYXkyKSB7XG4gIGNvbnN0IHN0YXJ0ID0gMCxcbiAgICAgICAgZGVsZXRlQ291bnQgPSBhcnJheTIubGVuZ3RoOyAgLy8vXG4gIFxuICBzcGxpY2UoYXJyYXkxLCBzdGFydCwgZGVsZXRlQ291bnQsIGFycmF5Mik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZShhcnJheTEsIGFycmF5MikgeyBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShhcnJheTEsIGFycmF5Mik7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIHNwbGljZShhcnJheTEsIHN0YXJ0LCBkZWxldGVDb3VudCA9IEluZmluaXR5LCBhcnJheTIgPSBbXSkge1xuICBjb25zdCBhcmdzID0gW3N0YXJ0LCBkZWxldGVDb3VudCwgLi4uYXJyYXkyXSxcbiAgICAgICAgZGVsZXRlZEl0ZW1zQXJyYXkgPSBBcnJheS5wcm90b3R5cGUuc3BsaWNlLmFwcGx5KGFycmF5MSwgYXJncyk7XG5cbiAgcmV0dXJuIGRlbGV0ZWRJdGVtc0FycmF5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZShhcnJheSwgZWxlbWVudCwgY2FsbGJhY2spIHtcbiAgbGV0IHN0YXJ0O1xuICBcbiAgY29uc3QgZm91bmQgPSBhcnJheS5zb21lKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmIChwYXNzZWQpIHtcbiAgICAgIHN0YXJ0ID0gaW5kZXg7ICAvLy9cbiAgICAgIFxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcbiAgXG4gIGlmIChmb3VuZCkge1xuICAgIGNvbnN0IGRlbGV0ZUNvdW50ID0gMTtcblxuICAgIGFycmF5LnNwbGljZShzdGFydCwgZGVsZXRlQ291bnQsIGVsZW1lbnQpO1xuICB9XG5cbiAgcmV0dXJuIGZvdW5kO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBmaWx0ZXJlZEVsZW1lbnRzID0gW107XG4gIFxuICBiYWNrd2FyZHNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgY29uc3Qgc3RhcnQgPSBpbmRleCwgIC8vL1xuICAgICAgICAgICAgZGVsZXRlQ291bnQgPSAxLFxuICAgICAgICAgICAgZGVsZXRlZEVsZW1lbnRzID0gYXJyYXkuc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCksXG4gICAgICAgICAgICBmaXJzdERlbGV0ZWRFbGVtZW50ID0gZmlyc3QoZGVsZXRlZEVsZW1lbnRzKTtcbiAgICAgIFxuICAgICAgZmlsdGVyZWRFbGVtZW50cy51bnNoaWZ0KGZpcnN0RGVsZXRlZEVsZW1lbnQpOyAgLy8vXG4gICAgfVxuICB9KTtcbiAgXG4gIHJldHVybiBmaWx0ZXJlZEVsZW1lbnRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZChhcnJheSwgY2FsbGJhY2spIHtcbiAgY29uc3QgZWxlbWVudHMgPSBbXTtcblxuICBmb3J3YXJkc0ZvckVhY2goYXJyYXksIChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmIChwYXNzZWQpIHtcbiAgICAgIGVsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZWxlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcnVuZShhcnJheSwgY2FsbGJhY2spIHtcbiAgbGV0IHBydW5lZEVsZW1lbnQgPSB1bmRlZmluZWQ7XG4gIFxuICBhcnJheS5zb21lKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmICghcGFzc2VkKSB7XG4gICAgICBjb25zdCBzdGFydCA9IGluZGV4LCAgLy8vXG4gICAgICAgICAgICBkZWxldGVDb3VudCA9IDEsXG4gICAgICAgICAgICBkZWxldGVkRWxlbWVudHMgPSBhcnJheS5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50KSxcbiAgICAgICAgICAgIGZpcnN0RGVsZXRlZEVsZW1lbnQgPSBmaXJzdChkZWxldGVkRWxlbWVudHMpO1xuICAgICAgXG4gICAgICBwcnVuZWRFbGVtZW50ID0gZmlyc3REZWxldGVkRWxlbWVudDsgIC8vL1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuICBcbiAgcmV0dXJuIHBydW5lZEVsZW1lbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0KGFycmF5LCBjYWxsYmFjaykge1xuICBsZXQgZXh0cmFjdGVkRWxlbWVudCA9IHVuZGVmaW5lZDtcblxuICBhcnJheS5zb21lKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmIChwYXNzZWQpIHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gaW5kZXgsICAvLy9cbiAgICAgICAgICAgIGRlbGV0ZUNvdW50ID0gMSxcbiAgICAgICAgICAgIGRlbGV0ZWRFbGVtZW50cyA9IGFycmF5LnNwbGljZShzdGFydCwgZGVsZXRlQ291bnQpLFxuICAgICAgICAgICAgZmlyc3REZWxldGVkRWxlbWVudCA9IGZpcnN0KGRlbGV0ZWRFbGVtZW50cyk7XG5cbiAgICAgIGV4dHJhY3RlZEVsZW1lbnQgPSBmaXJzdERlbGV0ZWRFbGVtZW50OyAgLy8vXG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGV4dHJhY3RlZEVsZW1lbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRjaChhcnJheSwgZWxlbWVudCwgY2FsbGJhY2spIHtcbiAgY29uc3QgZm91bmQgPSBhcnJheS5zb21lKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmIChwYXNzZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cblxuICBpZiAoZm91bmQpIHtcbiAgICBhcnJheS5wdXNoKGVsZW1lbnQpO1xuICB9XG5cbiAgcmV0dXJuIGZvdW5kO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcHJlc3MoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGxldCBpbmRleDEgPSAwLFxuICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlIChpbmRleDEgPCBsZW5ndGgpIHtcbiAgICBjb25zdCBlbGVtZW50MSA9IGFycmF5W2luZGV4MV07XG5cbiAgICBmb3IgKGxldCBpbmRleDIgPSBsZW5ndGggLSAxOyBpbmRleDIgPiBpbmRleDE7IGluZGV4Mi0tKSB7XG4gICAgICBjb25zdCBlbGVtZW50MiA9IGFycmF5W2luZGV4Ml0sXG4gICAgICAgICAgICBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50MiwgZWxlbWVudDEpO1xuXG4gICAgICBpZiAocGFzc2VkKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gaW5kZXgyLCAvLy9cbiAgICAgICAgICAgICAgZGVsZXRlQ291bnQgPSAxO1xuXG4gICAgICAgIGFycmF5LnNwbGljZShzdGFydCwgZGVsZXRlQ291bnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGluZGV4MSsrO1xuXG4gICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5lKGFycmF5MSwgYXJyYXkyLCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheSA9IFtcbiAgICAuLi5hcnJheTEsXG4gICAgLi4uYXJyYXkyXG4gIF07XG5cbiAgY29tcHJlc3MoYXJyYXksIGNhbGxiYWNrKTtcblxuICByZXR1cm4gYXJyYXk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdWdtZW50KGFycmF5MSwgYXJyYXkyLCBjYWxsYmFjaykge1xuICBhcnJheTIuZm9yRWFjaCgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAocGFzc2VkKSB7XG4gICAgICBhcnJheTEucHVzaChlbGVtZW50KTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VwYXJhdGUoYXJyYXksIGFycmF5MSwgYXJyYXkyLCBjYWxsYmFjaykge1xuICBhcnJheS5mb3JFYWNoKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIHBhc3NlZCA/XG4gICAgICBhcnJheTEucHVzaChlbGVtZW50KSA6XG4gICAgICAgIGFycmF5Mi5wdXNoKGVsZW1lbnQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcndhcmRzRmluZChhcnJheSwgY2FsbGJhY2spIHtcbiAgY29uc3QgYXJyYXlMZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFycmF5TGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAocGFzc2VkKSB7XG4gICAgICByZXR1cm4gZWxlbWVudDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNGaW5kKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IGFycmF5TGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXgtLSkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgcGFzc2VkID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKHBhc3NlZCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNTb21lKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYXJyYXlMZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgIHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcbiAgICBcbiAgICBpZiAocGFzc2VkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNTb21lKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IGFycmF5TGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXgtLSkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgcGFzc2VkID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKHBhc3NlZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNFdmVyeShhcnJheSwgY2FsbGJhY2spIHtcbiAgY29uc3QgYXJyYXlMZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFycmF5TGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmFja3dhcmRzRXZlcnkoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gYXJyYXlMZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNSZWR1Y2UoYXJyYXksIGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpIHtcbiAgbGV0IHZhbHVlID0gaW5pdGlhbFZhbHVlOyAvLy9cblxuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYXJyYXlMZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgdmFsdWUgPSBjYWxsYmFjayh2YWx1ZSwgZWxlbWVudCwgaW5kZXgpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmFja3dhcmRzUmVkdWNlKGFycmF5LCBjYWxsYmFjaywgaW5pdGlhbFZhbHVlKSB7XG4gIGxldCB2YWx1ZSA9IGluaXRpYWxWYWx1ZTsgLy8vXG5cbiAgY29uc3QgYXJyYXlMZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSBhcnJheUxlbmd0aCAtIDE7IGluZGV4ID49IDA7IGluZGV4LS0pIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgdmFsdWUgPSBjYWxsYmFjayh2YWx1ZSwgZWxlbWVudCwgaW5kZXgpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNGb3JFYWNoKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYXJyYXlMZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNGb3JFYWNoKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IGFycmF5TGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXgtLSkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBmaXJzdCxcbiAgc2Vjb25kLFxuICB0aGlyZCxcbiAgZm91cnRoLFxuICBmaWZ0aCxcbiAgZmlmdGhMYXN0LFxuICBmb3VydGhMYXN0LFxuICB0aGlyZExhc3QsXG4gIHNlY29uZExhc3QsXG4gIGZpcnN0TGFzdCxcbiAgbGFzdCxcbiAgaGVhZCxcbiAgdGFpbCxcbiAgYmFjayxcbiAgZnJvbnQsXG4gIHB1c2gsXG4gIHVuc2hpZnQsXG4gIGNvbmNhdCxcbiAgY2xlYXIsXG4gIGNvcHksXG4gIG1lcmdlLFxuICBzcGxpY2UsXG4gIHJlcGxhY2UsXG4gIGZpbHRlcixcbiAgZmluZCxcbiAgcHJ1bmUsXG4gIGV4dHJhY3QsXG4gIHBhdGNoLFxuICBjb21wcmVzcyxcbiAgY29tYmluZSxcbiAgYXVnbWVudCxcbiAgc2VwYXJhdGUsXG4gIGZvcndhcmRzRmluZCxcbiAgYmFja3dhcmRzRmluZCxcbiAgZm9yd2FyZHNTb21lLFxuICBiYWNrd2FyZHNTb21lLFxuICBmb3J3YXJkc0V2ZXJ5LFxuICBiYWNrd2FyZHNFdmVyeSxcbiAgZm9yd2FyZHNSZWR1Y2UsXG4gIGJhY2t3YXJkc1JlZHVjZSxcbiAgZm9yd2FyZHNGb3JFYWNoLFxuICBiYWNrd2FyZHNGb3JFYWNoXG59O1xuIl0sIm5hbWVzIjpbImF1Z21lbnQiLCJiYWNrIiwiYmFja3dhcmRzRXZlcnkiLCJiYWNrd2FyZHNGaW5kIiwiYmFja3dhcmRzRm9yRWFjaCIsImJhY2t3YXJkc1JlZHVjZSIsImJhY2t3YXJkc1NvbWUiLCJjbGVhciIsImNvbWJpbmUiLCJjb21wcmVzcyIsImNvbmNhdCIsImNvcHkiLCJleHRyYWN0IiwiZmlmdGgiLCJmaWZ0aExhc3QiLCJmaWx0ZXIiLCJmaW5kIiwiZmlyc3QiLCJmaXJzdExhc3QiLCJmb3J3YXJkc0V2ZXJ5IiwiZm9yd2FyZHNGaW5kIiwiZm9yd2FyZHNGb3JFYWNoIiwiZm9yd2FyZHNSZWR1Y2UiLCJmb3J3YXJkc1NvbWUiLCJmb3VydGgiLCJmb3VydGhMYXN0IiwiZnJvbnQiLCJoZWFkIiwibGFzdCIsIm1lcmdlIiwicGF0Y2giLCJwcnVuZSIsInB1c2giLCJyZXBsYWNlIiwic2Vjb25kIiwic2Vjb25kTGFzdCIsInNlcGFyYXRlIiwic3BsaWNlIiwidGFpbCIsInRoaXJkIiwidGhpcmRMYXN0IiwidW5zaGlmdCIsImFycmF5IiwibGVuZ3RoIiwic2xpY2UiLCJNYXRoIiwibWF4IiwiYXJyYXkxIiwiYXJyYXkyIiwiQXJyYXkiLCJwcm90b3R5cGUiLCJhcHBseSIsImVsZW1lbnRPckFycmF5MiIsInN0YXJ0IiwiZGVsZXRlQ291bnQiLCJJbmZpbml0eSIsImFyZ3MiLCJkZWxldGVkSXRlbXNBcnJheSIsImVsZW1lbnQiLCJjYWxsYmFjayIsImZvdW5kIiwic29tZSIsImluZGV4IiwicGFzc2VkIiwiZmlsdGVyZWRFbGVtZW50cyIsImRlbGV0ZWRFbGVtZW50cyIsImZpcnN0RGVsZXRlZEVsZW1lbnQiLCJlbGVtZW50cyIsInBydW5lZEVsZW1lbnQiLCJ1bmRlZmluZWQiLCJleHRyYWN0ZWRFbGVtZW50IiwiaW5kZXgxIiwiZWxlbWVudDEiLCJpbmRleDIiLCJlbGVtZW50MiIsImZvckVhY2giLCJhcnJheUxlbmd0aCIsImluaXRpYWxWYWx1ZSIsInZhbHVlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUF3TmdCQSxPQUFPO2VBQVBBOztJQTVMQUMsSUFBSTtlQUFKQTs7SUEyUkFDLGNBQWM7ZUFBZEE7O0lBNURBQyxhQUFhO2VBQWJBOztJQWlIQUMsZ0JBQWdCO2VBQWhCQTs7SUF4QkFDLGVBQWU7ZUFBZkE7O0lBM0RBQyxhQUFhO2VBQWJBOztJQTdPQUMsS0FBSztlQUFMQTs7SUFpS0FDLE9BQU87ZUFBUEE7O0lBekJBQyxRQUFRO2VBQVJBOztJQWhKQUMsTUFBTTtlQUFOQTs7SUFjQUMsSUFBSTtlQUFKQTs7SUFvVWhCLE9BMkNFO2VBM0NGOztJQXhPZ0JDLE9BQU87ZUFBUEE7O0lBcElBQyxLQUFLO2VBQUxBOztJQUVBQyxTQUFTO2VBQVRBOztJQTRFQUMsTUFBTTtlQUFOQTs7SUFtQkFDLElBQUk7ZUFBSkE7O0lBekdBQyxLQUFLO2VBQUxBOztJQWtCQUMsU0FBUztlQUFUQTs7SUFvUkFDLGFBQWE7ZUFBYkE7O0lBNURBQyxZQUFZO2VBQVpBOztJQXNIQUMsZUFBZTtlQUFmQTs7SUE1QkFDLGNBQWM7ZUFBZEE7O0lBNURBQyxZQUFZO2VBQVpBOztJQWxRQUMsTUFBTTtlQUFOQTs7SUFNQUMsVUFBVTtlQUFWQTs7SUFnQkFDLEtBQUs7ZUFBTEE7O0lBTkFDLElBQUk7ZUFBSkE7O0lBRkFDLElBQUk7ZUFBSkE7O0lBbUNBQyxLQUFLO2VBQUxBOztJQTBHQUMsS0FBSztlQUFMQTs7SUExQ0FDLEtBQUs7ZUFBTEE7O0lBekZBQyxJQUFJO2VBQUpBOztJQWtDQUMsT0FBTztlQUFQQTs7SUE5REFDLE1BQU07ZUFBTkE7O0lBY0FDLFVBQVU7ZUFBVkE7O0lBZ05BQyxRQUFRO2VBQVJBOztJQXZLQUMsTUFBTTtlQUFOQTs7SUFqQ0FDLElBQUk7ZUFBSkE7O0lBcEJBQyxLQUFLO2VBQUxBOztJQVVBQyxTQUFTO2VBQVRBOztJQWtCQUMsT0FBTztl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
|
|
493
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvYXJyYXkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXJzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbMF07fVxuXG5leHBvcnQgZnVuY3Rpb24gc2Vjb25kKGFycmF5KSB7IHJldHVybiBhcnJheVsxXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gdGhpcmQoYXJyYXkpIHsgcmV0dXJuIGFycmF5WzJdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3VydGgoYXJyYXkpIHsgcmV0dXJuIGFycmF5WzNdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWZ0aChhcnJheSkgeyByZXR1cm4gYXJyYXlbNF07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpZnRoTGFzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gNV07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvdXJ0aExhc3QoYXJyYXkpIHsgcmV0dXJuIGFycmF5W2FycmF5Lmxlbmd0aCAtIDRdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiB0aGlyZExhc3QoYXJyYXkpIHsgcmV0dXJuIGFycmF5W2FycmF5Lmxlbmd0aCAtIDNdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWNvbmRMYXN0KGFycmF5KSB7IHJldHVybiBhcnJheVthcnJheS5sZW5ndGggLSAyXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gZmlyc3RMYXN0KGFycmF5KSB7IHJldHVybiBhcnJheVthcnJheS5sZW5ndGggLSAxXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gbGFzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gMV07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGhlYWQoYXJyYXkpIHsgcmV0dXJuIGFycmF5LnNsaWNlKDAsIDEpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWlsKGFycmF5KSB7IHJldHVybiBhcnJheS5zbGljZSgxKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gYmFjayhhcnJheSkgeyByZXR1cm4gYXJyYXkuc2xpY2UoYXJyYXkubGVuZ3RoIC0gMSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb250KGFycmF5KSB7IHJldHVybiBhcnJheS5zbGljZSgwLCBNYXRoLm1heCgxLCBhcnJheS5sZW5ndGggLSAxKSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIHB1c2goYXJyYXkxLCBhcnJheTIpIHsgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoYXJyYXkxLCBhcnJheTIpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiB1bnNoaWZ0KGFycmF5MSwgYXJyYXkyKSB7IEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LmFwcGx5KGFycmF5MSwgYXJyYXkyKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gY29uY2F0KGFycmF5MSwgZWxlbWVudE9yQXJyYXkyKSB7XG4gIGNvbnN0IGFycmF5MiA9IChlbGVtZW50T3JBcnJheTIgaW5zdGFuY2VvZiBBcnJheSkgP1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50T3JBcnJheTIgOlxuICAgICAgICAgICAgICAgICAgICAgWyBlbGVtZW50T3JBcnJheTIgXTtcbiAgXG4gIHB1c2goYXJyYXkxLCBhcnJheTIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXIoYXJyYXkpIHtcbiAgY29uc3Qgc3RhcnQgPSAwO1xuICBcbiAgcmV0dXJuIGFycmF5LnNwbGljZShzdGFydCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb3B5KGFycmF5MSwgYXJyYXkyKSB7XG4gIGNvbnN0IHN0YXJ0ID0gMCxcbiAgICAgICAgZGVsZXRlQ291bnQgPSBhcnJheTIubGVuZ3RoOyAgLy8vXG4gIFxuICBzcGxpY2UoYXJyYXkxLCBzdGFydCwgZGVsZXRlQ291bnQsIGFycmF5Mik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZShhcnJheTEsIGFycmF5MikgeyBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShhcnJheTEsIGFycmF5Mik7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmQoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGVsZW1lbnRzID0gW107XG5cbiAgZm9yd2FyZHNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAocGFzc2VkKSB7XG4gICAgICBlbGVtZW50cy5wdXNoKGVsZW1lbnQpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGVsZW1lbnRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZShhcnJheSwgZWxlbWVudCwgY2FsbGJhY2spIHtcbiAgbGV0IHN0YXJ0O1xuICBcbiAgY29uc3QgZm91bmQgPSBhcnJheS5zb21lKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmIChwYXNzZWQpIHtcbiAgICAgIHN0YXJ0ID0gaW5kZXg7ICAvLy9cbiAgICAgIFxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcbiAgXG4gIGlmIChmb3VuZCkge1xuICAgIGNvbnN0IGRlbGV0ZUNvdW50ID0gMTtcblxuICAgIGFycmF5LnNwbGljZShzdGFydCwgZGVsZXRlQ291bnQsIGVsZW1lbnQpO1xuICB9XG5cbiAgcmV0dXJuIGZvdW5kO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3BsaWNlKGFycmF5MSwgc3RhcnQsIGRlbGV0ZUNvdW50ID0gSW5maW5pdHksIGFycmF5MiA9IFtdKSB7XG4gIGNvbnN0IGFyZ3MgPSBbIHN0YXJ0LCBkZWxldGVDb3VudCwgLi4uYXJyYXkyIF0sXG4gICAgICAgIGRlbGV0ZWRFbGVtZW50cyA9IEFycmF5LnByb3RvdHlwZS5zcGxpY2UuYXBwbHkoYXJyYXkxLCBhcmdzKTtcblxuICByZXR1cm4gZGVsZXRlZEVsZW1lbnRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBkZWxldGVkRWxlbWVudHMgPSBbXTtcbiAgXG4gIGJhY2t3YXJkc0ZvckVhY2goYXJyYXksIChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmICghcGFzc2VkKSB7XG4gICAgICBjb25zdCBzdGFydCA9IGluZGV4LCAgLy8vXG4gICAgICAgICAgICBkZWxldGVDb3VudCA9IDEsXG4gICAgICAgICAgICBkZWxldGVkRWxlbWVudHMgPSBhcnJheS5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50KSxcbiAgICAgICAgICAgIGZpcnN0RGVsZXRlZEVsZW1lbnQgPSBmaXJzdChkZWxldGVkRWxlbWVudHMpO1xuICAgICAgXG4gICAgICBkZWxldGVkRWxlbWVudHMudW5zaGlmdChmaXJzdERlbGV0ZWRFbGVtZW50KTsgIC8vL1xuICAgIH1cbiAgfSk7XG4gIFxuICByZXR1cm4gZGVsZXRlZEVsZW1lbnRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJ1bmUoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGxldCBkZWxldGVkRWxlbWVudCA9IHVuZGVmaW5lZDtcbiAgXG4gIGFycmF5LnNvbWUoKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgcGFzc2VkID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gaW5kZXgsICAvLy9cbiAgICAgICAgICAgIGRlbGV0ZUNvdW50ID0gMSxcbiAgICAgICAgICAgIGRlbGV0ZWRFbGVtZW50cyA9IGFycmF5LnNwbGljZShzdGFydCwgZGVsZXRlQ291bnQpLFxuICAgICAgICAgICAgZmlyc3REZWxldGVkRWxlbWVudCA9IGZpcnN0KGRlbGV0ZWRFbGVtZW50cyk7XG4gICAgICBcbiAgICAgIGRlbGV0ZWRFbGVtZW50ID0gZmlyc3REZWxldGVkRWxlbWVudDsgIC8vL1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuICBcbiAgcmV0dXJuIGRlbGV0ZWRFbGVtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdChhcnJheSwgY2FsbGJhY2spIHtcbiAgbGV0IGRlbGV0ZWRFbGVtZW50ID0gdW5kZWZpbmVkO1xuXG4gIGFycmF5LnNvbWUoKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgcGFzc2VkID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKHBhc3NlZCkge1xuICAgICAgY29uc3Qgc3RhcnQgPSBpbmRleCwgIC8vL1xuICAgICAgICAgICAgZGVsZXRlQ291bnQgPSAxLFxuICAgICAgICAgICAgZGVsZXRlZEVsZW1lbnRzID0gYXJyYXkuc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCksXG4gICAgICAgICAgICBmaXJzdERlbGV0ZWRFbGVtZW50ID0gZmlyc3QoZGVsZXRlZEVsZW1lbnRzKTtcblxuICAgICAgZGVsZXRlZEVsZW1lbnQgPSBmaXJzdERlbGV0ZWRFbGVtZW50OyAgLy8vXG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGRlbGV0ZWRFbGVtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0Y2goYXJyYXksIGVsZW1lbnQsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGZvdW5kID0gYXJyYXkuc29tZSgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAocGFzc2VkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG5cbiAgaWYgKGZvdW5kKSB7XG4gICAgYXJyYXkucHVzaChlbGVtZW50KTtcbiAgfVxuXG4gIHJldHVybiBmb3VuZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXByZXNzKGFycmF5LCBjYWxsYmFjaykge1xuICBsZXQgaW5kZXgxID0gMCxcbiAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoaW5kZXgxIDwgbGVuZ3RoKSB7XG4gICAgY29uc3QgZWxlbWVudDEgPSBhcnJheVtpbmRleDFdO1xuXG4gICAgZm9yIChsZXQgaW5kZXgyID0gbGVuZ3RoIC0gMTsgaW5kZXgyID4gaW5kZXgxOyBpbmRleDItLSkge1xuICAgICAgY29uc3QgZWxlbWVudDIgPSBhcnJheVtpbmRleDJdLFxuICAgICAgICAgICAgcGFzc2VkID0gY2FsbGJhY2soZWxlbWVudDIsIGVsZW1lbnQxKTtcblxuICAgICAgaWYgKHBhc3NlZCkge1xuICAgICAgICBjb25zdCBzdGFydCA9IGluZGV4MiwgLy8vXG4gICAgICAgICAgICAgIGRlbGV0ZUNvdW50ID0gMTtcblxuICAgICAgICBhcnJheS5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpbmRleDErKztcblxuICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tYmluZShhcnJheTEsIGFycmF5MiwgY2FsbGJhY2spIHtcbiAgY29uc3QgYXJyYXkgPSBbXG4gICAgLi4uYXJyYXkxLFxuICAgIC4uLmFycmF5MlxuICBdO1xuXG4gIGNvbXByZXNzKGFycmF5LCBjYWxsYmFjayk7XG5cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXVnbWVudChhcnJheTEsIGFycmF5MiwgY2FsbGJhY2spIHtcbiAgYXJyYXkyLmZvckVhY2goKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgcGFzc2VkID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKHBhc3NlZCkge1xuICAgICAgYXJyYXkxLnB1c2goZWxlbWVudCk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcGFyYXRlKGFycmF5LCBhcnJheTEsIGFycmF5MiwgY2FsbGJhY2spIHtcbiAgYXJyYXkuZm9yRWFjaCgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBwYXNzZWQgP1xuICAgICAgYXJyYXkxLnB1c2goZWxlbWVudCkgOlxuICAgICAgICBhcnJheTIucHVzaChlbGVtZW50KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3J3YXJkc0ZpbmQoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhcnJheUxlbmd0aDsgaW5kZXgrKykge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgcGFzc2VkID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKHBhc3NlZCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmFja3dhcmRzRmluZChhcnJheSwgY2FsbGJhY2spIHtcbiAgY29uc3QgYXJyYXlMZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSBhcnJheUxlbmd0aCAtIDE7IGluZGV4ID49IDA7IGluZGV4LS0pIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgIHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmIChwYXNzZWQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcndhcmRzU29tZShhcnJheSwgY2FsbGJhY2spIHtcbiAgY29uc3QgYXJyYXlMZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFycmF5TGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG4gICAgXG4gICAgaWYgKHBhc3NlZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmFja3dhcmRzU29tZShhcnJheSwgY2FsbGJhY2spIHtcbiAgY29uc3QgYXJyYXlMZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSBhcnJheUxlbmd0aCAtIDE7IGluZGV4ID49IDA7IGluZGV4LS0pIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgIHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmIChwYXNzZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcndhcmRzRXZlcnkoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhcnJheUxlbmd0aDsgaW5kZXgrKykge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgcGFzc2VkID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJhY2t3YXJkc0V2ZXJ5KGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IGFycmF5TGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXgtLSkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgcGFzc2VkID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcndhcmRzUmVkdWNlKGFycmF5LCBjYWxsYmFjaywgaW5pdGlhbFZhbHVlKSB7XG4gIGxldCB2YWx1ZSA9IGluaXRpYWxWYWx1ZTsgLy8vXG5cbiAgY29uc3QgYXJyYXlMZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFycmF5TGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHZhbHVlID0gY2FsbGJhY2sodmFsdWUsIGVsZW1lbnQsIGluZGV4KTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJhY2t3YXJkc1JlZHVjZShhcnJheSwgY2FsbGJhY2ssIGluaXRpYWxWYWx1ZSkge1xuICBsZXQgdmFsdWUgPSBpbml0aWFsVmFsdWU7IC8vL1xuXG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gYXJyYXlMZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHZhbHVlID0gY2FsbGJhY2sodmFsdWUsIGVsZW1lbnQsIGluZGV4KTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcndhcmRzRm9yRWFjaChhcnJheSwgY2FsbGJhY2spIHtcbiAgY29uc3QgYXJyYXlMZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFycmF5TGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYmFja3dhcmRzRm9yRWFjaChhcnJheSwgY2FsbGJhY2spIHtcbiAgY29uc3QgYXJyYXlMZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSBhcnJheUxlbmd0aCAtIDE7IGluZGV4ID49IDA7IGluZGV4LS0pIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZmlyc3QsXG4gIHNlY29uZCxcbiAgdGhpcmQsXG4gIGZvdXJ0aCxcbiAgZmlmdGgsXG4gIGZpZnRoTGFzdCxcbiAgZm91cnRoTGFzdCxcbiAgdGhpcmRMYXN0LFxuICBzZWNvbmRMYXN0LFxuICBmaXJzdExhc3QsXG4gIGxhc3QsXG4gIGhlYWQsXG4gIHRhaWwsXG4gIGJhY2ssXG4gIGZyb250LFxuICBwdXNoLFxuICB1bnNoaWZ0LFxuICBjb25jYXQsXG4gIGNsZWFyLFxuICBjb3B5LFxuICBtZXJnZSxcbiAgZmluZCxcbiAgcmVwbGFjZSxcbiAgc3BsaWNlLFxuICBmaWx0ZXIsXG4gIHBydW5lLFxuICBleHRyYWN0LFxuICBwYXRjaCxcbiAgY29tcHJlc3MsXG4gIGNvbWJpbmUsXG4gIGF1Z21lbnQsXG4gIHNlcGFyYXRlLFxuICBmb3J3YXJkc0ZpbmQsXG4gIGJhY2t3YXJkc0ZpbmQsXG4gIGZvcndhcmRzU29tZSxcbiAgYmFja3dhcmRzU29tZSxcbiAgZm9yd2FyZHNFdmVyeSxcbiAgYmFja3dhcmRzRXZlcnksXG4gIGZvcndhcmRzUmVkdWNlLFxuICBiYWNrd2FyZHNSZWR1Y2UsXG4gIGZvcndhcmRzRm9yRWFjaCxcbiAgYmFja3dhcmRzRm9yRWFjaFxufTtcbiJdLCJuYW1lcyI6WyJhdWdtZW50IiwiYmFjayIsImJhY2t3YXJkc0V2ZXJ5IiwiYmFja3dhcmRzRmluZCIsImJhY2t3YXJkc0ZvckVhY2giLCJiYWNrd2FyZHNSZWR1Y2UiLCJiYWNrd2FyZHNTb21lIiwiY2xlYXIiLCJjb21iaW5lIiwiY29tcHJlc3MiLCJjb25jYXQiLCJjb3B5IiwiZXh0cmFjdCIsImZpZnRoIiwiZmlmdGhMYXN0IiwiZmlsdGVyIiwiZmluZCIsImZpcnN0IiwiZmlyc3RMYXN0IiwiZm9yd2FyZHNFdmVyeSIsImZvcndhcmRzRmluZCIsImZvcndhcmRzRm9yRWFjaCIsImZvcndhcmRzUmVkdWNlIiwiZm9yd2FyZHNTb21lIiwiZm91cnRoIiwiZm91cnRoTGFzdCIsImZyb250IiwiaGVhZCIsImxhc3QiLCJtZXJnZSIsInBhdGNoIiwicHJ1bmUiLCJwdXNoIiwicmVwbGFjZSIsInNlY29uZCIsInNlY29uZExhc3QiLCJzZXBhcmF0ZSIsInNwbGljZSIsInRhaWwiLCJ0aGlyZCIsInRoaXJkTGFzdCIsInVuc2hpZnQiLCJhcnJheSIsImxlbmd0aCIsInNsaWNlIiwiTWF0aCIsIm1heCIsImFycmF5MSIsImFycmF5MiIsIkFycmF5IiwicHJvdG90eXBlIiwiYXBwbHkiLCJlbGVtZW50T3JBcnJheTIiLCJzdGFydCIsImRlbGV0ZUNvdW50IiwiY2FsbGJhY2siLCJlbGVtZW50cyIsImVsZW1lbnQiLCJpbmRleCIsInBhc3NlZCIsImZvdW5kIiwic29tZSIsIkluZmluaXR5IiwiYXJncyIsImRlbGV0ZWRFbGVtZW50cyIsImZpcnN0RGVsZXRlZEVsZW1lbnQiLCJkZWxldGVkRWxlbWVudCIsInVuZGVmaW5lZCIsImluZGV4MSIsImVsZW1lbnQxIiwiaW5kZXgyIiwiZWxlbWVudDIiLCJmb3JFYWNoIiwiYXJyYXlMZW5ndGgiLCJpbml0aWFsVmFsdWUiLCJ2YWx1ZSJdLCJt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
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
default: function() {
|
|
13
|
+
return _default;
|
|
14
|
+
},
|
|
15
|
+
strcmp: function() {
|
|
16
|
+
return strcmp;
|
|
17
|
+
},
|
|
18
|
+
strlen: function() {
|
|
19
|
+
return strlen;
|
|
20
|
+
},
|
|
21
|
+
substring: function() {
|
|
22
|
+
return substring;
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
var _constants = require("../constants");
|
|
26
|
+
function _array_like_to_array(arr, len) {
|
|
27
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
28
|
+
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
29
|
+
return arr2;
|
|
30
|
+
}
|
|
31
|
+
function _array_without_holes(arr) {
|
|
32
|
+
if (Array.isArray(arr)) return _array_like_to_array(arr);
|
|
33
|
+
}
|
|
34
|
+
function _iterable_to_array(iter) {
|
|
35
|
+
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
36
|
+
}
|
|
37
|
+
function _non_iterable_spread() {
|
|
38
|
+
throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
39
|
+
}
|
|
40
|
+
function _to_consumable_array(arr) {
|
|
41
|
+
return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
|
|
42
|
+
}
|
|
43
|
+
function _unsupported_iterable_to_array(o, minLen) {
|
|
44
|
+
if (!o) return;
|
|
45
|
+
if (typeof o === "string") return _array_like_to_array(o, minLen);
|
|
46
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
47
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
48
|
+
if (n === "Map" || n === "Set") return Array.from(n);
|
|
49
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
50
|
+
}
|
|
51
|
+
function strcmp(stringA, stringB) {
|
|
52
|
+
var difference;
|
|
53
|
+
var codePointA = stringA === _constants.EMPTY_STRING ? 0 : stringA.codePointAt(0), codePointB = stringB === _constants.EMPTY_STRING ? 0 : stringB.codePointAt(0);
|
|
54
|
+
difference = codePointB - codePointA;
|
|
55
|
+
if (difference === 0 && codePointA !== 0 && codePointB !== 0) {
|
|
56
|
+
stringA = substring(stringA, 1); ///
|
|
57
|
+
stringB = substring(stringB, 1); ///
|
|
58
|
+
difference = strcmp(stringA, stringB);
|
|
59
|
+
}
|
|
60
|
+
return difference;
|
|
61
|
+
}
|
|
62
|
+
function strlen(string) {
|
|
63
|
+
return _to_consumable_array(string).length;
|
|
64
|
+
} ///
|
|
65
|
+
function substring(string, start, end) {
|
|
66
|
+
return _to_consumable_array(string).slice(start, end).join("");
|
|
67
|
+
} ///
|
|
68
|
+
var _default = {
|
|
69
|
+
strcmp: strcmp,
|
|
70
|
+
strlen: strlen,
|
|
71
|
+
substring: substring
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3RyaW5nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJjbXAoc3RyaW5nQSwgc3RyaW5nQikge1xuICBsZXQgZGlmZmVyZW5jZTtcblxuICBjb25zdCBjb2RlUG9pbnRBID0gKHN0cmluZ0EgPT09IEVNUFRZX1NUUklORykgP1xuICAgICAgICAgICAgICAgICAgICAgICAwIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdBLmNvZGVQb2ludEF0KDApLFxuICAgICAgICBjb2RlUG9pbnRCID0gKHN0cmluZ0IgPT09IEVNUFRZX1NUUklORykgP1xuICAgICAgICAgICAgICAgICAgICAgICAwIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdCLmNvZGVQb2ludEF0KDApO1xuXG4gIGRpZmZlcmVuY2UgPSBjb2RlUG9pbnRCIC0gY29kZVBvaW50QTtcblxuICBpZiAoKGRpZmZlcmVuY2UgPT09IDApICYmIChjb2RlUG9pbnRBICE9PTApICYmIChjb2RlUG9pbnRCICE9PTApKSB7XG4gICAgc3RyaW5nQSA9IHN1YnN0cmluZyhzdHJpbmdBLCAxKTsgLy8vXG5cbiAgICBzdHJpbmdCID0gc3Vic3RyaW5nKHN0cmluZ0IsIDEpOyAvLy9cblxuICAgIGRpZmZlcmVuY2UgPSBzdHJjbXAoc3RyaW5nQSwgc3RyaW5nQik7XG4gIH1cblxuICByZXR1cm4gZGlmZmVyZW5jZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmxlbihzdHJpbmcpIHsgcmV0dXJuIFsuLi5zdHJpbmddLmxlbmd0aDsgfSAvLy9cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnN0cmluZyhzdHJpbmcsIHN0YXJ0LCBlbmQpIHsgcmV0dXJuIFsuLi5zdHJpbmddLnNsaWNlKHN0YXJ0LCBlbmQpLmpvaW4oXCJcIik7IH0gIC8vL1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHN0cmNtcCxcbiAgc3RybGVuLFxuICBzdWJzdHJpbmdcbn07XG4iXSwibmFtZXMiOlsic3RyY21wIiwic3RybGVuIiwic3Vic3RyaW5nIiwic3RyaW5nQSIsInN0cmluZ0IiLCJkaWZmZXJlbmNlIiwiY29kZVBvaW50QSIsIkVNUFRZX1NUUklORyIsImNvZGVQb2ludEF0IiwiY29kZVBvaW50QiIsInN0cmluZyIsImxlbmd0aCIsInN0YXJ0IiwiZW5kIiwic2xpY2UiLCJqb2luIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUErQkEsT0FJRTtlQUpGOztJQTNCZ0JBLE1BQU07ZUFBTkE7O0lBdUJBQyxNQUFNO2VBQU5BOztJQUVBQyxTQUFTO2VBQVRBOzs7eUJBM0JhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV0QixTQUFTRixPQUFPRyxPQUFPLEVBQUVDLE9BQU87SUFDckMsSUFBSUM7SUFFSixJQUFNQyxhQUFhLEFBQUNILFlBQVlJLHVCQUFZLEdBQ3ZCLElBQ0VKLFFBQVFLLFdBQVcsQ0FBQyxJQUNyQ0MsYUFBYSxBQUFDTCxZQUFZRyx1QkFBWSxHQUN2QixJQUNFSCxRQUFRSSxXQUFXLENBQUM7SUFFM0NILGFBQWFJLGFBQWFIO0lBRTFCLElBQUksQUFBQ0QsZUFBZSxLQUFPQyxlQUFjLEtBQU9HLGVBQWMsR0FBSTtRQUNoRU4sVUFBVUQsVUFBVUMsU0FBUyxJQUFJLEdBQUc7UUFFcENDLFVBQVVGLFVBQVVFLFNBQVMsSUFBSSxHQUFHO1FBRXBDQyxhQUFhTCxPQUFPRyxTQUFTQztJQUMvQjtJQUVBLE9BQU9DO0FBQ1Q7QUFFTyxTQUFTSixPQUFPUyxNQUFNO0lBQUksT0FBTyxBQUFDLHFCQUFHQSxRQUFRQyxNQUFNO0FBQUUsRUFBRSxHQUFHO0FBRTFELFNBQVNULFVBQVVRLE1BQU0sRUFBRUUsS0FBSyxFQUFFQyxHQUFHO0lBQUksT0FBTyxBQUFDLHFCQUFHSCxRQUFRSSxLQUFLLENBQUNGLE9BQU9DLEtBQUtFLElBQUksQ0FBQztBQUFLLEVBQUcsR0FBRztJQUVyRyxXQUFlO0lBQ2JmLFFBQUFBO0lBQ0FDLFFBQUFBO0lBQ0FDLFdBQUFBO0FBQ0YifQ==
|
package/package.json
CHANGED
package/src/browser.js
CHANGED
|
@@ -10,10 +10,12 @@ export { default as statusCodes } from "./statusCodes";
|
|
|
10
10
|
export { default as contentTypes } from "./contentTypes";
|
|
11
11
|
export { default as statusMessages } from "./statusMessages";
|
|
12
12
|
|
|
13
|
-
export { default as ajaxUtilities } from "./utilities/ajax";
|
|
14
|
-
|
|
15
13
|
export { default as pathUtilities } from "./utilities/path";
|
|
16
14
|
export { default as httpUtilities } from "./utilities/http";
|
|
17
15
|
export { default as arrayUtilities } from "./utilities/array";
|
|
16
|
+
export { default as stringUtilities } from "./utilities/string";
|
|
18
17
|
export { default as versionUtilities } from "./utilities/version";
|
|
18
|
+
export { default as templateUtilities } from "./utilities/template";
|
|
19
19
|
export { default as asynchronousUtilities } from "./utilities/asynchronous";
|
|
20
|
+
|
|
21
|
+
export { default as ajaxUtilities } from "./utilities/ajax";
|
package/src/main.js
CHANGED
|
@@ -13,13 +13,16 @@ export { default as statusMessages } from "./statusMessages";
|
|
|
13
13
|
export { default as pathUtilities } from "./utilities/path";
|
|
14
14
|
export { default as httpUtilities } from "./utilities/http";
|
|
15
15
|
export { default as arrayUtilities } from "./utilities/array";
|
|
16
|
+
export { default as stringUtilities } from "./utilities/string";
|
|
16
17
|
export { default as versionUtilities } from "./utilities/version";
|
|
17
|
-
export { default as
|
|
18
|
+
export { default as templateUtilities } from "./utilities/template";
|
|
18
19
|
export { default as asynchronousUtilities } from "./utilities/asynchronous";
|
|
19
20
|
|
|
21
|
+
|
|
22
|
+
|
|
20
23
|
export { default as shellUtilities } from "./utilities/shell";
|
|
21
24
|
export { default as requestUtilities } from "./utilities/request";
|
|
22
25
|
export { default as loggingUtilities } from "./utilities/logging";
|
|
23
|
-
export { default as
|
|
26
|
+
export { default as packageUtilities } from "./utilities/package";
|
|
24
27
|
export { default as fileSystemUtilities } from "./utilities/fileSystem";
|
|
25
28
|
export { default as configurationUtilities } from "./utilities/configuration";
|
package/src/utilities/array.js
CHANGED
|
@@ -57,11 +57,18 @@ export function copy(array1, array2) {
|
|
|
57
57
|
|
|
58
58
|
export function merge(array1, array2) { Array.prototype.push.apply(array1, array2); }
|
|
59
59
|
|
|
60
|
-
export function
|
|
61
|
-
const
|
|
62
|
-
deletedItemsArray = Array.prototype.splice.apply(array1, args);
|
|
60
|
+
export function find(array, callback) {
|
|
61
|
+
const elements = [];
|
|
63
62
|
|
|
64
|
-
|
|
63
|
+
forwardsForEach(array, (element, index) => {
|
|
64
|
+
const passed = callback(element, index);
|
|
65
|
+
|
|
66
|
+
if (passed) {
|
|
67
|
+
elements.push(element);
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
return elements;
|
|
65
72
|
}
|
|
66
73
|
|
|
67
74
|
export function replace(array, element, callback) {
|
|
@@ -86,8 +93,15 @@ export function replace(array, element, callback) {
|
|
|
86
93
|
return found;
|
|
87
94
|
}
|
|
88
95
|
|
|
96
|
+
export function splice(array1, start, deleteCount = Infinity, array2 = []) {
|
|
97
|
+
const args = [ start, deleteCount, ...array2 ],
|
|
98
|
+
deletedElements = Array.prototype.splice.apply(array1, args);
|
|
99
|
+
|
|
100
|
+
return deletedElements;
|
|
101
|
+
}
|
|
102
|
+
|
|
89
103
|
export function filter(array, callback) {
|
|
90
|
-
const
|
|
104
|
+
const deletedElements = [];
|
|
91
105
|
|
|
92
106
|
backwardsForEach(array, (element, index) => {
|
|
93
107
|
const passed = callback(element, index);
|
|
@@ -98,29 +112,15 @@ export function filter(array, callback) {
|
|
|
98
112
|
deletedElements = array.splice(start, deleteCount),
|
|
99
113
|
firstDeletedElement = first(deletedElements);
|
|
100
114
|
|
|
101
|
-
|
|
115
|
+
deletedElements.unshift(firstDeletedElement); ///
|
|
102
116
|
}
|
|
103
117
|
});
|
|
104
118
|
|
|
105
|
-
return
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
export function find(array, callback) {
|
|
109
|
-
const elements = [];
|
|
110
|
-
|
|
111
|
-
forwardsForEach(array, (element, index) => {
|
|
112
|
-
const passed = callback(element, index);
|
|
113
|
-
|
|
114
|
-
if (passed) {
|
|
115
|
-
elements.push(element);
|
|
116
|
-
}
|
|
117
|
-
});
|
|
118
|
-
|
|
119
|
-
return elements;
|
|
119
|
+
return deletedElements;
|
|
120
120
|
}
|
|
121
121
|
|
|
122
122
|
export function prune(array, callback) {
|
|
123
|
-
let
|
|
123
|
+
let deletedElement = undefined;
|
|
124
124
|
|
|
125
125
|
array.some((element, index) => {
|
|
126
126
|
const passed = callback(element, index);
|
|
@@ -131,17 +131,17 @@ export function prune(array, callback) {
|
|
|
131
131
|
deletedElements = array.splice(start, deleteCount),
|
|
132
132
|
firstDeletedElement = first(deletedElements);
|
|
133
133
|
|
|
134
|
-
|
|
134
|
+
deletedElement = firstDeletedElement; ///
|
|
135
135
|
|
|
136
136
|
return true;
|
|
137
137
|
}
|
|
138
138
|
});
|
|
139
139
|
|
|
140
|
-
return
|
|
140
|
+
return deletedElement;
|
|
141
141
|
}
|
|
142
142
|
|
|
143
143
|
export function extract(array, callback) {
|
|
144
|
-
let
|
|
144
|
+
let deletedElement = undefined;
|
|
145
145
|
|
|
146
146
|
array.some((element, index) => {
|
|
147
147
|
const passed = callback(element, index);
|
|
@@ -152,13 +152,13 @@ export function extract(array, callback) {
|
|
|
152
152
|
deletedElements = array.splice(start, deleteCount),
|
|
153
153
|
firstDeletedElement = first(deletedElements);
|
|
154
154
|
|
|
155
|
-
|
|
155
|
+
deletedElement = firstDeletedElement; ///
|
|
156
156
|
|
|
157
157
|
return true;
|
|
158
158
|
}
|
|
159
159
|
});
|
|
160
160
|
|
|
161
|
-
return
|
|
161
|
+
return deletedElement;
|
|
162
162
|
}
|
|
163
163
|
|
|
164
164
|
export function patch(array, element, callback) {
|
|
@@ -394,10 +394,10 @@ export default {
|
|
|
394
394
|
clear,
|
|
395
395
|
copy,
|
|
396
396
|
merge,
|
|
397
|
-
|
|
397
|
+
find,
|
|
398
398
|
replace,
|
|
399
|
+
splice,
|
|
399
400
|
filter,
|
|
400
|
-
find,
|
|
401
401
|
prune,
|
|
402
402
|
extract,
|
|
403
403
|
patch,
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { EMPTY_STRING } from "../constants";
|
|
4
|
+
|
|
5
|
+
export function strcmp(stringA, stringB) {
|
|
6
|
+
let difference;
|
|
7
|
+
|
|
8
|
+
const codePointA = (stringA === EMPTY_STRING) ?
|
|
9
|
+
0 :
|
|
10
|
+
stringA.codePointAt(0),
|
|
11
|
+
codePointB = (stringB === EMPTY_STRING) ?
|
|
12
|
+
0 :
|
|
13
|
+
stringB.codePointAt(0);
|
|
14
|
+
|
|
15
|
+
difference = codePointB - codePointA;
|
|
16
|
+
|
|
17
|
+
if ((difference === 0) && (codePointA !==0) && (codePointB !==0)) {
|
|
18
|
+
stringA = substring(stringA, 1); ///
|
|
19
|
+
|
|
20
|
+
stringB = substring(stringB, 1); ///
|
|
21
|
+
|
|
22
|
+
difference = strcmp(stringA, stringB);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
return difference;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export function strlen(string) { return [...string].length; } ///
|
|
29
|
+
|
|
30
|
+
export function substring(string, start, end) { return [...string].slice(start, end).join(""); } ///
|
|
31
|
+
|
|
32
|
+
export default {
|
|
33
|
+
strcmp,
|
|
34
|
+
strlen,
|
|
35
|
+
substring
|
|
36
|
+
};
|