ts-data-forge 14.6.2 → 14.6.4

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 (182) hide show
  1. package/dist/array/impl/array-utils-creation.mjs +103 -103
  2. package/dist/array/impl/array-utils-element-access.mjs +46 -46
  3. package/dist/array/impl/array-utils-iterators.mjs +54 -54
  4. package/dist/array/impl/array-utils-length-bounded-array-cast.mjs +49 -49
  5. package/dist/array/impl/array-utils-length-bounded-array-guard.mjs +40 -40
  6. package/dist/array/impl/array-utils-length-bounded-tuple-cast.mjs +42 -42
  7. package/dist/array/impl/array-utils-length-bounded-tuple-guard.mjs +46 -46
  8. package/dist/array/impl/array-utils-modification.mjs +5 -5
  9. package/dist/array/impl/array-utils-reducing-value.mjs +11 -11
  10. package/dist/array/impl/array-utils-search.mjs +6 -6
  11. package/dist/array/impl/array-utils-set-op.mjs +116 -116
  12. package/dist/array/impl/array-utils-size.mjs +6 -6
  13. package/dist/array/impl/array-utils-slice-clamped.mjs +1 -1
  14. package/dist/array/impl/array-utils-slicing.mjs +56 -56
  15. package/dist/array/impl/array-utils-transformation.mjs +158 -158
  16. package/dist/array/impl/array-utils-validation.mjs +36 -36
  17. package/dist/collections/imap-mapped.mjs +195 -195
  18. package/dist/collections/imap.mjs +143 -143
  19. package/dist/collections/iset-mapped.mjs +320 -320
  20. package/dist/collections/iset.mjs +207 -207
  21. package/dist/collections/queue.mjs +130 -130
  22. package/dist/collections/stack.mjs +125 -125
  23. package/dist/expect-type.mjs +68 -68
  24. package/dist/functional/async-result/impl/async-result-flat-map.mjs +3 -3
  25. package/dist/functional/async-result/impl/async-result-map-err.mjs +2 -2
  26. package/dist/functional/async-result/impl/async-result-map.mjs +2 -2
  27. package/dist/functional/async-result/impl/async-result-unwrap-or.mjs +31 -31
  28. package/dist/functional/optional/impl/optional-expect-to-be.mjs +1 -1
  29. package/dist/functional/optional/impl/optional-filter.mjs +1 -1
  30. package/dist/functional/optional/impl/optional-flat-map.mjs +1 -1
  31. package/dist/functional/optional/impl/optional-from-nullable.mjs +24 -24
  32. package/dist/functional/optional/impl/optional-is-none.mjs +19 -19
  33. package/dist/functional/optional/impl/optional-is-optional.mjs +18 -18
  34. package/dist/functional/optional/impl/optional-is-some.mjs +20 -20
  35. package/dist/functional/optional/impl/optional-map.mjs +2 -2
  36. package/dist/functional/optional/impl/optional-match.mjs +2 -2
  37. package/dist/functional/optional/impl/optional-none.mjs +16 -16
  38. package/dist/functional/optional/impl/optional-or-else.mjs +1 -1
  39. package/dist/functional/optional/impl/optional-some.mjs +19 -19
  40. package/dist/functional/optional/impl/optional-to-nullable.mjs +26 -26
  41. package/dist/functional/optional/impl/optional-unwrap-or.mjs +1 -1
  42. package/dist/functional/optional/impl/optional-unwrap-throw.mjs +28 -28
  43. package/dist/functional/optional/impl/optional-unwrap.mjs +1 -1
  44. package/dist/functional/optional/impl/optional-zip.mjs +32 -32
  45. package/dist/functional/optional/impl/tag.mjs +1 -1
  46. package/dist/functional/pipe.mjs +19 -19
  47. package/dist/functional/result/impl/result-err.mjs +25 -25
  48. package/dist/functional/result/impl/result-expect-to-be.mjs +2 -2
  49. package/dist/functional/result/impl/result-flat-map.mjs +4 -4
  50. package/dist/functional/result/impl/result-fold.mjs +4 -4
  51. package/dist/functional/result/impl/result-from-optional.mjs +2 -2
  52. package/dist/functional/result/impl/result-from-promise.mjs +34 -34
  53. package/dist/functional/result/impl/result-from-throwable.mjs +29 -29
  54. package/dist/functional/result/impl/result-is-err.mjs +19 -19
  55. package/dist/functional/result/impl/result-is-ok.mjs +19 -19
  56. package/dist/functional/result/impl/result-is-result.mjs +19 -19
  57. package/dist/functional/result/impl/result-map-err.mjs +4 -4
  58. package/dist/functional/result/impl/result-map.mjs +4 -4
  59. package/dist/functional/result/impl/result-match.mjs +3 -3
  60. package/dist/functional/result/impl/result-ok.mjs +25 -25
  61. package/dist/functional/result/impl/result-or-else.mjs +2 -2
  62. package/dist/functional/result/impl/result-safe-try.mjs +15 -15
  63. package/dist/functional/result/impl/result-safe-unwrap.mjs +33 -33
  64. package/dist/functional/result/impl/result-swap.mjs +20 -20
  65. package/dist/functional/result/impl/result-to-optional.mjs +27 -27
  66. package/dist/functional/result/impl/result-unwrap-err-or.mjs +2 -2
  67. package/dist/functional/result/impl/result-unwrap-err-throw.mjs +31 -31
  68. package/dist/functional/result/impl/result-unwrap-err.mjs +30 -30
  69. package/dist/functional/result/impl/result-unwrap-ok-or.mjs +2 -2
  70. package/dist/functional/result/impl/result-unwrap-ok.mjs +1 -1
  71. package/dist/functional/result/impl/result-unwrap-throw.mjs +31 -31
  72. package/dist/functional/result/impl/result-zip.mjs +29 -29
  73. package/dist/functional/result/impl/tag.mjs +1 -1
  74. package/dist/functional/ternary-result/impl/tag.mjs +2 -2
  75. package/dist/functional/ternary-result/impl/ternary-result-err.mjs +13 -13
  76. package/dist/functional/ternary-result/impl/ternary-result-flat-map.mjs +4 -4
  77. package/dist/functional/ternary-result/impl/ternary-result-fold.mjs +4 -4
  78. package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs +18 -18
  79. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs +17 -17
  80. package/dist/functional/ternary-result/impl/ternary-result-is-err.mjs +17 -17
  81. package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs +19 -19
  82. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs +19 -19
  83. package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs +18 -18
  84. package/dist/functional/ternary-result/impl/ternary-result-map-err.mjs +2 -2
  85. package/dist/functional/ternary-result/impl/ternary-result-map-warn.mjs +3 -3
  86. package/dist/functional/ternary-result/impl/ternary-result-map.mjs +4 -4
  87. package/dist/functional/ternary-result/impl/ternary-result-ok.mjs +14 -14
  88. package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs +19 -19
  89. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs +19 -19
  90. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs +17 -17
  91. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.mjs +1 -1
  92. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs +20 -20
  93. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs +18 -18
  94. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs +17 -17
  95. package/dist/functional/ternary-result/impl/ternary-result-warn.mjs +16 -16
  96. package/dist/functional/ternary-result/impl/ternary-result-zip.mjs +31 -31
  97. package/dist/functional/ternary-result/impl/variant-name.mjs +1 -1
  98. package/dist/guard/has-key.mjs +41 -41
  99. package/dist/guard/is-non-empty-string.mjs +37 -37
  100. package/dist/guard/is-non-null-object.mjs +34 -34
  101. package/dist/guard/is-primitive.mjs +31 -31
  102. package/dist/guard/is-record.mjs +86 -86
  103. package/dist/guard/is-type.mjs +387 -387
  104. package/dist/guard/key-is-in.mjs +40 -40
  105. package/dist/iterator/range.mjs +1 -1
  106. package/dist/json/json.mjs +289 -289
  107. package/dist/number/branded-types/finite-number.mjs +116 -116
  108. package/dist/number/branded-types/int.mjs +223 -223
  109. package/dist/number/branded-types/int16.mjs +116 -116
  110. package/dist/number/branded-types/int32.mjs +116 -116
  111. package/dist/number/branded-types/negative-finite-number.mjs +126 -126
  112. package/dist/number/branded-types/negative-int.mjs +104 -104
  113. package/dist/number/branded-types/negative-safe-int.mjs +104 -104
  114. package/dist/number/branded-types/non-negative-finite-number.mjs +132 -132
  115. package/dist/number/branded-types/non-negative-int16.mjs +113 -113
  116. package/dist/number/branded-types/non-negative-int32.mjs +113 -113
  117. package/dist/number/branded-types/non-positive-finite-number.mjs +116 -116
  118. package/dist/number/branded-types/non-positive-int.mjs +97 -97
  119. package/dist/number/branded-types/non-positive-safe-int.mjs +98 -98
  120. package/dist/number/branded-types/non-zero-finite-number.mjs +112 -112
  121. package/dist/number/branded-types/non-zero-int.mjs +82 -82
  122. package/dist/number/branded-types/non-zero-int16.mjs +95 -95
  123. package/dist/number/branded-types/non-zero-int32.mjs +95 -95
  124. package/dist/number/branded-types/non-zero-safe-int.mjs +99 -99
  125. package/dist/number/branded-types/non-zero-uint16.mjs +95 -95
  126. package/dist/number/branded-types/non-zero-uint32.mjs +95 -95
  127. package/dist/number/branded-types/positive-finite-number.mjs +134 -134
  128. package/dist/number/branded-types/positive-int.mjs +237 -237
  129. package/dist/number/branded-types/positive-int16.mjs +110 -110
  130. package/dist/number/branded-types/positive-int32.mjs +110 -110
  131. package/dist/number/branded-types/positive-safe-int.mjs +268 -268
  132. package/dist/number/branded-types/positive-uint16.mjs +110 -110
  133. package/dist/number/branded-types/positive-uint32.mjs +110 -110
  134. package/dist/number/branded-types/safe-int.mjs +259 -259
  135. package/dist/number/branded-types/safe-uint.mjs +111 -111
  136. package/dist/number/branded-types/uint.mjs +225 -225
  137. package/dist/number/branded-types/uint16.mjs +108 -108
  138. package/dist/number/branded-types/uint32.mjs +108 -108
  139. package/dist/number/enum/int8.mjs +118 -118
  140. package/dist/number/enum/uint8.mjs +109 -109
  141. package/dist/number/num-arithmetic-types.mjs +1 -1
  142. package/dist/number/num.mjs +478 -478
  143. package/dist/number/refined-number-utils.mjs +170 -170
  144. package/dist/object/object.mjs +234 -234
  145. package/dist/others/cast-mutable.mjs +33 -33
  146. package/dist/others/cast-readonly.mjs +32 -32
  147. package/dist/others/debounce-function.mjs +13 -13
  148. package/dist/others/fast-deep-equal.mjs +14 -14
  149. package/dist/others/if-then.mjs +29 -29
  150. package/dist/others/tuple.mjs +50 -50
  151. package/dist/others/unknown-to-string.mjs +38 -38
  152. package/dist/promise/promise.mjs +47 -47
  153. package/dist/string/str.mjs +177 -177
  154. package/dist/types.mjs +1 -1
  155. package/package.json +6 -6
  156. package/src/guard/is-type.test.mts +2 -2
  157. package/src/number/branded-types/finite-number.test.mts +1 -1
  158. package/src/number/branded-types/int.test.mts +1 -1
  159. package/src/number/branded-types/int16.test.mts +1 -1
  160. package/src/number/branded-types/int32.test.mts +1 -1
  161. package/src/number/branded-types/non-negative-finite-number.test.mts +1 -1
  162. package/src/number/branded-types/non-negative-int16.test.mts +1 -1
  163. package/src/number/branded-types/non-negative-int32.test.mts +1 -1
  164. package/src/number/branded-types/non-zero-finite-number.test.mts +1 -1
  165. package/src/number/branded-types/non-zero-int.test.mts +1 -1
  166. package/src/number/branded-types/non-zero-int16.test.mts +1 -1
  167. package/src/number/branded-types/non-zero-int32.test.mts +1 -1
  168. package/src/number/branded-types/non-zero-safe-int.test.mts +1 -1
  169. package/src/number/branded-types/non-zero-uint16.test.mts +1 -1
  170. package/src/number/branded-types/non-zero-uint32.test.mts +1 -1
  171. package/src/number/branded-types/positive-finite-number.test.mts +1 -1
  172. package/src/number/branded-types/positive-int.test.mts +1 -1
  173. package/src/number/branded-types/positive-int16.test.mts +1 -1
  174. package/src/number/branded-types/positive-int32.test.mts +1 -1
  175. package/src/number/branded-types/positive-safe-int.test.mts +1 -1
  176. package/src/number/branded-types/positive-uint16.test.mts +1 -1
  177. package/src/number/branded-types/positive-uint32.test.mts +1 -1
  178. package/src/number/branded-types/safe-int.test.mts +1 -1
  179. package/src/number/branded-types/safe-uint.test.mts +1 -1
  180. package/src/number/branded-types/uint.test.mts +1 -1
  181. package/src/number/branded-types/uint16.test.mts +1 -1
  182. package/src/number/branded-types/uint32.test.mts +1 -1
@@ -1,17 +1,17 @@
1
- /**
2
- * Creates a debounced function that delays invoking `func` until after `waitMilliseconds`
3
- * have elapsed since the last time the debounced function was invoked.
4
- *
5
- * @template F The type of the function to debounce.
6
- * @param func The function to debounce.
7
- * @param waitMilliseconds The number of milliseconds to delay.
8
- * @returns The new debounced function.
9
- */
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
10
  export const debounce = (func, waitMilliseconds) => {
11
- // Not `ReturnType<typeof setTimeout>`: with both the DOM and Node
12
- // declarations in scope that resolves to `unknown`, which `clearTimeout`
13
- // will not take. Naming what `clearTimeout` accepts says the same thing and
14
- // stays true in either environment.
11
+
12
+
13
+
14
+
15
15
  let mut_timeoutId;
16
16
  return (...args) => {
17
17
  clearTimeout(mut_timeoutId);
@@ -1,11 +1,11 @@
1
1
  import { isMap, isRegExp, isSet, isTypedArray } from '@sindresorhus/is';
2
2
  import { hasKey, isRecord } from '../guard/index.mjs';
3
- /**
4
- * The fastest deep equal with ES6 Map, Set and Typed arrays support.
5
- * Checks equality of Date and RegExp objects by value.
6
- *
7
- * Forked from https://github.com/epoberezkin/fast-deep-equal/blob/v3.1.3/src/index.jst
8
- */
3
+
4
+
5
+
6
+
7
+
8
+
9
9
  export const fastDeepEqual = (a, b) => {
10
10
  if (a === b) {
11
11
  return true;
@@ -13,7 +13,7 @@ export const fastDeepEqual = (a, b) => {
13
13
  if (typeof a !== typeof b) {
14
14
  return false;
15
15
  }
16
- // Arrays are handled before `isRecord`, which excludes them.
16
+
17
17
  if (Array.isArray(a)) {
18
18
  return (Array.isArray(b) &&
19
19
  a.constructor === b.constructor &&
@@ -57,16 +57,16 @@ export const fastDeepEqual = (a, b) => {
57
57
  const bKeys = Object.keys(b);
58
58
  return (aKeys.length === bKeys.length &&
59
59
  aKeys.every((key) => hasKey(b, key) &&
60
- // React-specific: avoid traversing React elements' _owner.
61
- // _owner contains circular references
62
- // and is not needed when comparing the actual elements (and not their owners)
63
- // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
60
+
61
+
62
+
63
+
64
64
  !(key === '_owner' && a['$$typeof']) &&
65
65
  fastDeepEqual(a[key], b[key])));
66
66
  }
67
- // true if both NaN, false otherwise. `Number.isNaN` takes a number: called
68
- // with anything else it is always false, so the check belongs behind a
69
- // `typeof` guard rather than relying on that.
67
+
68
+
69
+
70
70
  return (typeof a === 'number' &&
71
71
  typeof b === 'number' &&
72
72
  Number.isNaN(a) &&
@@ -1,32 +1,32 @@
1
- /**
2
- * Implements the logical implication (if-then) operator.
3
- *
4
- * Returns `true` if the antecedent is `false` or the consequent is `true`. In
5
- * logical terms: `antecedent → consequent` is equivalent to `¬antecedent ∨
6
- * consequent`.
7
- *
8
- * **Truth table:**
9
- *
10
- * - `true → true` = `true` (valid implication)
11
- * - `true → false` = `false` (invalid implication)
12
- * - `false → true` = `true` (vacuously true)
13
- * - `false → false` = `true` (vacuously true)
14
- *
15
- * @param antecedent - The condition (if part)
16
- * @param consequent - The result that should hold if the condition is true
17
- * (then part)
18
- * @returns `true` if the implication holds, `false` otherwise
19
- */
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
20
  export const ifThen = (antecedent, consequent) => !antecedent || consequent;
21
- /**
22
- * Alias for {@link ifThen}.
23
- *
24
- * Implements the logical implication (if-then) operator.
25
- *
26
- * @param antecedent - The condition (if part)
27
- * @param consequent - The result that should hold if the condition is true
28
- * (then part)
29
- * @returns `true` if the implication holds, `false` otherwise
30
- */
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+
31
31
  export const implies = ifThen;
32
32
  //# sourceMappingURL=if-then.mjs.map
@@ -1,52 +1,52 @@
1
- /**
2
- * Creates a readonly tuple from the given arguments with precise literal type
3
- * inference. It is a convenient shorthand for `[...args] as const`.
4
- *
5
- * @example
6
- *
7
- * ```ts
8
- * // Create a tuple with literal types preserved
9
- * const coordinates = tp(10, 20, 30);
10
- *
11
- * expectType<typeof coordinates, readonly [10, 20, 30]>('=');
12
- *
13
- * expectType<typeof coordinates, readonly number[]>('!=');
14
- *
15
- * assert.deepStrictEqual(coordinates, [10, 20, 30]);
16
- *
17
- * // The following two are equivalent
18
- * const a = tp(1, 2);
19
- *
20
- * const b = [1, 2] as const;
21
- *
22
- * expectType<typeof a, typeof b>('=');
23
- *
24
- * assert.deepStrictEqual(a, b);
25
- *
26
- * // Without tp, type would be number[]
27
- * const point = tp('x', 42, true);
28
- *
29
- * expectType<typeof point, readonly ['x', 42, true]>('=');
30
- *
31
- * assert.deepStrictEqual(point, ['x', 42, true]);
32
- *
33
- * // Useful for creating const tuples
34
- * const rgb = tp(255, 128, 0);
35
- *
36
- * expectType<typeof rgb, readonly [255, 128, 0]>('=');
37
- *
38
- * assert.isTrue(rgb[0] === 255);
39
- *
40
- * assert.isTrue(rgb[1] === 128);
41
- *
42
- * assert.isTrue(rgb[2] === 0);
43
- * ```
44
- *
45
- * @template T - A tuple type with literal types inferred from the arguments
46
- * @param args - The elements to include in the tuple (variadic)
47
- * @returns A readonly tuple containing the provided arguments with preserved
48
- * literal types
49
- * @see https://www.typescriptlang.org/docs/handbook/2/objects.html#tuple-types
50
- */
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+
31
+
32
+
33
+
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
51
  export const tp = (...args) => args;
52
52
  //# sourceMappingURL=tuple.mjs.map
@@ -1,38 +1,38 @@
1
1
  import { isDate, isError, isMap, isRegExp, isSet } from '@sindresorhus/is';
2
- /**
3
- * Converts an unknown value to its string representation in a type-safe manner.
4
- *
5
- * This function handles all JavaScript types and provides consistent string
6
- * conversion with proper error handling for edge cases like circular
7
- * references. Unlike naive toString() calls, this function never throws and
8
- * handles all value types gracefully.
9
- *
10
- * **Type conversion rules:**
11
- *
12
- * - Strings: returned as-is
13
- * - Numbers, booleans, bigints: converted via toString()
14
- * - Symbols: converted to their description string
15
- * - Functions: converted to their string representation
16
- * - null: returns "null" (not "null" from JSON)
17
- * - undefined: returns "undefined"
18
- * - Date: converted to ISO string
19
- * - RegExp: converted to regex literal string
20
- * - Map: converted to Map representation with entries
21
- * - Set: converted to Set representation with values
22
- * - Error: returns error message
23
- * - Objects: JSON stringified (with optional pretty printing)
24
- *
25
- * @param value - The unknown value to convert to string
26
- * @param options - Optional configuration for the conversion
27
- * @param options.prettyPrintObject - If true, objects are formatted with
28
- * 2-space indentation
29
- * @returns The string representation of the value. For circular references or
30
- * non-serializable objects, returns an error message string
31
- *
32
- * **Error Handling:** Circular references and non-serializable objects return
33
- * descriptive error messages instead of throwing
34
- * @see JSON.stringify - Underlying serialization for objects
35
- */
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+
31
+
32
+
33
+
34
+
35
+
36
36
  export const unknownToString = (value, options) => {
37
37
  switch (typeof value) {
38
38
  case 'string':
@@ -51,11 +51,11 @@ export const unknownToString = (value, options) => {
51
51
  return 'null';
52
52
  }
53
53
  try {
54
- // Special handling for Date
54
+
55
55
  if (isDate(value)) {
56
56
  return value.toISOString();
57
57
  }
58
- // Special handling for RegExp
58
+
59
59
  if (isRegExp(value)) {
60
60
  return value.toString();
61
61
  }
@@ -63,7 +63,7 @@ export const unknownToString = (value, options) => {
63
63
  return value.message;
64
64
  }
65
65
  const prettyPrintObject = options?.prettyPrintObject === true;
66
- // Special handling for Map
66
+
67
67
  if (isMap(value)) {
68
68
  const entries = Array.from(value);
69
69
  const entriesStr = prettyPrintObject
@@ -71,7 +71,7 @@ export const unknownToString = (value, options) => {
71
71
  : JSON.stringify(entries);
72
72
  return `Map(${entriesStr})`;
73
73
  }
74
- // Special handling for Set
74
+
75
75
  if (isSet(value)) {
76
76
  const values = Array.from(value);
77
77
  const valuesStr = prettyPrintObject
@@ -1,51 +1,51 @@
1
1
  import { Result } from '../functional/index.mjs';
2
- /**
3
- * Creates a Promise that wraps the result in a Result type for type-safe error
4
- * handling. This function is an alternative to `new Promise(executor)` that
5
- * provides enhanced type safety by returning a Result type instead of throwing
6
- * exceptions.
7
- *
8
- * @example
9
- *
10
- * ```ts
11
- * // Create a promise that resolves successfully
12
- * const successPromise = createPromise<number, string>((resolve) => {
13
- * setTimeout(() => {
14
- * resolve(42);
15
- * }, 0);
16
- * });
17
- *
18
- * const successResult = await successPromise;
19
- *
20
- * assert.isTrue(Result.isOk(successResult));
21
- *
22
- * if (Result.isOk(successResult)) {
23
- * assert.isTrue(successResult.value === 42);
24
- * }
25
- *
26
- * // Create a promise that rejects with an error
27
- * const errorPromise = createPromise<number, string>((_, reject) => {
28
- * setTimeout(() => {
29
- * reject('Something went wrong');
30
- * }, 0);
31
- * });
32
- *
33
- * const errorResult = await errorPromise;
34
- *
35
- * assert.isTrue(Result.isErr(errorResult));
36
- *
37
- * if (Result.isErr(errorResult)) {
38
- * assert.isTrue(errorResult.value === 'Something went wrong');
39
- * }
40
- * ```
41
- *
42
- * @template S - The type of successful value
43
- * @template E - The type of error value
44
- * @param executor - Function that takes resolve and reject callbacks
45
- * @returns A Promise that resolves to a Result containing either success or
46
- * error
47
- */
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+
31
+
32
+
33
+
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
48
  export const createPromise = (executor) =>
49
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion
49
+
50
50
  Result.fromPromise(new Promise(executor));
51
51
  //# sourceMappingURL=promise.mjs.map