@dxos/util 0.8.4-main.7ace549 → 0.8.4-main.937b3ca
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 +126 -33
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +126 -33
- 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 +2 -1
- package/dist/types/src/array.d.ts.map +1 -1
- 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 +6 -4
- package/dist/types/src/safe-parse.d.ts.map +1 -1
- package/dist/types/src/safe-stringify.d.ts +9 -0
- package/dist/types/src/safe-stringify.d.ts.map +1 -1
- package/dist/types/src/types.d.ts +18 -4
- package/dist/types/src/types.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +11 -6
- package/src/array.ts +8 -1
- package/src/deep.ts +2 -0
- package/src/defer.ts +1 -1
- package/src/filename.ts +16 -0
- package/src/index.ts +2 -0
- package/src/platform.ts +11 -1
- package/src/retry.ts +74 -0
- package/src/safe-parse.ts +19 -16
- package/src/safe-stringify.ts +65 -23
- package/src/types.test.ts +11 -1
- package/src/types.ts +29 -9
- 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) {
|
|
@@ -597,6 +605,7 @@ var getDeep = (obj, path) => {
|
|
|
597
605
|
var deferFunction = (fnProvider) => (...args) => fnProvider()(...args);
|
|
598
606
|
|
|
599
607
|
// src/defer.ts
|
|
608
|
+
import "@hazae41/symbol-dispose-polyfill";
|
|
600
609
|
var defer = (fn) => new DeferGuard(fn);
|
|
601
610
|
var DeferGuard = class {
|
|
602
611
|
_fn;
|
|
@@ -657,6 +666,12 @@ var MapEntry = class {
|
|
|
657
666
|
}
|
|
658
667
|
};
|
|
659
668
|
|
|
669
|
+
// src/filename.ts
|
|
670
|
+
var createFilename = ({ parts = [], ext, date = /* @__PURE__ */ new Date() }) => [
|
|
671
|
+
date.toISOString().replace(/[:.]/g, "-"),
|
|
672
|
+
...parts
|
|
673
|
+
].join("_") + (ext ? `.${ext}` : "");
|
|
674
|
+
|
|
660
675
|
// src/for-each-async.ts
|
|
661
676
|
var forEachAsync = (items, fn) => Promise.all(items.map(fn));
|
|
662
677
|
|
|
@@ -1352,7 +1367,18 @@ var omit = (obj, keys2) => {
|
|
|
1352
1367
|
|
|
1353
1368
|
// src/platform.ts
|
|
1354
1369
|
var isNode = () => typeof process !== "undefined" && process.versions != null && process.versions.node != null;
|
|
1355
|
-
var
|
|
1370
|
+
var isBun = () => globalThis.Bun !== void 0;
|
|
1371
|
+
var isTauri = () => !!globalThis.__TAURI__;
|
|
1372
|
+
var isMobile = () => {
|
|
1373
|
+
let check = false;
|
|
1374
|
+
(function(a) {
|
|
1375
|
+
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))) {
|
|
1376
|
+
check = true;
|
|
1377
|
+
}
|
|
1378
|
+
})(navigator.userAgent || navigator.vendor || window.opera);
|
|
1379
|
+
return check;
|
|
1380
|
+
};
|
|
1381
|
+
var isMobileOrTablet = () => {
|
|
1356
1382
|
let check = false;
|
|
1357
1383
|
((a) => {
|
|
1358
1384
|
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))) {
|
|
@@ -1581,25 +1607,26 @@ var safeInstanceof = (tag) => (target) => {
|
|
|
1581
1607
|
};
|
|
1582
1608
|
|
|
1583
1609
|
// src/safe-parse.ts
|
|
1584
|
-
|
|
1610
|
+
function safeParseInt(str, defaultValue) {
|
|
1585
1611
|
try {
|
|
1586
|
-
const
|
|
1587
|
-
return isNaN(
|
|
1612
|
+
const value = parseInt(str ?? "");
|
|
1613
|
+
return isNaN(value) ? defaultValue : value;
|
|
1588
1614
|
} catch {
|
|
1589
1615
|
return defaultValue;
|
|
1590
1616
|
}
|
|
1591
|
-
}
|
|
1592
|
-
|
|
1617
|
+
}
|
|
1618
|
+
function safeParseFloat(str, defaultValue) {
|
|
1593
1619
|
try {
|
|
1594
|
-
|
|
1620
|
+
const value = parseFloat(str ?? "");
|
|
1621
|
+
return isNaN(value) ? defaultValue : value;
|
|
1595
1622
|
} catch {
|
|
1596
|
-
return defaultValue
|
|
1623
|
+
return defaultValue;
|
|
1597
1624
|
}
|
|
1598
|
-
}
|
|
1599
|
-
var safeParseJson = (
|
|
1600
|
-
if (
|
|
1625
|
+
}
|
|
1626
|
+
var safeParseJson = (str, defaultValue) => {
|
|
1627
|
+
if (str && str.length > 0) {
|
|
1601
1628
|
try {
|
|
1602
|
-
return JSON.parse(
|
|
1629
|
+
return JSON.parse(str);
|
|
1603
1630
|
} catch {
|
|
1604
1631
|
}
|
|
1605
1632
|
}
|
|
@@ -1609,29 +1636,45 @@ var safeParseJson = (data, defaultValue) => {
|
|
|
1609
1636
|
// src/safe-stringify.ts
|
|
1610
1637
|
var SKIP = Object.freeze({});
|
|
1611
1638
|
function safeStringify(obj, filter = defaultFilter, indent = 2) {
|
|
1612
|
-
const seen = /* @__PURE__ */ new
|
|
1639
|
+
const seen = /* @__PURE__ */ new WeakMap();
|
|
1613
1640
|
function replacer(key, value) {
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1641
|
+
try {
|
|
1642
|
+
let path = key;
|
|
1643
|
+
if (!key) {
|
|
1644
|
+
path = "$";
|
|
1645
|
+
return value;
|
|
1646
|
+
} else if (this) {
|
|
1647
|
+
const parentPath = seen.get(this);
|
|
1648
|
+
path = parentPath ? `${parentPath}.${key}` : key;
|
|
1617
1649
|
}
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1650
|
+
if (value == null) {
|
|
1651
|
+
return value;
|
|
1652
|
+
}
|
|
1653
|
+
if (typeof value === "function") {
|
|
1654
|
+
return void 0;
|
|
1655
|
+
}
|
|
1656
|
+
if (typeof value === "object" && Object.getPrototypeOf(value) !== Object.prototype) {
|
|
1657
|
+
return void 0;
|
|
1624
1658
|
}
|
|
1659
|
+
if (typeof value === "object" && value !== null) {
|
|
1660
|
+
const exists = seen.get(value);
|
|
1661
|
+
if (exists) {
|
|
1662
|
+
return `[${path} => ${exists}]`;
|
|
1663
|
+
}
|
|
1664
|
+
seen.set(value, path);
|
|
1665
|
+
}
|
|
1666
|
+
if (filter) {
|
|
1667
|
+
const filteredValue = filter?.(key, value);
|
|
1668
|
+
if (filteredValue !== void 0) {
|
|
1669
|
+
return filteredValue === SKIP ? void 0 : filteredValue;
|
|
1670
|
+
}
|
|
1671
|
+
}
|
|
1672
|
+
return value;
|
|
1673
|
+
} catch (error) {
|
|
1674
|
+
return `ERROR: ${error.message}`;
|
|
1625
1675
|
}
|
|
1626
|
-
return value;
|
|
1627
1676
|
}
|
|
1628
|
-
|
|
1629
|
-
try {
|
|
1630
|
-
result = JSON.stringify(obj, replacer, indent);
|
|
1631
|
-
} catch (error) {
|
|
1632
|
-
result = `Error: ${error.message}`;
|
|
1633
|
-
}
|
|
1634
|
-
return result;
|
|
1677
|
+
return JSON.stringify(obj, replacer, indent);
|
|
1635
1678
|
}
|
|
1636
1679
|
var createReplacer = ({ omit: omit2, parse, maxDepth, maxArrayLen, maxStringLen } = {}) => {
|
|
1637
1680
|
let currentDepth = 0;
|
|
@@ -1644,7 +1687,7 @@ var createReplacer = ({ omit: omit2, parse, maxDepth, maxArrayLen, maxStringLen
|
|
|
1644
1687
|
currentDepth = parentDepth + 1;
|
|
1645
1688
|
}
|
|
1646
1689
|
if (typeof value === "function") {
|
|
1647
|
-
return
|
|
1690
|
+
return SKIP;
|
|
1648
1691
|
}
|
|
1649
1692
|
if (value && typeof value === "object") {
|
|
1650
1693
|
depthMap.set(value, currentDepth);
|
|
@@ -1653,7 +1696,7 @@ var createReplacer = ({ omit: omit2, parse, maxDepth, maxArrayLen, maxStringLen
|
|
|
1653
1696
|
}
|
|
1654
1697
|
}
|
|
1655
1698
|
if (omit2?.includes(key)) {
|
|
1656
|
-
return
|
|
1699
|
+
return SKIP;
|
|
1657
1700
|
}
|
|
1658
1701
|
if (parse?.includes(key) && typeof value === "string") {
|
|
1659
1702
|
try {
|
|
@@ -2108,6 +2151,12 @@ var arrayMove = (array, from, to) => {
|
|
|
2108
2151
|
array.splice(to < 0 ? array.length + to : to, 0, array.splice(from, 1)[0]);
|
|
2109
2152
|
return array;
|
|
2110
2153
|
};
|
|
2154
|
+
function arraySwap(array, from, to) {
|
|
2155
|
+
const current = array[from];
|
|
2156
|
+
array[from] = array[to];
|
|
2157
|
+
array[to] = current;
|
|
2158
|
+
return array;
|
|
2159
|
+
}
|
|
2111
2160
|
|
|
2112
2161
|
// src/unit.ts
|
|
2113
2162
|
var createFormat = (unit) => {
|
|
@@ -2328,6 +2377,43 @@ var formatErrorWithCauses = (error) => {
|
|
|
2328
2377
|
}
|
|
2329
2378
|
return lines.join("\n\n");
|
|
2330
2379
|
};
|
|
2380
|
+
|
|
2381
|
+
// src/retry.ts
|
|
2382
|
+
var DEFAULT_RETRY_OPTIONS = {
|
|
2383
|
+
count: 3,
|
|
2384
|
+
delayMs: 100,
|
|
2385
|
+
exponent: 2,
|
|
2386
|
+
retryOnError: async () => true,
|
|
2387
|
+
retryOnValue: async () => false
|
|
2388
|
+
};
|
|
2389
|
+
var retry = async (options, cb) => {
|
|
2390
|
+
const fullOptions = {
|
|
2391
|
+
...DEFAULT_RETRY_OPTIONS,
|
|
2392
|
+
...options
|
|
2393
|
+
};
|
|
2394
|
+
let numRetries = 0, currentDelay = fullOptions.delayMs;
|
|
2395
|
+
while (true) {
|
|
2396
|
+
let result;
|
|
2397
|
+
try {
|
|
2398
|
+
result = await cb();
|
|
2399
|
+
} catch (err) {
|
|
2400
|
+
if (numRetries > fullOptions.count || !await fullOptions.retryOnError(err)) {
|
|
2401
|
+
throw err;
|
|
2402
|
+
}
|
|
2403
|
+
await new Promise((resolve) => setTimeout(resolve, currentDelay));
|
|
2404
|
+
currentDelay *= fullOptions.exponent;
|
|
2405
|
+
numRetries++;
|
|
2406
|
+
continue;
|
|
2407
|
+
}
|
|
2408
|
+
if (!await fullOptions.retryOnValue(result)) {
|
|
2409
|
+
return result;
|
|
2410
|
+
}
|
|
2411
|
+
await new Promise((resolve) => setTimeout(resolve, currentDelay));
|
|
2412
|
+
currentDelay *= fullOptions.exponent;
|
|
2413
|
+
numRetries++;
|
|
2414
|
+
continue;
|
|
2415
|
+
}
|
|
2416
|
+
};
|
|
2331
2417
|
export {
|
|
2332
2418
|
BitField,
|
|
2333
2419
|
Callback,
|
|
@@ -2344,6 +2430,7 @@ export {
|
|
|
2344
2430
|
WeakDictionary,
|
|
2345
2431
|
accessBy,
|
|
2346
2432
|
arrayMove,
|
|
2433
|
+
arraySwap,
|
|
2347
2434
|
arrayToBuffer,
|
|
2348
2435
|
arrayToHex,
|
|
2349
2436
|
arrayToString,
|
|
@@ -2355,12 +2442,14 @@ export {
|
|
|
2355
2442
|
chunkArray,
|
|
2356
2443
|
clamp,
|
|
2357
2444
|
clearUndefined,
|
|
2445
|
+
coerceArray,
|
|
2358
2446
|
compareMulti,
|
|
2359
2447
|
compareObject,
|
|
2360
2448
|
compareScalar,
|
|
2361
2449
|
compareString,
|
|
2362
2450
|
createBinder,
|
|
2363
2451
|
createBucketReducer,
|
|
2452
|
+
createFilename,
|
|
2364
2453
|
createGroupReducer,
|
|
2365
2454
|
createReplacer,
|
|
2366
2455
|
createSetDispatch,
|
|
@@ -2401,8 +2490,12 @@ export {
|
|
|
2401
2490
|
intersectBy,
|
|
2402
2491
|
intersection,
|
|
2403
2492
|
iosCheck,
|
|
2493
|
+
isBun,
|
|
2494
|
+
isMobile,
|
|
2495
|
+
isMobileOrTablet,
|
|
2404
2496
|
isNode,
|
|
2405
2497
|
isNonNullable,
|
|
2498
|
+
isTauri,
|
|
2406
2499
|
isTruthy,
|
|
2407
2500
|
joinTables,
|
|
2408
2501
|
jsonKeyReplacer,
|
|
@@ -2418,7 +2511,6 @@ export {
|
|
|
2418
2511
|
makeSet,
|
|
2419
2512
|
mapValues,
|
|
2420
2513
|
median,
|
|
2421
|
-
mobileAndTabletCheck,
|
|
2422
2514
|
numericalValues,
|
|
2423
2515
|
omit,
|
|
2424
2516
|
orderKeys,
|
|
@@ -2434,6 +2526,7 @@ export {
|
|
|
2434
2526
|
removeBy,
|
|
2435
2527
|
removeProperties,
|
|
2436
2528
|
removeUndefinedProperties,
|
|
2529
|
+
retry,
|
|
2437
2530
|
safariCheck,
|
|
2438
2531
|
safeAwaitAll,
|
|
2439
2532
|
safeInstanceof,
|