@dxos/util 0.8.4-main.7ace549 → 0.8.4-main.8360d9e660
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/dist/lib/browser/index.mjs +155 -58
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +155 -58
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/array.d.ts +3 -2
- package/dist/types/src/array.d.ts.map +1 -1
- package/dist/types/src/circular-buffer.d.ts +1 -0
- package/dist/types/src/circular-buffer.d.ts.map +1 -1
- package/dist/types/src/deep.d.ts +0 -3
- package/dist/types/src/deep.d.ts.map +1 -1
- package/dist/types/src/defer.d.ts +1 -1
- package/dist/types/src/defer.d.ts.map +1 -1
- package/dist/types/src/filename.d.ts +9 -0
- package/dist/types/src/filename.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +2 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/platform.d.ts +4 -1
- package/dist/types/src/platform.d.ts.map +1 -1
- package/dist/types/src/retry.d.ts +32 -0
- package/dist/types/src/retry.d.ts.map +1 -0
- package/dist/types/src/safe-parse.d.ts +7 -4
- package/dist/types/src/safe-parse.d.ts.map +1 -1
- package/dist/types/src/safe-stringify.d.ts +10 -1
- package/dist/types/src/safe-stringify.d.ts.map +1 -1
- package/dist/types/src/safe-stringify.test.d.ts +2 -0
- package/dist/types/src/safe-stringify.test.d.ts.map +1 -0
- package/dist/types/src/to-fallback.d.ts +18 -4
- package/dist/types/src/to-fallback.d.ts.map +1 -1
- package/dist/types/src/types.d.ts +19 -5
- package/dist/types/src/types.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +11 -10
- package/src/array.ts +9 -2
- package/src/circular-buffer.test.ts +26 -0
- package/src/circular-buffer.ts +5 -0
- package/src/deep.ts +2 -6
- package/src/defer.ts +1 -1
- package/src/filename.ts +16 -0
- package/src/index.ts +2 -0
- package/src/platform.ts +35 -3
- package/src/retry.ts +74 -0
- package/src/safe-parse.ts +27 -16
- package/src/safe-stringify.test.ts +96 -0
- package/src/safe-stringify.ts +74 -25
- package/src/to-fallback.ts +39 -156
- package/src/types.test.ts +11 -1
- package/src/types.ts +30 -10
- package/dist/types/src/explicit-resource-management-polyfill.d.ts +0 -1
- package/dist/types/src/explicit-resource-management-polyfill.d.ts.map +0 -1
- package/src/explicit-resource-management-polyfill.ts +0 -13
|
@@ -97,6 +97,14 @@ var intersectBy = (arrays, selector) => {
|
|
|
97
97
|
return lookups.every((lookup) => lookup.has(key));
|
|
98
98
|
});
|
|
99
99
|
};
|
|
100
|
+
var coerceArray = (arr) => {
|
|
101
|
+
if (arr === void 0) {
|
|
102
|
+
return [];
|
|
103
|
+
}
|
|
104
|
+
return Array.isArray(arr) ? arr : [
|
|
105
|
+
arr
|
|
106
|
+
];
|
|
107
|
+
};
|
|
100
108
|
|
|
101
109
|
// src/assume.ts
|
|
102
110
|
function assumeType(value) {
|
|
@@ -327,6 +335,10 @@ var CircularBuffer = class {
|
|
|
327
335
|
get elementCount() {
|
|
328
336
|
return this._elementCount;
|
|
329
337
|
}
|
|
338
|
+
clear() {
|
|
339
|
+
this._nextIndex = 0;
|
|
340
|
+
this._elementCount = 0;
|
|
341
|
+
}
|
|
330
342
|
getLast() {
|
|
331
343
|
if (this._elementCount === 0) {
|
|
332
344
|
return void 0;
|
|
@@ -560,14 +572,12 @@ var makeMap = (keyProjection) => class BoundComplexMap extends ComplexMap {
|
|
|
560
572
|
};
|
|
561
573
|
|
|
562
574
|
// src/deep.ts
|
|
563
|
-
import get from "lodash.get";
|
|
564
|
-
import set from "lodash.set";
|
|
565
575
|
import { invariant as invariant4 } from "@dxos/invariant";
|
|
566
576
|
var __dxlog_file4 = "/__w/dxos/dxos/packages/common/util/src/deep.ts";
|
|
567
577
|
var setDeep = (obj, path, value) => {
|
|
568
578
|
invariant4(path.length > 0, void 0, {
|
|
569
579
|
F: __dxlog_file4,
|
|
570
|
-
L:
|
|
580
|
+
L: 12,
|
|
571
581
|
S: void 0,
|
|
572
582
|
A: [
|
|
573
583
|
"path.length > 0",
|
|
@@ -597,6 +607,7 @@ var getDeep = (obj, path) => {
|
|
|
597
607
|
var deferFunction = (fnProvider) => (...args) => fnProvider()(...args);
|
|
598
608
|
|
|
599
609
|
// src/defer.ts
|
|
610
|
+
import "@hazae41/symbol-dispose-polyfill";
|
|
600
611
|
var defer = (fn) => new DeferGuard(fn);
|
|
601
612
|
var DeferGuard = class {
|
|
602
613
|
_fn;
|
|
@@ -657,6 +668,12 @@ var MapEntry = class {
|
|
|
657
668
|
}
|
|
658
669
|
};
|
|
659
670
|
|
|
671
|
+
// src/filename.ts
|
|
672
|
+
var createFilename = ({ parts = [], ext, date = /* @__PURE__ */ new Date() }) => [
|
|
673
|
+
date.toISOString().replace(/[:.]/g, "-"),
|
|
674
|
+
...parts
|
|
675
|
+
].join("_") + (ext ? `.${ext}` : "");
|
|
676
|
+
|
|
660
677
|
// src/for-each-async.ts
|
|
661
678
|
var forEachAsync = (items, fn) => Promise.all(items.map(fn));
|
|
662
679
|
|
|
@@ -1003,7 +1020,7 @@ var defaultMap = (map, key, def) => {
|
|
|
1003
1020
|
};
|
|
1004
1021
|
|
|
1005
1022
|
// src/instance-id.ts
|
|
1006
|
-
var symbol = Symbol.for("dxos.instance-contexts");
|
|
1023
|
+
var symbol = /* @__PURE__ */ Symbol.for("dxos.instance-contexts");
|
|
1007
1024
|
var instanceContexts = globalThis[symbol] ??= /* @__PURE__ */ new WeakMap();
|
|
1008
1025
|
var getPrototypeSpecificInstanceId = (instance) => {
|
|
1009
1026
|
const prototype = Object.getPrototypeOf(instance);
|
|
@@ -1352,7 +1369,18 @@ var omit = (obj, keys2) => {
|
|
|
1352
1369
|
|
|
1353
1370
|
// src/platform.ts
|
|
1354
1371
|
var isNode = () => typeof process !== "undefined" && process.versions != null && process.versions.node != null;
|
|
1355
|
-
var
|
|
1372
|
+
var isBun = () => globalThis.Bun !== void 0;
|
|
1373
|
+
var isTauri = () => !!globalThis.__TAURI__;
|
|
1374
|
+
var isMobile = () => {
|
|
1375
|
+
let check = false;
|
|
1376
|
+
(function(a) {
|
|
1377
|
+
if (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4))) {
|
|
1378
|
+
check = true;
|
|
1379
|
+
}
|
|
1380
|
+
})(navigator.userAgent || navigator.vendor || window.opera);
|
|
1381
|
+
return check;
|
|
1382
|
+
};
|
|
1383
|
+
var isMobileOrTablet = () => {
|
|
1356
1384
|
let check = false;
|
|
1357
1385
|
((a) => {
|
|
1358
1386
|
if (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4))) {
|
|
@@ -1374,7 +1402,7 @@ var iosCheck = () => {
|
|
|
1374
1402
|
};
|
|
1375
1403
|
var safariCheck = () => typeof navigator !== "undefined" && /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
|
|
1376
1404
|
var getHostPlatform = () => {
|
|
1377
|
-
if (!("navigator" in
|
|
1405
|
+
if (!("navigator" in globalThis)) {
|
|
1378
1406
|
return "unknown";
|
|
1379
1407
|
}
|
|
1380
1408
|
const platform = (navigator.userAgentData?.platform || navigator.platform)?.toLowerCase();
|
|
@@ -1569,7 +1597,7 @@ var safeAwaitAll = async (source, taskFactory, onError) => {
|
|
|
1569
1597
|
};
|
|
1570
1598
|
|
|
1571
1599
|
// src/safe-instanceof.ts
|
|
1572
|
-
var instanceTag = Symbol("instanceTag");
|
|
1600
|
+
var instanceTag = /* @__PURE__ */ Symbol("instanceTag");
|
|
1573
1601
|
var safeInstanceof = (tag) => (target) => {
|
|
1574
1602
|
target.prototype[instanceTag] = tag;
|
|
1575
1603
|
Object.defineProperty(target.prototype, Symbol.hasInstance, {
|
|
@@ -1581,57 +1609,88 @@ var safeInstanceof = (tag) => (target) => {
|
|
|
1581
1609
|
};
|
|
1582
1610
|
|
|
1583
1611
|
// src/safe-parse.ts
|
|
1584
|
-
|
|
1612
|
+
function safeParseInt(str, defaultValue) {
|
|
1585
1613
|
try {
|
|
1586
|
-
const
|
|
1587
|
-
return isNaN(
|
|
1614
|
+
const value = parseInt(str ?? "");
|
|
1615
|
+
return isNaN(value) ? defaultValue : value;
|
|
1588
1616
|
} catch {
|
|
1589
1617
|
return defaultValue;
|
|
1590
1618
|
}
|
|
1591
|
-
}
|
|
1592
|
-
|
|
1619
|
+
}
|
|
1620
|
+
function safeParseFloat(str, defaultValue) {
|
|
1593
1621
|
try {
|
|
1594
|
-
|
|
1622
|
+
const value = parseFloat(str ?? "");
|
|
1623
|
+
return isNaN(value) ? defaultValue : value;
|
|
1595
1624
|
} catch {
|
|
1596
|
-
return defaultValue
|
|
1625
|
+
return defaultValue;
|
|
1597
1626
|
}
|
|
1598
|
-
}
|
|
1599
|
-
var safeParseJson = (
|
|
1600
|
-
if (
|
|
1627
|
+
}
|
|
1628
|
+
var safeParseJson = (str, defaultValue) => {
|
|
1629
|
+
if (str && str.length > 0) {
|
|
1601
1630
|
try {
|
|
1602
|
-
return JSON.parse(
|
|
1631
|
+
return JSON.parse(str);
|
|
1603
1632
|
} catch {
|
|
1604
1633
|
}
|
|
1605
1634
|
}
|
|
1606
1635
|
return defaultValue;
|
|
1607
1636
|
};
|
|
1637
|
+
var safeUrl = (str) => {
|
|
1638
|
+
try {
|
|
1639
|
+
return new URL(str ?? "");
|
|
1640
|
+
} catch {
|
|
1641
|
+
return void 0;
|
|
1642
|
+
}
|
|
1643
|
+
};
|
|
1608
1644
|
|
|
1609
1645
|
// src/safe-stringify.ts
|
|
1610
1646
|
var SKIP = Object.freeze({});
|
|
1611
1647
|
function safeStringify(obj, filter = defaultFilter, indent = 2) {
|
|
1612
|
-
const seen = /* @__PURE__ */ new
|
|
1648
|
+
const seen = /* @__PURE__ */ new WeakMap();
|
|
1613
1649
|
function replacer(key, value) {
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1650
|
+
try {
|
|
1651
|
+
let path = key;
|
|
1652
|
+
if (!key) {
|
|
1653
|
+
path = "$";
|
|
1654
|
+
if (value != null && typeof value === "object") {
|
|
1655
|
+
seen.set(value, path);
|
|
1656
|
+
}
|
|
1657
|
+
return value;
|
|
1658
|
+
} else if (this) {
|
|
1659
|
+
const parentPath = seen.get(this);
|
|
1660
|
+
path = parentPath ? `${parentPath}.${key}` : key;
|
|
1617
1661
|
}
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
return v2 === SKIP ? void 0 : v2;
|
|
1662
|
+
if (value == null) {
|
|
1663
|
+
return value;
|
|
1664
|
+
}
|
|
1665
|
+
if (typeof value === "function") {
|
|
1666
|
+
return void 0;
|
|
1624
1667
|
}
|
|
1668
|
+
if (typeof value === "object" && Object.getPrototypeOf(value) !== Object.prototype && !Array.isArray(value)) {
|
|
1669
|
+
return void 0;
|
|
1670
|
+
}
|
|
1671
|
+
if (typeof value === "object" && value !== null) {
|
|
1672
|
+
const exists = seen.get(value);
|
|
1673
|
+
if (exists) {
|
|
1674
|
+
return `[${path} => ${exists}]`;
|
|
1675
|
+
}
|
|
1676
|
+
seen.set(value, path);
|
|
1677
|
+
}
|
|
1678
|
+
if (filter) {
|
|
1679
|
+
const filteredValue = filter?.(key, value);
|
|
1680
|
+
if (filteredValue !== void 0) {
|
|
1681
|
+
return filteredValue === SKIP ? void 0 : filteredValue;
|
|
1682
|
+
}
|
|
1683
|
+
}
|
|
1684
|
+
return value;
|
|
1685
|
+
} catch (error) {
|
|
1686
|
+
return `ERROR: ${error.message}`;
|
|
1625
1687
|
}
|
|
1626
|
-
return value;
|
|
1627
1688
|
}
|
|
1628
|
-
let result = "";
|
|
1629
1689
|
try {
|
|
1630
|
-
|
|
1690
|
+
return JSON.stringify(obj, replacer, indent);
|
|
1631
1691
|
} catch (error) {
|
|
1632
|
-
|
|
1692
|
+
return `ERROR: ${error.message}`;
|
|
1633
1693
|
}
|
|
1634
|
-
return result;
|
|
1635
1694
|
}
|
|
1636
1695
|
var createReplacer = ({ omit: omit2, parse, maxDepth, maxArrayLen, maxStringLen } = {}) => {
|
|
1637
1696
|
let currentDepth = 0;
|
|
@@ -1644,7 +1703,10 @@ var createReplacer = ({ omit: omit2, parse, maxDepth, maxArrayLen, maxStringLen
|
|
|
1644
1703
|
currentDepth = parentDepth + 1;
|
|
1645
1704
|
}
|
|
1646
1705
|
if (typeof value === "function") {
|
|
1647
|
-
return
|
|
1706
|
+
return SKIP;
|
|
1707
|
+
}
|
|
1708
|
+
if (maxArrayLen != null && Array.isArray(value) && value.length > maxArrayLen) {
|
|
1709
|
+
return `[length: ${value.length}]`;
|
|
1648
1710
|
}
|
|
1649
1711
|
if (value && typeof value === "object") {
|
|
1650
1712
|
depthMap.set(value, currentDepth);
|
|
@@ -1653,7 +1715,7 @@ var createReplacer = ({ omit: omit2, parse, maxDepth, maxArrayLen, maxStringLen
|
|
|
1653
1715
|
}
|
|
1654
1716
|
}
|
|
1655
1717
|
if (omit2?.includes(key)) {
|
|
1656
|
-
return
|
|
1718
|
+
return SKIP;
|
|
1657
1719
|
}
|
|
1658
1720
|
if (parse?.includes(key) && typeof value === "string") {
|
|
1659
1721
|
try {
|
|
@@ -1662,9 +1724,6 @@ var createReplacer = ({ omit: omit2, parse, maxDepth, maxArrayLen, maxStringLen
|
|
|
1662
1724
|
return value;
|
|
1663
1725
|
}
|
|
1664
1726
|
}
|
|
1665
|
-
if (maxArrayLen != null && Array.isArray(value) && value.length > maxArrayLen) {
|
|
1666
|
-
return `[length: ${value.length}]`;
|
|
1667
|
-
}
|
|
1668
1727
|
if (maxStringLen != null && typeof value === "string" && value.length > maxStringLen) {
|
|
1669
1728
|
return value.slice(0, maxStringLen) + "...";
|
|
1670
1729
|
}
|
|
@@ -1791,18 +1850,6 @@ var throwUnhandledError = (error) => {
|
|
|
1791
1850
|
|
|
1792
1851
|
// src/to-fallback.ts
|
|
1793
1852
|
var idEmoji = [
|
|
1794
|
-
// When changing this set, please check the result in a console or e.g. RunKit (https://runkit.com/thure/642214441dd6ae000855a8de)
|
|
1795
|
-
// Emoji sometimes use a combination of code points, and some code points aren't visible on their own, so by adding or deleting you may unintentionally create non-visible items.
|
|
1796
|
-
// This set was chosen from the characters in Unicode Emoji v15.0 based on the following criteria:
|
|
1797
|
-
// – not people or isolated anthropomorphic faces
|
|
1798
|
-
// – not flags
|
|
1799
|
-
// – more concrete than abstract
|
|
1800
|
-
// – less culturally specific
|
|
1801
|
-
// – less easily confused with another emoji in the set
|
|
1802
|
-
// – requires less special knowledge to identify
|
|
1803
|
-
// – less likely to evoke negative feelings (no meat, no drugs, no weapons, etc)
|
|
1804
|
-
// – less common as a signifier in UX
|
|
1805
|
-
// NOTE that this is intentionally an array of strings because of the way emoji graphemes work.
|
|
1806
1853
|
"\u{1F47B}",
|
|
1807
1854
|
"\u{1F479}",
|
|
1808
1855
|
"\u{1F47D}",
|
|
@@ -1938,17 +1985,18 @@ var idEmoji = [
|
|
|
1938
1985
|
];
|
|
1939
1986
|
var idHue = [
|
|
1940
1987
|
"red",
|
|
1941
|
-
|
|
1988
|
+
"orange",
|
|
1942
1989
|
"amber",
|
|
1943
|
-
|
|
1990
|
+
"yellow",
|
|
1944
1991
|
"lime",
|
|
1945
1992
|
"green",
|
|
1946
1993
|
"emerald",
|
|
1947
1994
|
"teal",
|
|
1948
1995
|
"cyan",
|
|
1949
|
-
//
|
|
1950
|
-
// '
|
|
1951
|
-
// '
|
|
1996
|
+
// Omit colors similar to primary accent.
|
|
1997
|
+
// 'sky' as const,
|
|
1998
|
+
// 'blue' as const,
|
|
1999
|
+
// 'indigo' as const,
|
|
1952
2000
|
"violet",
|
|
1953
2001
|
"purple",
|
|
1954
2002
|
"fuchsia",
|
|
@@ -2108,6 +2156,12 @@ var arrayMove = (array, from, to) => {
|
|
|
2108
2156
|
array.splice(to < 0 ? array.length + to : to, 0, array.splice(from, 1)[0]);
|
|
2109
2157
|
return array;
|
|
2110
2158
|
};
|
|
2159
|
+
function arraySwap(array, from, to) {
|
|
2160
|
+
const current = array[from];
|
|
2161
|
+
array[from] = array[to];
|
|
2162
|
+
array[to] = current;
|
|
2163
|
+
return array;
|
|
2164
|
+
}
|
|
2111
2165
|
|
|
2112
2166
|
// src/unit.ts
|
|
2113
2167
|
var createFormat = (unit) => {
|
|
@@ -2328,6 +2382,43 @@ var formatErrorWithCauses = (error) => {
|
|
|
2328
2382
|
}
|
|
2329
2383
|
return lines.join("\n\n");
|
|
2330
2384
|
};
|
|
2385
|
+
|
|
2386
|
+
// src/retry.ts
|
|
2387
|
+
var DEFAULT_RETRY_OPTIONS = {
|
|
2388
|
+
count: 3,
|
|
2389
|
+
delayMs: 100,
|
|
2390
|
+
exponent: 2,
|
|
2391
|
+
retryOnError: async () => true,
|
|
2392
|
+
retryOnValue: async () => false
|
|
2393
|
+
};
|
|
2394
|
+
var retry = async (options, cb) => {
|
|
2395
|
+
const fullOptions = {
|
|
2396
|
+
...DEFAULT_RETRY_OPTIONS,
|
|
2397
|
+
...options
|
|
2398
|
+
};
|
|
2399
|
+
let numRetries = 0, currentDelay = fullOptions.delayMs;
|
|
2400
|
+
while (true) {
|
|
2401
|
+
let result;
|
|
2402
|
+
try {
|
|
2403
|
+
result = await cb();
|
|
2404
|
+
} catch (err) {
|
|
2405
|
+
if (numRetries > fullOptions.count || !await fullOptions.retryOnError(err)) {
|
|
2406
|
+
throw err;
|
|
2407
|
+
}
|
|
2408
|
+
await new Promise((resolve) => setTimeout(resolve, currentDelay));
|
|
2409
|
+
currentDelay *= fullOptions.exponent;
|
|
2410
|
+
numRetries++;
|
|
2411
|
+
continue;
|
|
2412
|
+
}
|
|
2413
|
+
if (!await fullOptions.retryOnValue(result)) {
|
|
2414
|
+
return result;
|
|
2415
|
+
}
|
|
2416
|
+
await new Promise((resolve) => setTimeout(resolve, currentDelay));
|
|
2417
|
+
currentDelay *= fullOptions.exponent;
|
|
2418
|
+
numRetries++;
|
|
2419
|
+
continue;
|
|
2420
|
+
}
|
|
2421
|
+
};
|
|
2331
2422
|
export {
|
|
2332
2423
|
BitField,
|
|
2333
2424
|
Callback,
|
|
@@ -2344,6 +2435,7 @@ export {
|
|
|
2344
2435
|
WeakDictionary,
|
|
2345
2436
|
accessBy,
|
|
2346
2437
|
arrayMove,
|
|
2438
|
+
arraySwap,
|
|
2347
2439
|
arrayToBuffer,
|
|
2348
2440
|
arrayToHex,
|
|
2349
2441
|
arrayToString,
|
|
@@ -2355,12 +2447,14 @@ export {
|
|
|
2355
2447
|
chunkArray,
|
|
2356
2448
|
clamp,
|
|
2357
2449
|
clearUndefined,
|
|
2450
|
+
coerceArray,
|
|
2358
2451
|
compareMulti,
|
|
2359
2452
|
compareObject,
|
|
2360
2453
|
compareScalar,
|
|
2361
2454
|
compareString,
|
|
2362
2455
|
createBinder,
|
|
2363
2456
|
createBucketReducer,
|
|
2457
|
+
createFilename,
|
|
2364
2458
|
createGroupReducer,
|
|
2365
2459
|
createReplacer,
|
|
2366
2460
|
createSetDispatch,
|
|
@@ -2381,7 +2475,6 @@ export {
|
|
|
2381
2475
|
exponentialBackoffInterval,
|
|
2382
2476
|
forEachAsync,
|
|
2383
2477
|
formatErrorWithCauses,
|
|
2384
|
-
get,
|
|
2385
2478
|
getAsyncProviderValue,
|
|
2386
2479
|
getDate,
|
|
2387
2480
|
getDebugName,
|
|
@@ -2401,8 +2494,12 @@ export {
|
|
|
2401
2494
|
intersectBy,
|
|
2402
2495
|
intersection,
|
|
2403
2496
|
iosCheck,
|
|
2497
|
+
isBun,
|
|
2498
|
+
isMobile,
|
|
2499
|
+
isMobileOrTablet,
|
|
2404
2500
|
isNode,
|
|
2405
2501
|
isNonNullable,
|
|
2502
|
+
isTauri,
|
|
2406
2503
|
isTruthy,
|
|
2407
2504
|
joinTables,
|
|
2408
2505
|
jsonKeyReplacer,
|
|
@@ -2418,7 +2515,6 @@ export {
|
|
|
2418
2515
|
makeSet,
|
|
2419
2516
|
mapValues,
|
|
2420
2517
|
median,
|
|
2421
|
-
mobileAndTabletCheck,
|
|
2422
2518
|
numericalValues,
|
|
2423
2519
|
omit,
|
|
2424
2520
|
orderKeys,
|
|
@@ -2434,6 +2530,7 @@ export {
|
|
|
2434
2530
|
removeBy,
|
|
2435
2531
|
removeProperties,
|
|
2436
2532
|
removeUndefinedProperties,
|
|
2533
|
+
retry,
|
|
2437
2534
|
safariCheck,
|
|
2438
2535
|
safeAwaitAll,
|
|
2439
2536
|
safeInstanceof,
|
|
@@ -2441,7 +2538,7 @@ export {
|
|
|
2441
2538
|
safeParseInt,
|
|
2442
2539
|
safeParseJson,
|
|
2443
2540
|
safeStringify,
|
|
2444
|
-
|
|
2541
|
+
safeUrl,
|
|
2445
2542
|
setDeep,
|
|
2446
2543
|
sortKeys,
|
|
2447
2544
|
stringToArray,
|