ut2 1.12.0 → 1.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/README.md +5 -1
  2. package/dist/ut2.js +230 -15
  3. package/dist/ut2.js.map +1 -1
  4. package/dist/ut2.min.js +1 -1
  5. package/dist/ut2.min.js.map +1 -1
  6. package/es/findKey.js +40 -0
  7. package/es/guard.js +19 -0
  8. package/es/index.js +5 -1
  9. package/es/internals/helpers.js +1 -1
  10. package/es/retry.js +43 -0
  11. package/es/tryit.js +30 -0
  12. package/lib/findKey.js +42 -0
  13. package/lib/guard.js +21 -0
  14. package/lib/index.js +10 -2
  15. package/lib/internals/helpers.js +1 -1
  16. package/lib/retry.js +45 -0
  17. package/lib/tryit.js +32 -0
  18. package/package.json +4 -2
  19. package/types/after.d.ts +0 -1
  20. package/types/allKeys.d.ts +2 -1
  21. package/types/allKeysIn.d.ts +2 -1
  22. package/types/before.d.ts +0 -1
  23. package/types/camelCase.d.ts +1 -2
  24. package/types/capitalize.d.ts +0 -1
  25. package/types/castArray.d.ts +0 -1
  26. package/types/ceil.d.ts +1 -2
  27. package/types/chunk.d.ts +0 -1
  28. package/types/compact.d.ts +1 -2
  29. package/types/constant.d.ts +0 -1
  30. package/types/debounce.d.ts +0 -1
  31. package/types/delay.d.ts +0 -1
  32. package/types/difference.d.ts +0 -1
  33. package/types/eq.d.ts +1 -2
  34. package/types/escape.d.ts +1 -2
  35. package/types/escapeRegExp.d.ts +1 -2
  36. package/types/filter.d.ts +0 -1
  37. package/types/findKey.d.ts +24 -0
  38. package/types/floor.d.ts +1 -2
  39. package/types/fromPairs.d.ts +0 -1
  40. package/types/groupBy.d.ts +0 -1
  41. package/types/guard.d.ts +22 -0
  42. package/types/identity.d.ts +0 -1
  43. package/types/inRange.d.ts +0 -1
  44. package/types/index.d.ts +5 -1
  45. package/types/internals/helpers.d.ts +2 -6
  46. package/types/internals/native.d.ts +6 -12
  47. package/types/internals/root.d.ts +2 -3
  48. package/types/internals/types.d.ts +7 -0
  49. package/types/intersection.d.ts +0 -1
  50. package/types/invert.d.ts +1 -2
  51. package/types/isArguments.d.ts +0 -1
  52. package/types/isArray.d.ts +0 -1
  53. package/types/isArrayBuffer.d.ts +0 -1
  54. package/types/isArrayLike.d.ts +0 -1
  55. package/types/isArrayLikeObject.d.ts +0 -1
  56. package/types/isBigInt.d.ts +0 -1
  57. package/types/isBlob.d.ts +2 -3
  58. package/types/isBoolean.d.ts +0 -1
  59. package/types/isBuffer.d.ts +0 -1
  60. package/types/isDataView.d.ts +0 -1
  61. package/types/isDate.d.ts +0 -1
  62. package/types/isElement.d.ts +0 -1
  63. package/types/isEmpty.d.ts +0 -1
  64. package/types/isEqual.d.ts +0 -1
  65. package/types/isError.d.ts +0 -1
  66. package/types/isFile.d.ts +1 -2
  67. package/types/isFinite.d.ts +0 -1
  68. package/types/isFunction.d.ts +0 -1
  69. package/types/isInteger.d.ts +0 -1
  70. package/types/isLength.d.ts +1 -2
  71. package/types/isMap.d.ts +0 -1
  72. package/types/isMatch.d.ts +0 -1
  73. package/types/isNaN.d.ts +0 -1
  74. package/types/isNil.d.ts +0 -1
  75. package/types/isNull.d.ts +0 -1
  76. package/types/isNumber.d.ts +0 -1
  77. package/types/isObject.d.ts +1 -2
  78. package/types/isObjectLike.d.ts +0 -1
  79. package/types/isPlainObject.d.ts +0 -1
  80. package/types/isPromiseLike.d.ts +0 -1
  81. package/types/isRegExp.d.ts +0 -1
  82. package/types/isSafeInteger.d.ts +0 -1
  83. package/types/isSet.d.ts +0 -1
  84. package/types/isString.d.ts +0 -1
  85. package/types/isSymbol.d.ts +0 -1
  86. package/types/isTypedArray.d.ts +1 -2
  87. package/types/isUndefined.d.ts +0 -1
  88. package/types/isWeakMap.d.ts +0 -1
  89. package/types/isWeakSet.d.ts +0 -1
  90. package/types/isWindow.d.ts +0 -1
  91. package/types/kebabCase.d.ts +1 -2
  92. package/types/keys.d.ts +0 -1
  93. package/types/keysIn.d.ts +0 -1
  94. package/types/lowerCase.d.ts +0 -1
  95. package/types/map.d.ts +0 -1
  96. package/types/merge.d.ts +0 -1
  97. package/types/min.d.ts +0 -1
  98. package/types/move.d.ts +1 -2
  99. package/types/negate.d.ts +0 -1
  100. package/types/noop.d.ts +0 -1
  101. package/types/nth.d.ts +0 -1
  102. package/types/nthArg.d.ts +0 -1
  103. package/types/omit.d.ts +0 -1
  104. package/types/omitBy.d.ts +1 -2
  105. package/types/once.d.ts +0 -1
  106. package/types/orderBy.d.ts +1 -1
  107. package/types/partition.d.ts +2 -3
  108. package/types/pascalCase.d.ts +1 -2
  109. package/types/pick.d.ts +0 -1
  110. package/types/pickBy.d.ts +1 -2
  111. package/types/random.d.ts +0 -1
  112. package/types/randomInt.d.ts +0 -1
  113. package/types/retry.d.ts +31 -0
  114. package/types/round.d.ts +1 -2
  115. package/types/shuffle.d.ts +0 -1
  116. package/types/sleep.d.ts +0 -1
  117. package/types/snakeCase.d.ts +1 -2
  118. package/types/throttle.d.ts +0 -1
  119. package/types/toFinite.d.ts +0 -1
  120. package/types/toInteger.d.ts +0 -1
  121. package/types/toLength.d.ts +1 -2
  122. package/types/toNumber.d.ts +0 -1
  123. package/types/toSafeInteger.d.ts +0 -1
  124. package/types/toString.d.ts +0 -1
  125. package/types/tryit.d.ts +31 -0
  126. package/types/unescape.d.ts +0 -1
  127. package/types/union.d.ts +0 -1
  128. package/types/uniq.d.ts +0 -1
  129. package/types/uniqueId.d.ts +0 -1
  130. package/types/unzip.d.ts +0 -1
  131. package/types/upperCase.d.ts +0 -1
  132. package/types/words.d.ts +1 -2
  133. package/types/xor.d.ts +0 -1
  134. package/types/zip.d.ts +0 -1
package/README.md CHANGED
@@ -154,6 +154,7 @@ const debounced = debounce(() => {
154
154
  - [Object](https://caijf.github.io/ut2/module-Object.html) 对象
155
155
  - [allKeys](https://caijf.github.io/ut2/module-Object.html#.allKeys) - 对象自身的可枚举属性(包含 `Symbol` 属性)。
156
156
  - [allKeysIn](https://caijf.github.io/ut2/module-Object.html#.allKeysIn) - 对象自身及继承的可枚举属性(包含 `Symbol` 属性)。
157
+ - [findKey](https://caijf.github.io/ut2/module-Object.html#.findKey) - 查找对象的键。
157
158
  - [invert](https://caijf.github.io/ut2/module-Object.html#.invert) - 对象自身的可枚举属性(包含 `Symbol` 属性)和值反转。
158
159
  - [keys](https://caijf.github.io/ut2/module-Object.html#.keys) - 对象自身的可枚举属性(不包含 `Symbol` 属性)。
159
160
  - [keysIn](https://caijf.github.io/ut2/module-Object.html#.keysIn) - 对象自身及继承的可枚举属性(不包含 `Symbol` 属性)。
@@ -184,7 +185,8 @@ const debounced = debounce(() => {
184
185
  - [defaultTo](https://caijf.github.io/ut2/module-Util.html#.defaultTo) - 默认值。
185
186
  - [eq](https://caijf.github.io/ut2/module-Util.html#.eq) - 等于。
186
187
  - [gt](https://caijf.github.io/ut2/module-Util.html#.gt) - 大于。
187
- - [gte](https://caijf.github.io/ut2/module-Util.html#.gte) - 大于等于
188
+ - [gte](https://caijf.github.io/ut2/module-Util.html#.gte) - 大于等于。
189
+ - [guard](https://caijf.github.io/ut2/module-Util.html#.guard) - 函数守卫。
188
190
  - [identity](https://caijf.github.io/ut2/module-Util.html#.identity) - 返回第一个参数的函数。
189
191
  - [list](https://caijf.github.io/ut2/module-Util.html#.list) - 迭代执行次数。
190
192
  - [lt](https://caijf.github.io/ut2/module-Util.html#.lt) - 小于。
@@ -192,6 +194,7 @@ const debounced = debounce(() => {
192
194
  - [noop](https://caijf.github.io/ut2/module-Util.html#.noop) - 空函数。
193
195
  - [nthArg](https://caijf.github.io/ut2/module-Util.html#.nthArg) - 返回指定位置参数的函数。
194
196
  - [range](https://caijf.github.io/ut2/module-Util.html#.range) - 创建升序或降序的数字数组。
197
+ - [retry](https://caijf.github.io/ut2/module-Util.html#.retry) - 异步函数错误重试。
195
198
  - [sleep](https://caijf.github.io/ut2/module-Util.html#.sleep) - 返回 `promise` 延迟。
196
199
  - [toFinite](https://caijf.github.io/ut2/module-Util.html#.toFinite) - 转为有限数字。
197
200
  - [toInteger](https://caijf.github.io/ut2/module-Util.html#.toInteger) - 转为整数。
@@ -199,6 +202,7 @@ const debounced = debounce(() => {
199
202
  - [toNumber](https://caijf.github.io/ut2/module-Util.html#.toNumber) - 转为数字。
200
203
  - [toSafeInteger](https://caijf.github.io/ut2/module-Util.html#.toSafeInteger) - 转为安全整数。
201
204
  - [toString](https://caijf.github.io/ut2/module-Util.html#.toString) - 转为字符串。
205
+ - [tryit](https://caijf.github.io/ut2/module-Util.html#.tryit) - 包装函数为错误优先函数。
202
206
  - [uniqueId](https://caijf.github.io/ut2/module-Util.html#.uniqueId) - 唯一 ID。
203
207
  - [GLOBAL](https://caijf.github.io/ut2/global.html) 其他导出的成员
204
208
  - [MAX_ARRAY_LENGTH](https://caijf.github.io/ut2/global.html#MAX_ARRAY_LENGTH) - 最大数组长度。
package/dist/ut2.js CHANGED
@@ -606,7 +606,7 @@
606
606
  return value == null || value !== value ? defaultValue : value;
607
607
  };
608
608
 
609
- var VERSION = "1.12.0";
609
+ var VERSION = "1.14.0";
610
610
  var isBrowser = typeof window !== stringUndefined && isObjectLike(window) && typeof document !== stringUndefined && isObjectLike(document) && window.document === document;
611
611
  var supportedArgumentsType = getTag((function () { return arguments; })()) === argumentsTag;
612
612
  var FUNC_ERROR_TEXT = 'Expected a function';
@@ -1430,6 +1430,138 @@
1430
1430
  return getKeysIn(object).concat(getSymbolsIn(object));
1431
1431
  }
1432
1432
 
1433
+ /******************************************************************************
1434
+ Copyright (c) Microsoft Corporation.
1435
+
1436
+ Permission to use, copy, modify, and/or distribute this software for any
1437
+ purpose with or without fee is hereby granted.
1438
+
1439
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
1440
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
1441
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
1442
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
1443
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
1444
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
1445
+ PERFORMANCE OF THIS SOFTWARE.
1446
+ ***************************************************************************** */
1447
+ /* global Reflect, Promise, SuppressedError, Symbol, Iterator */
1448
+
1449
+
1450
+ function __awaiter(thisArg, _arguments, P, generator) {
1451
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1452
+ return new (P || (P = Promise))(function (resolve, reject) {
1453
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
1454
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
1455
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
1456
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
1457
+ });
1458
+ }
1459
+
1460
+ function __generator(thisArg, body) {
1461
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
1462
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
1463
+ function verb(n) { return function (v) { return step([n, v]); }; }
1464
+ function step(op) {
1465
+ if (f) throw new TypeError("Generator is already executing.");
1466
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
1467
+ 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) return t;
1468
+ if (y = 0, t) op = [op[0] & 2, t.value];
1469
+ switch (op[0]) {
1470
+ case 0: case 1: t = op; break;
1471
+ case 4: _.label++; return { value: op[1], done: false };
1472
+ case 5: _.label++; y = op[1]; op = [0]; continue;
1473
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
1474
+ default:
1475
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
1476
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
1477
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
1478
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
1479
+ if (t[2]) _.ops.pop();
1480
+ _.trys.pop(); continue;
1481
+ }
1482
+ op = body.call(thisArg, _);
1483
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
1484
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
1485
+ }
1486
+ }
1487
+
1488
+ function __values(o) {
1489
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
1490
+ if (m) return m.call(o);
1491
+ if (o && typeof o.length === "number") return {
1492
+ next: function () {
1493
+ if (o && i >= o.length) o = void 0;
1494
+ return { value: o && o[i++], done: !o };
1495
+ }
1496
+ };
1497
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
1498
+ }
1499
+
1500
+ function __read(o, n) {
1501
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
1502
+ if (!m) return o;
1503
+ var i = m.call(o), r, ar = [], e;
1504
+ try {
1505
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
1506
+ }
1507
+ catch (error) { e = { error: error }; }
1508
+ finally {
1509
+ try {
1510
+ if (r && !r.done && (m = i["return"])) m.call(i);
1511
+ }
1512
+ finally { if (e) throw e.error; }
1513
+ }
1514
+ return ar;
1515
+ }
1516
+
1517
+ function __spreadArray(to, from, pack) {
1518
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
1519
+ if (ar || !(i in from)) {
1520
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
1521
+ ar[i] = from[i];
1522
+ }
1523
+ }
1524
+ return to.concat(ar || Array.prototype.slice.call(from));
1525
+ }
1526
+
1527
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
1528
+ var e = new Error(message);
1529
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
1530
+ };
1531
+
1532
+ var findKey = function (obj, predicate) {
1533
+ var e_1, _a;
1534
+ if (predicate === void 0) { predicate = stubFlase; }
1535
+ var key;
1536
+ if (isMap(obj)) {
1537
+ try {
1538
+ for (var obj_1 = __values(obj), obj_1_1 = obj_1.next(); !obj_1_1.done; obj_1_1 = obj_1.next()) {
1539
+ var _b = __read(obj_1_1.value, 2), k = _b[0], v = _b[1];
1540
+ if (predicate(v, k)) {
1541
+ key = k;
1542
+ break;
1543
+ }
1544
+ }
1545
+ }
1546
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
1547
+ finally {
1548
+ try {
1549
+ if (obj_1_1 && !obj_1_1.done && (_a = obj_1.return)) _a.call(obj_1);
1550
+ }
1551
+ finally { if (e_1) throw e_1.error; }
1552
+ }
1553
+ }
1554
+ else if (isObject(obj)) {
1555
+ forEach(obj, function (v, k) {
1556
+ if (predicate(v, k)) {
1557
+ key = k;
1558
+ return false;
1559
+ }
1560
+ });
1561
+ }
1562
+ return key;
1563
+ };
1564
+
1433
1565
  function invert(object, predicate) {
1434
1566
  if (predicate === void 0) { predicate = stubTrue; }
1435
1567
  var _keys = allKeys(object);
@@ -1697,6 +1829,38 @@
1697
1829
 
1698
1830
  var gte = createOperation(baseGte);
1699
1831
 
1832
+ var guard = function (fn, shouldGuard) {
1833
+ var _guard = function (err) {
1834
+ if (shouldGuard && !shouldGuard(err)) {
1835
+ throw err;
1836
+ }
1837
+ return undefined;
1838
+ };
1839
+ try {
1840
+ var result = fn();
1841
+ return isPromiseLike(result) ? result.catch(_guard) : result;
1842
+ }
1843
+ catch (err) {
1844
+ return _guard(err);
1845
+ }
1846
+ };
1847
+
1848
+ var list = function (n, iteratee) {
1849
+ if (iteratee === void 0) { iteratee = identity; }
1850
+ if (n < 1 || n > MAX_SAFE_INTEGER) {
1851
+ return [];
1852
+ }
1853
+ var index = 0;
1854
+ var length = mathMin(isInteger(n) ? n : mathFloor(isFinite(n) ? n : 0), MAX_ARRAY_LENGTH);
1855
+ var result = Array(length);
1856
+ var func = typeof iteratee === 'function' ? iteratee : identity;
1857
+ while (index < length) {
1858
+ result[index] = func(index);
1859
+ index++;
1860
+ }
1861
+ return result;
1862
+ };
1863
+
1700
1864
  var lt = createOperation(baseLt);
1701
1865
 
1702
1866
  var lte = createOperation(baseLte);
@@ -1744,22 +1908,69 @@
1744
1908
  });
1745
1909
  }
1746
1910
 
1747
- var list = function (n, iteratee) {
1748
- if (iteratee === void 0) { iteratee = identity; }
1749
- if (n < 1 || n > MAX_SAFE_INTEGER) {
1750
- return [];
1751
- }
1752
- var index = 0;
1753
- var length = mathMin(isInteger(n) ? n : mathFloor(isFinite(n) ? n : 0), MAX_ARRAY_LENGTH);
1754
- var result = Array(length);
1755
- var func = typeof iteratee === 'function' ? iteratee : identity;
1756
- while (index < length) {
1757
- result[index] = func(index);
1758
- index++;
1759
- }
1760
- return result;
1911
+ var tryit = function (fn) {
1912
+ return function () {
1913
+ var args = [];
1914
+ for (var _i = 0; _i < arguments.length; _i++) {
1915
+ args[_i] = arguments[_i];
1916
+ }
1917
+ try {
1918
+ var result = fn.apply(void 0, __spreadArray([], __read(args), false));
1919
+ if (isPromiseLike(result)) {
1920
+ return result
1921
+ .then(function (res) {
1922
+ return [null, res];
1923
+ })
1924
+ .catch(function (err) {
1925
+ return [err, nativeUndefined];
1926
+ });
1927
+ }
1928
+ return [null, result];
1929
+ }
1930
+ catch (err) {
1931
+ return [err, nativeUndefined];
1932
+ }
1933
+ };
1761
1934
  };
1762
1935
 
1936
+ function retry(fn, options) {
1937
+ return __awaiter(this, void 0, void 0, function () {
1938
+ var _a, _b, times, delay, backoff, exit, i, _c, err, result;
1939
+ return __generator(this, function (_d) {
1940
+ switch (_d.label) {
1941
+ case 0:
1942
+ _a = options || {}, _b = _a.times, times = _b === void 0 ? 3 : _b, delay = _a.delay, backoff = _a.backoff, exit = _a.exit;
1943
+ i = 1;
1944
+ _d.label = 1;
1945
+ case 1:
1946
+ if (!(i <= times)) return [3, 7];
1947
+ return [4, tryit(fn)()];
1948
+ case 2:
1949
+ _c = __read.apply(void 0, [_d.sent(), 2]), err = _c[0], result = _c[1];
1950
+ if (!err)
1951
+ return [2, result];
1952
+ if ((exit && exit(err, i)) || i === times)
1953
+ throw err;
1954
+ if (!delay) return [3, 4];
1955
+ return [4, sleep(delay)];
1956
+ case 3:
1957
+ _d.sent();
1958
+ _d.label = 4;
1959
+ case 4:
1960
+ if (!backoff) return [3, 6];
1961
+ return [4, sleep(backoff(i))];
1962
+ case 5:
1963
+ _d.sent();
1964
+ _d.label = 6;
1965
+ case 6:
1966
+ i++;
1967
+ return [3, 1];
1968
+ case 7: return [2];
1969
+ }
1970
+ });
1971
+ });
1972
+ }
1973
+
1763
1974
  var times = list;
1764
1975
 
1765
1976
  function toSafeInteger(value) {
@@ -1813,6 +2024,7 @@
1813
2024
  exports.every = every;
1814
2025
  exports.filter = filter;
1815
2026
  exports.find = find;
2027
+ exports.findKey = findKey;
1816
2028
  exports.floor = floor;
1817
2029
  exports.forEach = forEach;
1818
2030
  exports.forEachRight = forEachRight;
@@ -1820,6 +2032,7 @@
1820
2032
  exports.groupBy = groupBy;
1821
2033
  exports.gt = gt;
1822
2034
  exports.gte = gte;
2035
+ exports.guard = guard;
1823
2036
  exports.identity = identity;
1824
2037
  exports.inRange = inRange;
1825
2038
  exports.intersection = intersection;
@@ -1897,6 +2110,7 @@
1897
2110
  exports.range = range;
1898
2111
  exports.reduce = reduce;
1899
2112
  exports.reduceRight = reduceRight;
2113
+ exports.retry = retry;
1900
2114
  exports.root = root;
1901
2115
  exports.round = round;
1902
2116
  exports.shuffle = shuffle;
@@ -1911,6 +2125,7 @@
1911
2125
  exports.toNumber = toNumber;
1912
2126
  exports.toSafeInteger = toSafeInteger;
1913
2127
  exports.toString = toString;
2128
+ exports.tryit = tryit;
1914
2129
  exports.unescape = unescape;
1915
2130
  exports.union = union;
1916
2131
  exports.uniq = uniq;