@oscarpalmer/atoms 0.193.0 → 0.194.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 (204) hide show
  1. package/dist/array/difference.mjs +2 -2
  2. package/dist/array/intersection.mjs +2 -2
  3. package/dist/array/match.mjs +13 -13
  4. package/dist/array/slice.mjs +5 -5
  5. package/dist/array/sort.d.mts +5 -1
  6. package/dist/array/sort.mjs +4 -2
  7. package/dist/array/union.mjs +2 -2
  8. package/dist/beacon.d.mts +8 -1
  9. package/dist/beacon.mjs +52 -60
  10. package/dist/color/constants.d.mts +1 -1
  11. package/dist/color/constants.mjs +3 -5
  12. package/dist/color/instance.mjs +34 -41
  13. package/dist/color/misc/format.d.mts +3 -2
  14. package/dist/color/misc/format.mjs +4 -1
  15. package/dist/color/misc/is.d.mts +9 -1
  16. package/dist/color/misc/is.mjs +11 -1
  17. package/dist/color/misc/state.d.mts +6 -6
  18. package/dist/color/misc/state.mjs +11 -14
  19. package/dist/color/models.d.mts +23 -68
  20. package/dist/function/assert.mjs +2 -2
  21. package/dist/function/limit.d.mts +0 -6
  22. package/dist/function/limit.mjs +2 -2
  23. package/dist/function/memoize.mjs +19 -32
  24. package/dist/function/once.d.mts +0 -3
  25. package/dist/function/once.mjs +16 -13
  26. package/dist/function/retry.d.mts +1 -24
  27. package/dist/function/retry.mjs +1 -1
  28. package/dist/function/work.mjs +13 -11
  29. package/dist/herald.d.mts +30 -31
  30. package/dist/herald.mjs +74 -56
  31. package/dist/index.d.mts +100 -185
  32. package/dist/index.mjs +680 -702
  33. package/dist/internal/abort.d.mts +10 -0
  34. package/dist/internal/abort.mjs +14 -0
  35. package/dist/internal/array/chunk.mjs +2 -2
  36. package/dist/internal/array/find.mjs +2 -2
  37. package/dist/internal/array/sets.d.mts +4 -4
  38. package/dist/internal/array/sets.mjs +7 -7
  39. package/dist/internal/function/timer.mjs +19 -15
  40. package/dist/internal/number.mjs +7 -7
  41. package/dist/internal/result.mjs +3 -3
  42. package/dist/internal/sized.mjs +4 -4
  43. package/dist/internal/string.mjs +4 -4
  44. package/dist/internal/subscription.d.mts +24 -8
  45. package/dist/internal/subscription.mjs +49 -36
  46. package/dist/internal/value/equal.mjs +6 -6
  47. package/dist/internal/value/misc.mjs +14 -14
  48. package/dist/internal/value/set.mjs +2 -2
  49. package/dist/logger.mjs +15 -39
  50. package/dist/promise/constants.d.mts +17 -0
  51. package/dist/promise/constants.mjs +14 -0
  52. package/dist/promise/delay.mjs +7 -10
  53. package/dist/promise/helpers.mjs +1 -1
  54. package/dist/promise/index.mjs +14 -17
  55. package/dist/promise/misc.d.mts +2 -1
  56. package/dist/promise/misc.mjs +8 -7
  57. package/dist/promise/models.d.mts +4 -16
  58. package/dist/promise/models.mjs +4 -13
  59. package/dist/promise/timed.mjs +9 -10
  60. package/dist/query.mjs +15 -15
  61. package/dist/queue.mjs +103 -116
  62. package/dist/random.mjs +7 -7
  63. package/dist/result/index.d.mts +0 -3
  64. package/dist/result/index.mjs +1 -1
  65. package/dist/result/match.d.mts +0 -3
  66. package/dist/result/match.mjs +4 -4
  67. package/dist/result/misc.mjs +2 -2
  68. package/dist/result/work/flow.d.mts +0 -3
  69. package/dist/result/work/flow.mjs +5 -5
  70. package/dist/result/work/pipe.d.mts +0 -3
  71. package/dist/result/work/pipe.mjs +3 -3
  72. package/dist/string/case.mjs +20 -20
  73. package/dist/string/fuzzy.mjs +23 -18
  74. package/dist/string/index.mjs +7 -7
  75. package/dist/string/normalize.mjs +14 -14
  76. package/dist/string/template.mjs +2 -2
  77. package/dist/value/clone.mjs +10 -10
  78. package/dist/value/smush.mjs +2 -2
  79. package/package.json +13 -5
  80. package/src/array/difference.ts +0 -73
  81. package/src/array/exists.ts +0 -93
  82. package/src/array/filter.ts +0 -182
  83. package/src/array/find.ts +0 -183
  84. package/src/array/first.ts +0 -196
  85. package/src/array/flatten.ts +0 -20
  86. package/src/array/from.ts +0 -129
  87. package/src/array/get.ts +0 -131
  88. package/src/array/group-by.ts +0 -369
  89. package/src/array/index.ts +0 -26
  90. package/src/array/insert.ts +0 -52
  91. package/src/array/intersection.ts +0 -72
  92. package/src/array/last.ts +0 -194
  93. package/src/array/match.ts +0 -436
  94. package/src/array/move.ts +0 -315
  95. package/src/array/partition.ts +0 -91
  96. package/src/array/push.ts +0 -23
  97. package/src/array/reverse.ts +0 -33
  98. package/src/array/select.ts +0 -260
  99. package/src/array/single.ts +0 -93
  100. package/src/array/slice.ts +0 -335
  101. package/src/array/sort.ts +0 -607
  102. package/src/array/splice.ts +0 -106
  103. package/src/array/swap.ts +0 -322
  104. package/src/array/to-map.ts +0 -371
  105. package/src/array/to-record.ts +0 -351
  106. package/src/array/to-set.ts +0 -80
  107. package/src/array/toggle.ts +0 -79
  108. package/src/array/union.ts +0 -72
  109. package/src/array/unique.ts +0 -67
  110. package/src/array/update.ts +0 -75
  111. package/src/beacon.ts +0 -378
  112. package/src/color/constants.ts +0 -137
  113. package/src/color/index.ts +0 -83
  114. package/src/color/instance.ts +0 -162
  115. package/src/color/misc/alpha.ts +0 -56
  116. package/src/color/misc/format.ts +0 -29
  117. package/src/color/misc/get.ts +0 -210
  118. package/src/color/misc/is.ts +0 -221
  119. package/src/color/misc/state.ts +0 -243
  120. package/src/color/models.ts +0 -389
  121. package/src/color/space/hex.ts +0 -184
  122. package/src/color/space/hsl.ts +0 -174
  123. package/src/color/space/hwb.ts +0 -153
  124. package/src/color/space/rgb.ts +0 -240
  125. package/src/function/assert.ts +0 -174
  126. package/src/function/index.ts +0 -2
  127. package/src/function/limit.ts +0 -83
  128. package/src/function/memoize.ts +0 -202
  129. package/src/function/once.ts +0 -200
  130. package/src/function/retry.ts +0 -175
  131. package/src/function/work.ts +0 -1007
  132. package/src/herald.ts +0 -216
  133. package/src/index.ts +0 -68
  134. package/src/internal/array/callbacks.ts +0 -46
  135. package/src/internal/array/chunk.ts +0 -51
  136. package/src/internal/array/compact.ts +0 -56
  137. package/src/internal/array/find.ts +0 -200
  138. package/src/internal/array/group.ts +0 -42
  139. package/src/internal/array/index-of.ts +0 -182
  140. package/src/internal/array/insert.ts +0 -80
  141. package/src/internal/array/overlap.ts +0 -35
  142. package/src/internal/array/sets.ts +0 -74
  143. package/src/internal/array/shuffle.ts +0 -33
  144. package/src/internal/array/update.ts +0 -52
  145. package/src/internal/function/misc.ts +0 -8
  146. package/src/internal/function/timer.ts +0 -168
  147. package/src/internal/is.ts +0 -244
  148. package/src/internal/math/aggregate.ts +0 -164
  149. package/src/internal/math/misc.ts +0 -28
  150. package/src/internal/number.ts +0 -129
  151. package/src/internal/random.ts +0 -49
  152. package/src/internal/result.ts +0 -92
  153. package/src/internal/sized.ts +0 -25
  154. package/src/internal/string.ts +0 -128
  155. package/src/internal/subscription.ts +0 -264
  156. package/src/internal/value/compare.ts +0 -170
  157. package/src/internal/value/equal.ts +0 -465
  158. package/src/internal/value/get.ts +0 -57
  159. package/src/internal/value/handlers.ts +0 -95
  160. package/src/internal/value/has.ts +0 -118
  161. package/src/internal/value/misc.ts +0 -125
  162. package/src/internal/value/partial.ts +0 -46
  163. package/src/internal/value/set.ts +0 -132
  164. package/src/is.ts +0 -182
  165. package/src/logger.ts +0 -230
  166. package/src/math.ts +0 -281
  167. package/src/models.ts +0 -286
  168. package/src/number.ts +0 -1
  169. package/src/promise/delay.ts +0 -62
  170. package/src/promise/helpers.ts +0 -96
  171. package/src/promise/index.ts +0 -300
  172. package/src/promise/misc.ts +0 -96
  173. package/src/promise/models.ts +0 -195
  174. package/src/promise/timed.ts +0 -91
  175. package/src/query.ts +0 -147
  176. package/src/queue.ts +0 -814
  177. package/src/random.ts +0 -125
  178. package/src/result/index.ts +0 -105
  179. package/src/result/match.ts +0 -124
  180. package/src/result/misc.ts +0 -129
  181. package/src/result/models.ts +0 -83
  182. package/src/result/work/flow.ts +0 -488
  183. package/src/result/work/pipe.ts +0 -496
  184. package/src/sized/map.ts +0 -110
  185. package/src/sized/set.ts +0 -107
  186. package/src/string/case.ts +0 -236
  187. package/src/string/fuzzy.ts +0 -444
  188. package/src/string/index.ts +0 -199
  189. package/src/string/match.ts +0 -80
  190. package/src/string/normalize.ts +0 -205
  191. package/src/string/template.ts +0 -161
  192. package/src/value/clone.ts +0 -319
  193. package/src/value/collection.ts +0 -63
  194. package/src/value/diff.ts +0 -232
  195. package/src/value/freeze.ts +0 -322
  196. package/src/value/handle.ts +0 -3
  197. package/src/value/index.ts +0 -5
  198. package/src/value/merge.ts +0 -278
  199. package/src/value/omit.ts +0 -20
  200. package/src/value/pick.ts +0 -20
  201. package/src/value/shake.ts +0 -45
  202. package/src/value/smush.ts +0 -89
  203. package/src/value/transform.ts +0 -153
  204. package/src/value/unsmush.ts +0 -84
@@ -0,0 +1,17 @@
1
+ import { PromiseStrategy } from "./models.mjs";
2
+ //#region src/promise/constants.d.ts
3
+ declare const PROMISE_ABORT_EVENT = "abort";
4
+ declare const PROMISE_ABORT_OPTIONS: {
5
+ once: boolean;
6
+ };
7
+ declare const PROMISE_ERROR_NAME = "PromiseTimeoutError";
8
+ declare const PROMISE_MESSAGE_EXPECTATION_ATTEMPT = "Attempt expected a function or a promise";
9
+ declare const PROMISE_MESSAGE_EXPECTATION_RESULT = "toResult expected a Promise";
10
+ declare const PROMISE_MESSAGE_EXPECTATION_TIMED = "Timed function expected a Promise";
11
+ declare const PROMISE_MESSAGE_TIMEOUT = "Promise timed out";
12
+ declare const PROMISE_STRATEGY_ALL: Set<PromiseStrategy>;
13
+ declare const PROMISE_STRATEGY_DEFAULT: PromiseStrategy;
14
+ declare const PROMISE_TYPE_FULFILLED = "fulfilled";
15
+ declare const PROMISE_TYPE_REJECTED = "rejected";
16
+ //#endregion
17
+ export { PROMISE_ABORT_EVENT, PROMISE_ABORT_OPTIONS, PROMISE_ERROR_NAME, PROMISE_MESSAGE_EXPECTATION_ATTEMPT, PROMISE_MESSAGE_EXPECTATION_RESULT, PROMISE_MESSAGE_EXPECTATION_TIMED, PROMISE_MESSAGE_TIMEOUT, PROMISE_STRATEGY_ALL, PROMISE_STRATEGY_DEFAULT, PROMISE_TYPE_FULFILLED, PROMISE_TYPE_REJECTED };
@@ -0,0 +1,14 @@
1
+ //#region src/promise/constants.ts
2
+ const PROMISE_ABORT_EVENT = "abort";
3
+ const PROMISE_ABORT_OPTIONS = { once: true };
4
+ const PROMISE_ERROR_NAME = "PromiseTimeoutError";
5
+ const PROMISE_MESSAGE_EXPECTATION_ATTEMPT = "Attempt expected a function or a promise";
6
+ const PROMISE_MESSAGE_EXPECTATION_RESULT = "toResult expected a Promise";
7
+ const PROMISE_MESSAGE_EXPECTATION_TIMED = "Timed function expected a Promise";
8
+ const PROMISE_MESSAGE_TIMEOUT = "Promise timed out";
9
+ const PROMISE_STRATEGY_ALL = /* @__PURE__ */ new Set(["complete", "first"]);
10
+ const PROMISE_STRATEGY_DEFAULT = "complete";
11
+ const PROMISE_TYPE_FULFILLED = "fulfilled";
12
+ const PROMISE_TYPE_REJECTED = "rejected";
13
+ //#endregion
14
+ export { PROMISE_ABORT_EVENT, PROMISE_ABORT_OPTIONS, PROMISE_ERROR_NAME, PROMISE_MESSAGE_EXPECTATION_ATTEMPT, PROMISE_MESSAGE_EXPECTATION_RESULT, PROMISE_MESSAGE_EXPECTATION_TIMED, PROMISE_MESSAGE_TIMEOUT, PROMISE_STRATEGY_ALL, PROMISE_STRATEGY_DEFAULT, PROMISE_TYPE_FULFILLED, PROMISE_TYPE_REJECTED };
@@ -1,25 +1,22 @@
1
+ import { createAborter } from "../internal/abort.mjs";
1
2
  import { TIMER_WAIT, getTimer } from "../internal/function/timer.mjs";
2
- import { PROMISE_ABORT_EVENT, PROMISE_ABORT_OPTIONS } from "./models.mjs";
3
3
  import { getPromiseOptions } from "./helpers.mjs";
4
4
  import { settlePromise } from "./misc.mjs";
5
5
  //#region src/promise/delay.ts
6
6
  function delay(options) {
7
7
  const { signal, time } = getPromiseOptions(options);
8
- if (signal?.aborted ?? false) return Promise.reject(signal.reason);
9
- function abort() {
8
+ if (signal?.aborted ?? false) return Promise.reject(signal?.reason);
9
+ const aborter = createAborter(signal, () => {
10
10
  timer.cancel();
11
- rejector(signal.reason);
12
- }
13
- const timer = getTimer(TIMER_WAIT, () => {
14
- settlePromise(abort, resolver, void 0, signal);
15
- }, time);
16
- signal?.addEventListener(PROMISE_ABORT_EVENT, abort, PROMISE_ABORT_OPTIONS);
11
+ rejector(signal?.reason);
12
+ });
13
+ const timer = getTimer(TIMER_WAIT, () => settlePromise(resolver, void 0, aborter), time);
17
14
  let rejector;
18
15
  let resolver;
19
16
  return new Promise((resolve, reject) => {
20
17
  rejector = reject;
21
18
  resolver = resolve;
22
- if (time === 0) settlePromise(abort, resolve, void 0, signal);
19
+ if (time === 0) settlePromise(resolver, void 0, aborter);
23
20
  else timer();
24
21
  });
25
22
  }
@@ -1,6 +1,6 @@
1
1
  import { error, ok } from "../result/misc.mjs";
2
2
  import { getNumberOrDefault } from "../internal/number.mjs";
3
- import { PROMISE_STRATEGY_ALL, PROMISE_STRATEGY_DEFAULT, PROMISE_TYPE_FULFILLED, PROMISE_TYPE_REJECTED } from "./models.mjs";
3
+ import { PROMISE_STRATEGY_ALL, PROMISE_STRATEGY_DEFAULT, PROMISE_TYPE_FULFILLED, PROMISE_TYPE_REJECTED } from "./constants.mjs";
4
4
  //#region src/promise/helpers.ts
5
5
  function getPromiseOptions(input) {
6
6
  if (typeof input === "number") return { time: getNumberOrDefault(input, 0) };
@@ -1,4 +1,5 @@
1
- import { PROMISE_ABORT_EVENT, PROMISE_ABORT_OPTIONS, PROMISE_MESSAGE_EXPECTATION_ATTEMPT, PROMISE_STRATEGY_DEFAULT, PROMISE_TYPE_FULFILLED, PROMISE_TYPE_REJECTED } from "./models.mjs";
1
+ import { createAborter } from "../internal/abort.mjs";
2
+ import { PROMISE_MESSAGE_EXPECTATION_ATTEMPT, PROMISE_STRATEGY_DEFAULT, PROMISE_TYPE_FULFILLED, PROMISE_TYPE_REJECTED } from "./constants.mjs";
2
3
  import { getPromiseOptions, getPromisesOptions, getResultsFromPromises } from "./helpers.mjs";
3
4
  import { handleResult, settlePromise } from "./misc.mjs";
4
5
  import { getTimedPromise } from "./timed.mjs";
@@ -7,21 +8,20 @@ async function attemptPromise(value, options) {
7
8
  const isFunction = typeof value === "function";
8
9
  if (!isFunction && !(value instanceof Promise)) return Promise.reject(new TypeError(PROMISE_MESSAGE_EXPECTATION_ATTEMPT));
9
10
  const { signal, time } = getPromiseOptions(options);
10
- if (signal?.aborted ?? false) return Promise.reject(signal.reason);
11
- function abort() {
12
- rejector(signal.reason);
13
- }
11
+ if (signal?.aborted ?? false) return Promise.reject(signal?.reason);
12
+ const aborter = createAborter(signal, () => {
13
+ rejector(signal?.reason);
14
+ });
14
15
  async function handler(resolve, reject) {
15
16
  try {
16
17
  let result = isFunction ? value() : await value;
17
18
  if (result instanceof Promise) result = await result;
18
- settlePromise(abort, resolve, result, signal);
19
+ settlePromise(resolve, result, aborter);
19
20
  } catch (error) {
20
- settlePromise(abort, reject, error, signal);
21
+ settlePromise(reject, error, aborter);
21
22
  }
22
23
  }
23
24
  let rejector;
24
- signal?.addEventListener(PROMISE_ABORT_EVENT, abort, PROMISE_ABORT_OPTIONS);
25
25
  const promise = new Promise((resolve, reject) => {
26
26
  rejector = reject;
27
27
  handler(resolve, reject);
@@ -30,16 +30,15 @@ async function attemptPromise(value, options) {
30
30
  }
31
31
  async function promises(items, options) {
32
32
  const { signal, strategy } = getPromisesOptions(options);
33
- if (signal?.aborted ?? false) return Promise.reject(signal.reason);
33
+ if (signal?.aborted ?? false) return Promise.reject(signal?.reason);
34
34
  if (!Array.isArray(items)) return Promise.resolve([]);
35
35
  const actual = items.map((item) => typeof item === "function" ? item() : item).filter((item) => item instanceof Promise);
36
36
  const { length } = actual;
37
37
  if (length === 0) return Promise.resolve([]);
38
38
  const complete = strategy === PROMISE_STRATEGY_DEFAULT;
39
- function abort() {
40
- handlers.reject(signal.reason);
41
- }
42
- signal?.addEventListener(PROMISE_ABORT_EVENT, abort, PROMISE_ABORT_OPTIONS);
39
+ const aborter = createAborter(signal, () => {
40
+ handlers.reject(signal?.reason);
41
+ });
43
42
  const data = {
44
43
  last: length - 1,
45
44
  result: []
@@ -51,20 +50,18 @@ async function promises(items, options) {
51
50
  resolve
52
51
  };
53
52
  for (let index = 0; index < length; index += 1) actual[index].then((value) => handleResult(PROMISE_TYPE_FULFILLED, {
54
- abort,
53
+ aborter,
55
54
  complete,
56
55
  data,
57
56
  handlers,
58
57
  index,
59
- signal,
60
58
  value
61
59
  })).catch((reason) => handleResult(PROMISE_TYPE_REJECTED, {
62
- abort,
60
+ aborter,
63
61
  complete,
64
62
  data,
65
63
  handlers,
66
64
  index,
67
- signal,
68
65
  value: reason
69
66
  }));
70
67
  });
@@ -1,4 +1,5 @@
1
1
  import { Result } from "../result/models.mjs";
2
+ import { Aborter } from "../internal/abort.mjs";
2
3
  import { CancelablePromise, PromiseParameters } from "./models.mjs";
3
4
  import { toPromise } from "../result/misc.mjs";
4
5
  import { isFulfilled, isRejected } from "./helpers.mjs";
@@ -11,7 +12,7 @@ import { isFulfilled, isRejected } from "./helpers.mjs";
11
12
  */
12
13
  declare function cancelable<Value>(executor: (resolve: (value: Value) => void, reject: (reason: unknown) => void) => void): CancelablePromise<Value>;
13
14
  declare function handleResult(status: string, parameters: PromiseParameters): void;
14
- declare function settlePromise(aborter: () => void, settler: (value: any) => void, value: unknown, signal?: AbortSignal): void;
15
+ declare function settlePromise(settler: (value: any) => void, value: unknown, aborter?: Aborter): void;
15
16
  /**
16
17
  * Converts a _Promise_ to a promised result
17
18
  *
@@ -1,5 +1,6 @@
1
1
  import { error, ok, toPromise } from "../result/misc.mjs";
2
- import { CancelablePromise, PROMISE_ABORT_EVENT, PROMISE_MESSAGE_EXPECTATION_RESULT } from "./models.mjs";
2
+ import { PROMISE_MESSAGE_EXPECTATION_RESULT } from "./constants.mjs";
3
+ import { CancelablePromise } from "./models.mjs";
3
4
  import { isFulfilled, isRejected } from "./helpers.mjs";
4
5
  //#region src/promise/misc.ts
5
6
  /**
@@ -12,10 +13,10 @@ function cancelable(executor) {
12
13
  return new CancelablePromise(executor);
13
14
  }
14
15
  function handleResult(status, parameters) {
15
- const { abort, complete, data, handlers, index, signal, value } = parameters;
16
- if (signal?.aborted ?? false) return;
16
+ const { aborter, complete, data, handlers, index, value } = parameters;
17
+ if (aborter?.signal.aborted ?? false) return;
17
18
  if (!complete && status === "rejected") {
18
- settlePromise(abort, handlers.reject, value, signal);
19
+ settlePromise(handlers.reject, value, aborter);
19
20
  return;
20
21
  }
21
22
  data.result[index] = !complete ? value : status === "fulfilled" ? {
@@ -25,10 +26,10 @@ function handleResult(status, parameters) {
25
26
  status,
26
27
  reason: value
27
28
  };
28
- if (index === data.last) settlePromise(abort, handlers.resolve, data.result, signal);
29
+ if (index === data.last) settlePromise(handlers.resolve, data.result, aborter);
29
30
  }
30
- function settlePromise(aborter, settler, value, signal) {
31
- signal?.removeEventListener(PROMISE_ABORT_EVENT, aborter);
31
+ function settlePromise(settler, value, aborter) {
32
+ aborter?.cancel();
32
33
  settler(value);
33
34
  }
34
35
  async function toResult(value) {
@@ -1,5 +1,7 @@
1
1
  import { GenericCallback } from "../models.mjs";
2
2
  import { Result } from "../result/models.mjs";
3
+ import { Aborter } from "../internal/abort.mjs";
4
+ import { PROMISE_TYPE_FULFILLED, PROMISE_TYPE_REJECTED } from "./constants.mjs";
3
5
  //#region src/promise/models.d.ts
4
6
  /**
5
7
  * A _Promise_ that can be canceled
@@ -49,12 +51,11 @@ type PromiseOptions = {
49
51
  time?: number;
50
52
  };
51
53
  type PromiseParameters = {
52
- abort: () => void;
54
+ aborter?: Aborter;
53
55
  complete: boolean;
54
56
  data: PromiseData;
55
57
  handlers: PromiseHandlers;
56
58
  index: number;
57
- signal?: AbortSignal;
58
59
  value?: unknown;
59
60
  };
60
61
  /**
@@ -101,18 +102,5 @@ type RejectedPromise = {
101
102
  */
102
103
  reason: unknown;
103
104
  };
104
- declare const PROMISE_ABORT_EVENT = "abort";
105
- declare const PROMISE_ABORT_OPTIONS: {
106
- once: boolean;
107
- };
108
- declare const PROMISE_ERROR_NAME = "PromiseTimeoutError";
109
- declare const PROMISE_MESSAGE_EXPECTATION_ATTEMPT = "Attempt expected a function or a promise";
110
- declare const PROMISE_MESSAGE_EXPECTATION_RESULT = "toResult expected a Promise";
111
- declare const PROMISE_MESSAGE_EXPECTATION_TIMED = "Timed function expected a Promise";
112
- declare const PROMISE_MESSAGE_TIMEOUT = "Promise timed out";
113
- declare const PROMISE_STRATEGY_ALL: Set<PromiseStrategy>;
114
- declare const PROMISE_STRATEGY_DEFAULT: PromiseStrategy;
115
- declare const PROMISE_TYPE_FULFILLED = "fulfilled";
116
- declare const PROMISE_TYPE_REJECTED = "rejected";
117
105
  //#endregion
118
- export { CancelablePromise, FulfilledPromise, PROMISE_ABORT_EVENT, PROMISE_ABORT_OPTIONS, PROMISE_ERROR_NAME, PROMISE_MESSAGE_EXPECTATION_ATTEMPT, PROMISE_MESSAGE_EXPECTATION_RESULT, PROMISE_MESSAGE_EXPECTATION_TIMED, PROMISE_MESSAGE_TIMEOUT, PROMISE_STRATEGY_ALL, PROMISE_STRATEGY_DEFAULT, PROMISE_TYPE_FULFILLED, PROMISE_TYPE_REJECTED, PromiseData, PromiseHandlers, PromiseOptions, PromiseParameters, PromiseStrategy, PromiseTimeoutError, PromisesItems, PromisesOptions, PromisesResult, PromisesUnwrapped, PromisesValue, PromisesValues, RejectedPromise };
106
+ export { CancelablePromise, FulfilledPromise, PromiseData, PromiseHandlers, PromiseOptions, PromiseParameters, PromiseStrategy, PromiseTimeoutError, PromisesItems, PromisesOptions, PromisesResult, PromisesUnwrapped, PromisesValue, PromisesValues, RejectedPromise };
@@ -1,3 +1,4 @@
1
+ import { PROMISE_ERROR_NAME, PROMISE_MESSAGE_TIMEOUT } from "./constants.mjs";
1
2
  //#region src/promise/models.ts
2
3
  /**
3
4
  * A _Promise_ that can be canceled
@@ -18,7 +19,8 @@ var CancelablePromise = class extends Promise {
18
19
  * @param reason Optional reason for canceling the _Promise_
19
20
  */
20
21
  cancel(reason) {
21
- this.#rejector(reason);
22
+ this.#rejector?.(reason);
23
+ this.#rejector = void 0;
22
24
  }
23
25
  };
24
26
  /**
@@ -30,16 +32,5 @@ var PromiseTimeoutError = class extends Error {
30
32
  this.name = PROMISE_ERROR_NAME;
31
33
  }
32
34
  };
33
- const PROMISE_ABORT_EVENT = "abort";
34
- const PROMISE_ABORT_OPTIONS = { once: true };
35
- const PROMISE_ERROR_NAME = "PromiseTimeoutError";
36
- const PROMISE_MESSAGE_EXPECTATION_ATTEMPT = "Attempt expected a function or a promise";
37
- const PROMISE_MESSAGE_EXPECTATION_RESULT = "toResult expected a Promise";
38
- const PROMISE_MESSAGE_EXPECTATION_TIMED = "Timed function expected a Promise";
39
- const PROMISE_MESSAGE_TIMEOUT = "Promise timed out";
40
- const PROMISE_STRATEGY_ALL = /* @__PURE__ */ new Set(["complete", "first"]);
41
- const PROMISE_STRATEGY_DEFAULT = "complete";
42
- const PROMISE_TYPE_FULFILLED = "fulfilled";
43
- const PROMISE_TYPE_REJECTED = "rejected";
44
35
  //#endregion
45
- export { CancelablePromise, PROMISE_ABORT_EVENT, PROMISE_ABORT_OPTIONS, PROMISE_ERROR_NAME, PROMISE_MESSAGE_EXPECTATION_ATTEMPT, PROMISE_MESSAGE_EXPECTATION_RESULT, PROMISE_MESSAGE_EXPECTATION_TIMED, PROMISE_MESSAGE_TIMEOUT, PROMISE_STRATEGY_ALL, PROMISE_STRATEGY_DEFAULT, PROMISE_TYPE_FULFILLED, PROMISE_TYPE_REJECTED, PromiseTimeoutError };
36
+ export { CancelablePromise, PromiseTimeoutError };
@@ -1,32 +1,31 @@
1
+ import { createAborter } from "../internal/abort.mjs";
1
2
  import { TIMER_WAIT, getTimer } from "../internal/function/timer.mjs";
2
- import { PROMISE_ABORT_EVENT, PROMISE_ABORT_OPTIONS, PROMISE_MESSAGE_EXPECTATION_TIMED, PromiseTimeoutError } from "./models.mjs";
3
+ import { PROMISE_MESSAGE_EXPECTATION_TIMED } from "./constants.mjs";
4
+ import { PromiseTimeoutError } from "./models.mjs";
3
5
  import { getPromiseOptions } from "./helpers.mjs";
4
6
  import { settlePromise } from "./misc.mjs";
5
7
  //#region src/promise/timed.ts
6
8
  async function getTimedPromise(promise, time, signal) {
7
- function abort() {
9
+ const aborter = createAborter(signal, () => {
8
10
  timer.cancel();
9
- rejector(signal.reason);
10
- }
11
- signal?.addEventListener(PROMISE_ABORT_EVENT, abort, PROMISE_ABORT_OPTIONS);
12
- const timer = getTimer(TIMER_WAIT, () => {
13
- settlePromise(abort, rejector, new PromiseTimeoutError(), signal);
14
- }, time);
11
+ rejector(signal?.reason);
12
+ });
13
+ const timer = getTimer(TIMER_WAIT, () => settlePromise(rejector, new PromiseTimeoutError(), aborter), time);
15
14
  let rejector;
16
15
  return Promise.race([promise, new Promise((_, reject) => {
17
16
  rejector = reject;
18
17
  timer();
19
18
  })]).then((value) => {
19
+ aborter?.cancel();
20
20
  timer.cancel();
21
21
  rejector(void 0);
22
- signal?.removeEventListener(PROMISE_ABORT_EVENT, abort);
23
22
  return value;
24
23
  });
25
24
  }
26
25
  async function timed(promise, options) {
27
26
  if (!(promise instanceof Promise)) return Promise.reject(new TypeError(PROMISE_MESSAGE_EXPECTATION_TIMED));
28
27
  const { signal, time } = getPromiseOptions(options);
29
- if (signal?.aborted ?? false) return Promise.reject(signal.reason);
28
+ if (signal?.aborted ?? false) return Promise.reject(signal?.reason);
30
29
  return time > 0 ? getTimedPromise(promise, time, signal) : promise;
31
30
  }
32
31
  //#endregion
package/dist/query.mjs CHANGED
@@ -11,15 +11,15 @@ import { setValue } from "./internal/value/set.mjs";
11
11
  */
12
12
  function fromQuery(query) {
13
13
  if (typeof query !== "string" || query.trim().length === 0) return {};
14
- const parts = query.split(AMPERSAND).map((part) => part.split(EQUAL).map(tryDecode)).sort(([first], [second]) => first.localeCompare(second));
14
+ const parts = query.split(QUERY_AMPERSAND).map((part) => part.split(QUERY_EQUAL).map(tryDecode)).sort(([first], [second]) => first.localeCompare(second));
15
15
  const { length } = parts;
16
16
  const parameters = {};
17
17
  let position = 0;
18
18
  let array;
19
19
  for (let index = 0; index < length; index += 1) {
20
20
  const [key, value] = parts[index];
21
- if (EXPRESSION_ARRAY_SUFFIX.test(key)) {
22
- const named = key.replace(EXPRESSION_ARRAY_SUFFIX, "");
21
+ if (QUERY_EXPRESSION_ARRAY_SUFFIX.test(key)) {
22
+ const named = key.replace(QUERY_EXPRESSION_ARRAY_SUFFIX, "");
23
23
  if (named !== array) {
24
24
  array = named;
25
25
  position = 0;
@@ -41,9 +41,9 @@ function getParts(value, fromArray, prefix) {
41
41
  for (let index = 0; index < length; index += 1) {
42
42
  const key = keys[index];
43
43
  const val = value[key];
44
- const fullKey = join([prefix, fromArray ? void 0 : key], DOT);
44
+ const fullKey = join([prefix, fromArray ? void 0 : key], QUERY_DOT);
45
45
  const encodedKey = getString(tryEncode(fullKey));
46
- const prefixedKey = fromArray ? join([encodedKey, index], DOT) : encodedKey;
46
+ const prefixedKey = fromArray ? join([encodedKey, index], QUERY_DOT) : encodedKey;
47
47
  if (Array.isArray(val)) parts.push(...getParts(val, true, fullKey));
48
48
  else if (isPlainObject(val)) parts.push(...getParts(val, false, fullKey));
49
49
  else if (isDecodable(val)) parts.push(`${prefixedKey}=${getString(tryEncode(val))}`);
@@ -52,7 +52,7 @@ function getParts(value, fromArray, prefix) {
52
52
  return parts;
53
53
  }
54
54
  function getQueryValue(value) {
55
- if (EXPRESSION_BOOLEAN.test(value)) return value === TRUE;
55
+ if (QUERY_EXPRESSION_BOOLEAN.test(value)) return value === QUERY_TRUE;
56
56
  const asNumber = getNumber(value);
57
57
  if (!Number.isNaN(asNumber)) return asNumber;
58
58
  const parsed = Date.parse(value);
@@ -61,7 +61,7 @@ function getQueryValue(value) {
61
61
  return date.toJSON() === value ? date : value;
62
62
  }
63
63
  function isDecodable(value) {
64
- return TYPES.has(typeof value);
64
+ return QUERY_TYPES.has(typeof value);
65
65
  }
66
66
  /**
67
67
  * Convert a plain _(nested)_ object to a query string
@@ -70,15 +70,15 @@ function isDecodable(value) {
70
70
  * @returns Query string representation of the object
71
71
  */
72
72
  function toQuery(parameters) {
73
- return isPlainObject(parameters) ? join(getParts(parameters, false).filter((part) => part.length > 0), AMPERSAND) : "";
73
+ return isPlainObject(parameters) ? join(getParts(parameters, false).filter((part) => part.length > 0), QUERY_AMPERSAND) : "";
74
74
  }
75
- const AMPERSAND = "&";
76
- const DOT = ".";
77
- const EQUAL = "=";
78
- const EXPRESSION_ARRAY_SUFFIX = /\[\]$/;
79
- const EXPRESSION_BOOLEAN = /^(false|true)$/;
80
- const TRUE = "true";
81
- const TYPES = /* @__PURE__ */ new Set([
75
+ const QUERY_AMPERSAND = "&";
76
+ const QUERY_DOT = ".";
77
+ const QUERY_EQUAL = "=";
78
+ const QUERY_EXPRESSION_ARRAY_SUFFIX = /\[\]$/;
79
+ const QUERY_EXPRESSION_BOOLEAN = /^(false|true)$/;
80
+ const QUERY_TRUE = "true";
81
+ const QUERY_TYPES = /* @__PURE__ */ new Set([
82
82
  "boolean",
83
83
  "number",
84
84
  "string"