@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.
- package/dist/array/difference.mjs +2 -2
- package/dist/array/intersection.mjs +2 -2
- package/dist/array/match.mjs +13 -13
- package/dist/array/slice.mjs +5 -5
- package/dist/array/sort.d.mts +5 -1
- package/dist/array/sort.mjs +4 -2
- package/dist/array/union.mjs +2 -2
- package/dist/beacon.d.mts +8 -1
- package/dist/beacon.mjs +52 -60
- package/dist/color/constants.d.mts +1 -1
- package/dist/color/constants.mjs +3 -5
- package/dist/color/instance.mjs +34 -41
- package/dist/color/misc/format.d.mts +3 -2
- package/dist/color/misc/format.mjs +4 -1
- package/dist/color/misc/is.d.mts +9 -1
- package/dist/color/misc/is.mjs +11 -1
- package/dist/color/misc/state.d.mts +6 -6
- package/dist/color/misc/state.mjs +11 -14
- package/dist/color/models.d.mts +23 -68
- package/dist/function/assert.mjs +2 -2
- package/dist/function/limit.d.mts +0 -6
- package/dist/function/limit.mjs +2 -2
- package/dist/function/memoize.mjs +19 -32
- package/dist/function/once.d.mts +0 -3
- package/dist/function/once.mjs +16 -13
- package/dist/function/retry.d.mts +1 -24
- package/dist/function/retry.mjs +1 -1
- package/dist/function/work.mjs +13 -11
- package/dist/herald.d.mts +30 -31
- package/dist/herald.mjs +74 -56
- package/dist/index.d.mts +100 -185
- package/dist/index.mjs +680 -702
- package/dist/internal/abort.d.mts +10 -0
- package/dist/internal/abort.mjs +14 -0
- package/dist/internal/array/chunk.mjs +2 -2
- package/dist/internal/array/find.mjs +2 -2
- package/dist/internal/array/sets.d.mts +4 -4
- package/dist/internal/array/sets.mjs +7 -7
- package/dist/internal/function/timer.mjs +19 -15
- package/dist/internal/number.mjs +7 -7
- package/dist/internal/result.mjs +3 -3
- package/dist/internal/sized.mjs +4 -4
- package/dist/internal/string.mjs +4 -4
- package/dist/internal/subscription.d.mts +24 -8
- package/dist/internal/subscription.mjs +49 -36
- package/dist/internal/value/equal.mjs +6 -6
- package/dist/internal/value/misc.mjs +14 -14
- package/dist/internal/value/set.mjs +2 -2
- package/dist/logger.mjs +15 -39
- package/dist/promise/constants.d.mts +17 -0
- package/dist/promise/constants.mjs +14 -0
- package/dist/promise/delay.mjs +7 -10
- package/dist/promise/helpers.mjs +1 -1
- package/dist/promise/index.mjs +14 -17
- package/dist/promise/misc.d.mts +2 -1
- package/dist/promise/misc.mjs +8 -7
- package/dist/promise/models.d.mts +4 -16
- package/dist/promise/models.mjs +4 -13
- package/dist/promise/timed.mjs +9 -10
- package/dist/query.mjs +15 -15
- package/dist/queue.mjs +103 -116
- package/dist/random.mjs +7 -7
- package/dist/result/index.d.mts +0 -3
- package/dist/result/index.mjs +1 -1
- package/dist/result/match.d.mts +0 -3
- package/dist/result/match.mjs +4 -4
- package/dist/result/misc.mjs +2 -2
- package/dist/result/work/flow.d.mts +0 -3
- package/dist/result/work/flow.mjs +5 -5
- package/dist/result/work/pipe.d.mts +0 -3
- package/dist/result/work/pipe.mjs +3 -3
- package/dist/string/case.mjs +20 -20
- package/dist/string/fuzzy.mjs +23 -18
- package/dist/string/index.mjs +7 -7
- package/dist/string/normalize.mjs +14 -14
- package/dist/string/template.mjs +2 -2
- package/dist/value/clone.mjs +10 -10
- package/dist/value/smush.mjs +2 -2
- package/package.json +13 -5
- package/src/array/difference.ts +0 -73
- package/src/array/exists.ts +0 -93
- package/src/array/filter.ts +0 -182
- package/src/array/find.ts +0 -183
- package/src/array/first.ts +0 -196
- package/src/array/flatten.ts +0 -20
- package/src/array/from.ts +0 -129
- package/src/array/get.ts +0 -131
- package/src/array/group-by.ts +0 -369
- package/src/array/index.ts +0 -26
- package/src/array/insert.ts +0 -52
- package/src/array/intersection.ts +0 -72
- package/src/array/last.ts +0 -194
- package/src/array/match.ts +0 -436
- package/src/array/move.ts +0 -315
- package/src/array/partition.ts +0 -91
- package/src/array/push.ts +0 -23
- package/src/array/reverse.ts +0 -33
- package/src/array/select.ts +0 -260
- package/src/array/single.ts +0 -93
- package/src/array/slice.ts +0 -335
- package/src/array/sort.ts +0 -607
- package/src/array/splice.ts +0 -106
- package/src/array/swap.ts +0 -322
- package/src/array/to-map.ts +0 -371
- package/src/array/to-record.ts +0 -351
- package/src/array/to-set.ts +0 -80
- package/src/array/toggle.ts +0 -79
- package/src/array/union.ts +0 -72
- package/src/array/unique.ts +0 -67
- package/src/array/update.ts +0 -75
- package/src/beacon.ts +0 -378
- package/src/color/constants.ts +0 -137
- package/src/color/index.ts +0 -83
- package/src/color/instance.ts +0 -162
- package/src/color/misc/alpha.ts +0 -56
- package/src/color/misc/format.ts +0 -29
- package/src/color/misc/get.ts +0 -210
- package/src/color/misc/is.ts +0 -221
- package/src/color/misc/state.ts +0 -243
- package/src/color/models.ts +0 -389
- package/src/color/space/hex.ts +0 -184
- package/src/color/space/hsl.ts +0 -174
- package/src/color/space/hwb.ts +0 -153
- package/src/color/space/rgb.ts +0 -240
- package/src/function/assert.ts +0 -174
- package/src/function/index.ts +0 -2
- package/src/function/limit.ts +0 -83
- package/src/function/memoize.ts +0 -202
- package/src/function/once.ts +0 -200
- package/src/function/retry.ts +0 -175
- package/src/function/work.ts +0 -1007
- package/src/herald.ts +0 -216
- package/src/index.ts +0 -68
- package/src/internal/array/callbacks.ts +0 -46
- package/src/internal/array/chunk.ts +0 -51
- package/src/internal/array/compact.ts +0 -56
- package/src/internal/array/find.ts +0 -200
- package/src/internal/array/group.ts +0 -42
- package/src/internal/array/index-of.ts +0 -182
- package/src/internal/array/insert.ts +0 -80
- package/src/internal/array/overlap.ts +0 -35
- package/src/internal/array/sets.ts +0 -74
- package/src/internal/array/shuffle.ts +0 -33
- package/src/internal/array/update.ts +0 -52
- package/src/internal/function/misc.ts +0 -8
- package/src/internal/function/timer.ts +0 -168
- package/src/internal/is.ts +0 -244
- package/src/internal/math/aggregate.ts +0 -164
- package/src/internal/math/misc.ts +0 -28
- package/src/internal/number.ts +0 -129
- package/src/internal/random.ts +0 -49
- package/src/internal/result.ts +0 -92
- package/src/internal/sized.ts +0 -25
- package/src/internal/string.ts +0 -128
- package/src/internal/subscription.ts +0 -264
- package/src/internal/value/compare.ts +0 -170
- package/src/internal/value/equal.ts +0 -465
- package/src/internal/value/get.ts +0 -57
- package/src/internal/value/handlers.ts +0 -95
- package/src/internal/value/has.ts +0 -118
- package/src/internal/value/misc.ts +0 -125
- package/src/internal/value/partial.ts +0 -46
- package/src/internal/value/set.ts +0 -132
- package/src/is.ts +0 -182
- package/src/logger.ts +0 -230
- package/src/math.ts +0 -281
- package/src/models.ts +0 -286
- package/src/number.ts +0 -1
- package/src/promise/delay.ts +0 -62
- package/src/promise/helpers.ts +0 -96
- package/src/promise/index.ts +0 -300
- package/src/promise/misc.ts +0 -96
- package/src/promise/models.ts +0 -195
- package/src/promise/timed.ts +0 -91
- package/src/query.ts +0 -147
- package/src/queue.ts +0 -814
- package/src/random.ts +0 -125
- package/src/result/index.ts +0 -105
- package/src/result/match.ts +0 -124
- package/src/result/misc.ts +0 -129
- package/src/result/models.ts +0 -83
- package/src/result/work/flow.ts +0 -488
- package/src/result/work/pipe.ts +0 -496
- package/src/sized/map.ts +0 -110
- package/src/sized/set.ts +0 -107
- package/src/string/case.ts +0 -236
- package/src/string/fuzzy.ts +0 -444
- package/src/string/index.ts +0 -199
- package/src/string/match.ts +0 -80
- package/src/string/normalize.ts +0 -205
- package/src/string/template.ts +0 -161
- package/src/value/clone.ts +0 -319
- package/src/value/collection.ts +0 -63
- package/src/value/diff.ts +0 -232
- package/src/value/freeze.ts +0 -322
- package/src/value/handle.ts +0 -3
- package/src/value/index.ts +0 -5
- package/src/value/merge.ts +0 -278
- package/src/value/omit.ts +0 -20
- package/src/value/pick.ts +0 -20
- package/src/value/shake.ts +0 -45
- package/src/value/smush.ts +0 -89
- package/src/value/transform.ts +0 -153
- 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 };
|
package/dist/promise/delay.mjs
CHANGED
|
@@ -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
|
|
9
|
-
|
|
8
|
+
if (signal?.aborted ?? false) return Promise.reject(signal?.reason);
|
|
9
|
+
const aborter = createAborter(signal, () => {
|
|
10
10
|
timer.cancel();
|
|
11
|
-
rejector(signal
|
|
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(
|
|
19
|
+
if (time === 0) settlePromise(resolver, void 0, aborter);
|
|
23
20
|
else timer();
|
|
24
21
|
});
|
|
25
22
|
}
|
package/dist/promise/helpers.mjs
CHANGED
|
@@ -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 "./
|
|
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) };
|
package/dist/promise/index.mjs
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
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
|
|
11
|
-
|
|
12
|
-
rejector(signal
|
|
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(
|
|
19
|
+
settlePromise(resolve, result, aborter);
|
|
19
20
|
} catch (error) {
|
|
20
|
-
settlePromise(
|
|
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
|
|
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
|
-
|
|
40
|
-
handlers.reject(signal
|
|
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
|
-
|
|
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
|
-
|
|
60
|
+
aborter,
|
|
63
61
|
complete,
|
|
64
62
|
data,
|
|
65
63
|
handlers,
|
|
66
64
|
index,
|
|
67
|
-
signal,
|
|
68
65
|
value: reason
|
|
69
66
|
}));
|
|
70
67
|
});
|
package/dist/promise/misc.d.mts
CHANGED
|
@@ -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(
|
|
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
|
*
|
package/dist/promise/misc.mjs
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { error, ok, toPromise } from "../result/misc.mjs";
|
|
2
|
-
import {
|
|
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 {
|
|
16
|
-
if (signal
|
|
16
|
+
const { aborter, complete, data, handlers, index, value } = parameters;
|
|
17
|
+
if (aborter?.signal.aborted ?? false) return;
|
|
17
18
|
if (!complete && status === "rejected") {
|
|
18
|
-
settlePromise(
|
|
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(
|
|
29
|
+
if (index === data.last) settlePromise(handlers.resolve, data.result, aborter);
|
|
29
30
|
}
|
|
30
|
-
function settlePromise(
|
|
31
|
-
|
|
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
|
-
|
|
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,
|
|
106
|
+
export { CancelablePromise, FulfilledPromise, PromiseData, PromiseHandlers, PromiseOptions, PromiseParameters, PromiseStrategy, PromiseTimeoutError, PromisesItems, PromisesOptions, PromisesResult, PromisesUnwrapped, PromisesValue, PromisesValues, RejectedPromise };
|
package/dist/promise/models.mjs
CHANGED
|
@@ -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,
|
|
36
|
+
export { CancelablePromise, PromiseTimeoutError };
|
package/dist/promise/timed.mjs
CHANGED
|
@@ -1,32 +1,31 @@
|
|
|
1
|
+
import { createAborter } from "../internal/abort.mjs";
|
|
1
2
|
import { TIMER_WAIT, getTimer } from "../internal/function/timer.mjs";
|
|
2
|
-
import {
|
|
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
|
-
|
|
9
|
+
const aborter = createAborter(signal, () => {
|
|
8
10
|
timer.cancel();
|
|
9
|
-
rejector(signal
|
|
10
|
-
}
|
|
11
|
-
|
|
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
|
|
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(
|
|
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 (
|
|
22
|
-
const named = key.replace(
|
|
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],
|
|
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],
|
|
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 (
|
|
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
|
|
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),
|
|
73
|
+
return isPlainObject(parameters) ? join(getParts(parameters, false).filter((part) => part.length > 0), QUERY_AMPERSAND) : "";
|
|
74
74
|
}
|
|
75
|
-
const
|
|
76
|
-
const
|
|
77
|
-
const
|
|
78
|
-
const
|
|
79
|
-
const
|
|
80
|
-
const
|
|
81
|
-
const
|
|
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"
|