@splendidlabz/utils 1.16.1 → 1.17.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.
@@ -98,6 +98,7 @@ __export(lib_exports, {
98
98
  sanitizeObject: () => sanitizeObject,
99
99
  scatter: () => scatter,
100
100
  seededRandom: () => seededRandom,
101
+ settle: () => settle,
101
102
  shuffle: () => shuffle,
102
103
  singular: () => singular,
103
104
  sizeOf: () => sizeOf,
@@ -1097,6 +1098,35 @@ function reject(props, { includeStack = true } = {}) {
1097
1098
  return Promise.reject(omitEmpty(err));
1098
1099
  }
1099
1100
 
1101
+ // src/lib/promises/settle.js
1102
+ async function settle(promise) {
1103
+ try {
1104
+ return toSettled(await promise, null);
1105
+ } catch (error) {
1106
+ return toSettled(null, error);
1107
+ }
1108
+ }
1109
+ function toSettled(result, error) {
1110
+ const settled = Object.defineProperties(
1111
+ { result, error },
1112
+ {
1113
+ r: { value: result },
1114
+ e: { value: error },
1115
+ [Symbol.iterator]: {
1116
+ value: function* () {
1117
+ yield result;
1118
+ yield error;
1119
+ }
1120
+ }
1121
+ }
1122
+ );
1123
+ return (
1124
+ /** @type {Settled<T>} */
1125
+ /** @type {unknown} */
1126
+ settled
1127
+ );
1128
+ }
1129
+
1100
1130
  // src/lib/sse.js
1101
1131
  function createSSE({ event, data, id, retry }) {
1102
1132
  const eventString = event ? `event: ${event}
@@ -1791,6 +1821,7 @@ function getSymbolValue(object, description) {
1791
1821
  sanitizeObject,
1792
1822
  scatter,
1793
1823
  seededRandom,
1824
+ settle,
1794
1825
  shuffle,
1795
1826
  singular,
1796
1827
  sizeOf,
@@ -19,7 +19,8 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
19
19
  // src/lib/promises/index.js
20
20
  var promises_exports = {};
21
21
  __export(promises_exports, {
22
- reject: () => reject
22
+ reject: () => reject,
23
+ settle: () => settle
23
24
  });
24
25
  module.exports = __toCommonJS(promises_exports);
25
26
 
@@ -139,7 +140,37 @@ function reject(props, { includeStack = true } = {}) {
139
140
  };
140
141
  return Promise.reject(omitEmpty(err));
141
142
  }
143
+
144
+ // src/lib/promises/settle.js
145
+ async function settle(promise) {
146
+ try {
147
+ return toSettled(await promise, null);
148
+ } catch (error) {
149
+ return toSettled(null, error);
150
+ }
151
+ }
152
+ function toSettled(result, error) {
153
+ const settled = Object.defineProperties(
154
+ { result, error },
155
+ {
156
+ r: { value: result },
157
+ e: { value: error },
158
+ [Symbol.iterator]: {
159
+ value: function* () {
160
+ yield result;
161
+ yield error;
162
+ }
163
+ }
164
+ }
165
+ );
166
+ return (
167
+ /** @type {Settled<T>} */
168
+ /** @type {unknown} */
169
+ settled
170
+ );
171
+ }
142
172
  // Annotate the CommonJS export names for ESM import in node:
143
173
  0 && (module.exports = {
144
- reject
174
+ reject,
175
+ settle
145
176
  });
@@ -0,0 +1,55 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // src/lib/promises/settle.js
20
+ var settle_exports = {};
21
+ __export(settle_exports, {
22
+ settle: () => settle
23
+ });
24
+ module.exports = __toCommonJS(settle_exports);
25
+ async function settle(promise) {
26
+ try {
27
+ return toSettled(await promise, null);
28
+ } catch (error) {
29
+ return toSettled(null, error);
30
+ }
31
+ }
32
+ function toSettled(result, error) {
33
+ const settled = Object.defineProperties(
34
+ { result, error },
35
+ {
36
+ r: { value: result },
37
+ e: { value: error },
38
+ [Symbol.iterator]: {
39
+ value: function* () {
40
+ yield result;
41
+ yield error;
42
+ }
43
+ }
44
+ }
45
+ );
46
+ return (
47
+ /** @type {Settled<T>} */
48
+ /** @type {unknown} */
49
+ settled
50
+ );
51
+ }
52
+ // Annotate the CommonJS export names for ESM import in node:
53
+ 0 && (module.exports = {
54
+ settle
55
+ });
@@ -1 +1,2 @@
1
1
  export * from "./reject.js";
2
+ export * from "./settle.js";
@@ -0,0 +1,30 @@
1
+ async function settle(promise) {
2
+ try {
3
+ return toSettled(await promise, null);
4
+ } catch (error) {
5
+ return toSettled(null, error);
6
+ }
7
+ }
8
+ function toSettled(result, error) {
9
+ const settled = Object.defineProperties(
10
+ { result, error },
11
+ {
12
+ r: { value: result },
13
+ e: { value: error },
14
+ [Symbol.iterator]: {
15
+ value: function* () {
16
+ yield result;
17
+ yield error;
18
+ }
19
+ }
20
+ }
21
+ );
22
+ return (
23
+ /** @type {Settled<T>} */
24
+ /** @type {unknown} */
25
+ settled
26
+ );
27
+ }
28
+ export {
29
+ settle
30
+ };
@@ -38,6 +38,7 @@ export { sizeOf } from './objects/size.cjs';
38
38
  export { splitObject } from './objects/split.cjs';
39
39
  export { trimValues } from './objects/trim-values.cjs';
40
40
  export { reject } from './promises/reject.cjs';
41
+ export { Settled, settle } from './promises/settle.cjs';
41
42
  export { createSSE, parseSSE } from './sse.cjs';
42
43
  export { toCamel, toKebab, toLower, toPascal, toSentence, toSlug, toTitle, toUpper } from './strings/convert-case/convert-case.cjs';
43
44
  export { markdown, treatMarkdownWhitespace } from './strings/markdown.cjs';
@@ -1 +1,2 @@
1
1
  export { reject } from './reject.cjs';
2
+ export { Settled, settle } from './settle.cjs';
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @template T
3
+ * @typedef {{ result: T | null, error: unknown, r: T | null, e: unknown } & [T | null, unknown]} Settled
4
+ */
5
+ /**
6
+ * settle
7
+ * Awaits a promise and returns its error instead of throwing.
8
+ *
9
+ * @template T
10
+ * @param {Promise<T>} promise
11
+ * @returns {Promise<Settled<T>>}
12
+ */
13
+ declare function settle<T>(promise: Promise<T>): Promise<Settled<T>>;
14
+ type Settled<T> = {
15
+ result: T | null;
16
+ error: unknown;
17
+ r: T | null;
18
+ e: unknown;
19
+ } & [T | null, unknown];
20
+
21
+ export { type Settled, settle };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@splendidlabz/utils",
3
- "version": "1.16.1",
3
+ "version": "1.17.0",
4
4
  "description": "",
5
5
  "license": "Elastic-2.0",
6
6
  "type": "module",