@fgv/ts-utils 5.0.2 → 5.1.0-1
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/README.md +152 -84
- package/dist/index.js +2 -2
- package/dist/packlets/base/messageAggregator.js +6 -6
- package/dist/packlets/base/result.js +39 -39
- package/dist/packlets/base/utils.js +47 -0
- package/dist/packlets/collections/aggregatedResultMap.js +722 -0
- package/dist/packlets/collections/collector.js +9 -9
- package/dist/packlets/collections/collectorValidator.js +4 -4
- package/dist/packlets/collections/converters.js +39 -0
- package/dist/packlets/collections/convertingCollectorValidator.js +3 -3
- package/dist/packlets/collections/convertingResultMap.js +208 -0
- package/dist/packlets/collections/index.js +4 -0
- package/dist/packlets/collections/keyValueConverters.js +1 -4
- package/dist/packlets/collections/readOnlyConvertingResultMap.js +193 -0
- package/dist/packlets/collections/resultMapValidator.js +50 -6
- package/dist/packlets/collections/validatingConvertingResultMap.js +78 -0
- package/dist/packlets/conversion/advancedConverters.js +249 -0
- package/dist/packlets/conversion/baseConverter.js +23 -16
- package/dist/packlets/conversion/basicConverters.js +571 -0
- package/dist/packlets/conversion/converters.js +3 -617
- package/dist/packlets/conversion/defaultingConverter.js +21 -15
- package/dist/packlets/logging/bootLogger.js +122 -0
- package/dist/packlets/logging/index.js +1 -0
- package/dist/packlets/logging/logReporter.js +32 -1
- package/dist/packlets/logging/logger.js +25 -5
- package/dist/packlets/validation/classes.js +1 -0
- package/dist/packlets/validation/compositeId.js +60 -0
- package/dist/packlets/validation/field.js +1 -1
- package/dist/packlets/validation/genericValidator.js +24 -10
- package/dist/packlets/validation/object.js +3 -6
- package/dist/packlets/validation/validators.js +12 -0
- package/dist/ts-utils.d.ts +1633 -200
- package/dist/tsdoc-metadata.json +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.js +2 -1
- package/lib/packlets/base/mapResults.d.ts +3 -3
- package/lib/packlets/base/messageAggregator.d.ts +6 -6
- package/lib/packlets/base/messageAggregator.js +6 -6
- package/lib/packlets/base/result.d.ts +74 -51
- package/lib/packlets/base/result.js +39 -39
- package/lib/packlets/base/utils.d.ts +42 -0
- package/lib/packlets/base/utils.js +52 -0
- package/lib/packlets/collections/aggregatedResultMap.d.ts +433 -0
- package/lib/packlets/collections/aggregatedResultMap.js +728 -0
- package/lib/packlets/collections/collector.d.ts +11 -10
- package/lib/packlets/collections/collector.js +9 -9
- package/lib/packlets/collections/collectorValidator.d.ts +12 -10
- package/lib/packlets/collections/collectorValidator.js +4 -4
- package/lib/packlets/collections/converters.d.ts +18 -0
- package/lib/packlets/collections/converters.js +42 -0
- package/lib/packlets/collections/convertingCollector.d.ts +4 -4
- package/lib/packlets/collections/convertingCollectorValidator.d.ts +10 -7
- package/lib/packlets/collections/convertingCollectorValidator.js +3 -3
- package/lib/packlets/collections/convertingResultMap.d.ts +176 -0
- package/lib/packlets/collections/convertingResultMap.js +213 -0
- package/lib/packlets/collections/index.d.ts +4 -0
- package/lib/packlets/collections/index.js +4 -0
- package/lib/packlets/collections/keyValueConverters.d.ts +1 -4
- package/lib/packlets/collections/keyValueConverters.js +1 -4
- package/lib/packlets/collections/readOnlyConvertingResultMap.d.ts +153 -0
- package/lib/packlets/collections/readOnlyConvertingResultMap.js +197 -0
- package/lib/packlets/collections/readonlyResultMap.d.ts +7 -7
- package/lib/packlets/collections/resultMap.d.ts +108 -2
- package/lib/packlets/collections/resultMapValidator.d.ts +45 -11
- package/lib/packlets/collections/resultMapValidator.js +52 -7
- package/lib/packlets/collections/validatingCollector.d.ts +5 -5
- package/lib/packlets/collections/validatingConvertingCollector.d.ts +3 -3
- package/lib/packlets/collections/validatingConvertingResultMap.d.ts +102 -0
- package/lib/packlets/collections/validatingConvertingResultMap.js +83 -0
- package/lib/packlets/collections/validatingResultMap.d.ts +1 -1
- package/lib/packlets/conversion/advancedConverters.d.ts +170 -0
- package/lib/packlets/conversion/advancedConverters.js +258 -0
- package/lib/packlets/conversion/baseConverter.d.ts +39 -23
- package/lib/packlets/conversion/baseConverter.js +23 -16
- package/lib/packlets/conversion/basicConverters.d.ts +470 -0
- package/lib/packlets/conversion/basicConverters.js +595 -0
- package/lib/packlets/conversion/converter.d.ts +7 -0
- package/lib/packlets/conversion/converters.d.ts +2 -535
- package/lib/packlets/conversion/converters.js +17 -639
- package/lib/packlets/conversion/defaultingConverter.d.ts +20 -16
- package/lib/packlets/conversion/defaultingConverter.js +21 -15
- package/lib/packlets/logging/bootLogger.d.ts +84 -0
- package/lib/packlets/logging/bootLogger.js +126 -0
- package/lib/packlets/logging/index.d.ts +1 -0
- package/lib/packlets/logging/index.js +1 -0
- package/lib/packlets/logging/logReporter.d.ts +18 -3
- package/lib/packlets/logging/logReporter.js +31 -0
- package/lib/packlets/logging/logger.d.ts +39 -6
- package/lib/packlets/logging/logger.js +26 -5
- package/lib/packlets/validation/classes.d.ts +1 -0
- package/lib/packlets/validation/classes.js +3 -1
- package/lib/packlets/validation/compositeId.d.ts +29 -0
- package/lib/packlets/validation/compositeId.js +64 -0
- package/lib/packlets/validation/field.d.ts +1 -1
- package/lib/packlets/validation/field.js +1 -1
- package/lib/packlets/validation/genericValidator.d.ts +15 -11
- package/lib/packlets/validation/genericValidator.js +24 -10
- package/lib/packlets/validation/object.d.ts +3 -6
- package/lib/packlets/validation/object.js +3 -6
- package/lib/packlets/validation/traits.d.ts +3 -3
- package/lib/packlets/validation/validator.d.ts +7 -0
- package/lib/packlets/validation/validators.d.ts +10 -0
- package/lib/packlets/validation/validators.js +13 -0
- package/package.json +27 -27
package/dist/tsdoc-metadata.json
CHANGED
package/lib/index.d.ts
CHANGED
|
@@ -3,9 +3,9 @@ import * as Conversion from './packlets/conversion';
|
|
|
3
3
|
import * as Hash from './packlets/hash';
|
|
4
4
|
import * as Logging from './packlets/logging';
|
|
5
5
|
import * as Validation from './packlets/validation';
|
|
6
|
-
import { Collector, ICollectible, ConvertingCollector, IReadOnlyResultMap, ResultMap, ValidatingCollector, ValidatingConvertingCollector, ValidatingResultMap } from './packlets/collections';
|
|
6
|
+
import { AggregatedResultMap, Collector, ICollectible, ConvertingCollector, IReadOnlyResultMap, ResultMap, ValidatingCollector, ValidatingConvertingCollector, ValidatingResultMap } from './packlets/collections';
|
|
7
7
|
import { Converter, Converters, ObjectConverter, StringConverter } from './packlets/conversion';
|
|
8
8
|
import { Validator, Validators } from './packlets/validation';
|
|
9
9
|
export * from './packlets/base';
|
|
10
|
-
export { Collections, Collector, ConvertingCollector, Conversion, Converter, Converters, Hash, ICollectible, IReadOnlyResultMap, Logging, ObjectConverter, ResultMap, StringConverter, ValidatingCollector, ValidatingConvertingCollector, ValidatingResultMap, Validation, Validator, Validators };
|
|
10
|
+
export { AggregatedResultMap, Collections, Collector, ConvertingCollector, Conversion, Converter, Converters, Hash, ICollectible, IReadOnlyResultMap, Logging, ObjectConverter, ResultMap, StringConverter, ValidatingCollector, ValidatingConvertingCollector, ValidatingResultMap, Validation, Validator, Validators };
|
|
11
11
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.js
CHANGED
|
@@ -57,7 +57,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
57
57
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
58
58
|
};
|
|
59
59
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
60
|
-
exports.Validators = exports.Validation = exports.ValidatingResultMap = exports.ValidatingConvertingCollector = exports.ValidatingCollector = exports.StringConverter = exports.ResultMap = exports.ObjectConverter = exports.Logging = exports.Hash = exports.Converters = exports.Conversion = exports.ConvertingCollector = exports.Collector = exports.Collections = void 0;
|
|
60
|
+
exports.Validators = exports.Validation = exports.ValidatingResultMap = exports.ValidatingConvertingCollector = exports.ValidatingCollector = exports.StringConverter = exports.ResultMap = exports.ObjectConverter = exports.Logging = exports.Hash = exports.Converters = exports.Conversion = exports.ConvertingCollector = exports.Collector = exports.Collections = exports.AggregatedResultMap = void 0;
|
|
61
61
|
const Collections = __importStar(require("./packlets/collections"));
|
|
62
62
|
exports.Collections = Collections;
|
|
63
63
|
const Conversion = __importStar(require("./packlets/conversion"));
|
|
@@ -69,6 +69,7 @@ exports.Logging = Logging;
|
|
|
69
69
|
const Validation = __importStar(require("./packlets/validation"));
|
|
70
70
|
exports.Validation = Validation;
|
|
71
71
|
const collections_1 = require("./packlets/collections");
|
|
72
|
+
Object.defineProperty(exports, "AggregatedResultMap", { enumerable: true, get: function () { return collections_1.AggregatedResultMap; } });
|
|
72
73
|
Object.defineProperty(exports, "Collector", { enumerable: true, get: function () { return collections_1.Collector; } });
|
|
73
74
|
Object.defineProperty(exports, "ConvertingCollector", { enumerable: true, get: function () { return collections_1.ConvertingCollector; } });
|
|
74
75
|
Object.defineProperty(exports, "ResultMap", { enumerable: true, get: function () { return collections_1.ResultMap; } });
|
|
@@ -68,15 +68,15 @@ export declare function allSucceed<T>(results: Iterable<Result<unknown>>, succes
|
|
|
68
68
|
*/
|
|
69
69
|
export declare function firstSuccess<T>(results: Iterable<Result<T> | DeferredResult<T>>): Result<T>;
|
|
70
70
|
/**
|
|
71
|
-
* String-keyed record of initialization functions to be passed to {@link
|
|
72
|
-
* or {@link
|
|
71
|
+
* String-keyed record of initialization functions to be passed to {@link populateObject}
|
|
72
|
+
* or {@link populateObject}.
|
|
73
73
|
* @public
|
|
74
74
|
*/
|
|
75
75
|
export type FieldInitializers<T> = {
|
|
76
76
|
[key in keyof T]: (state: Partial<T>) => Result<T[key]>;
|
|
77
77
|
};
|
|
78
78
|
/**
|
|
79
|
-
* Options for the {@link
|
|
79
|
+
* Options for the {@link populateObject} function.
|
|
80
80
|
* @public
|
|
81
81
|
*/
|
|
82
82
|
export interface PopulateObjectOptions<T> {
|
|
@@ -14,27 +14,27 @@ export declare class MessageAggregator implements IMessageAggregator {
|
|
|
14
14
|
*/
|
|
15
15
|
constructor(errors?: string[]);
|
|
16
16
|
/**
|
|
17
|
-
* {@
|
|
17
|
+
* {@inheritDoc IMessageAggregator.hasMessages}
|
|
18
18
|
*/
|
|
19
19
|
get hasMessages(): boolean;
|
|
20
20
|
/**
|
|
21
|
-
* {@
|
|
21
|
+
* {@inheritDoc IMessageAggregator.numMessages}
|
|
22
22
|
*/
|
|
23
23
|
get numMessages(): number;
|
|
24
24
|
/**
|
|
25
|
-
* {@
|
|
25
|
+
* {@inheritDoc IMessageAggregator.messages}
|
|
26
26
|
*/
|
|
27
27
|
get messages(): string[];
|
|
28
28
|
/**
|
|
29
|
-
* {@
|
|
29
|
+
* {@inheritDoc IMessageAggregator.addMessage}
|
|
30
30
|
*/
|
|
31
31
|
addMessage(message: string | undefined): this;
|
|
32
32
|
/**
|
|
33
|
-
* {@
|
|
33
|
+
* {@inheritDoc IMessageAggregator.addMessages}
|
|
34
34
|
*/
|
|
35
35
|
addMessages(messages: string[] | undefined): this;
|
|
36
36
|
/**
|
|
37
|
-
* {@
|
|
37
|
+
* {@inheritDoc IMessageAggregator.toString}
|
|
38
38
|
*/
|
|
39
39
|
toString(separator?: string): string;
|
|
40
40
|
/**
|
|
@@ -39,25 +39,25 @@ class MessageAggregator {
|
|
|
39
39
|
this._messages = errors ? Array.from(errors) : [];
|
|
40
40
|
}
|
|
41
41
|
/**
|
|
42
|
-
* {@
|
|
42
|
+
* {@inheritDoc IMessageAggregator.hasMessages}
|
|
43
43
|
*/
|
|
44
44
|
get hasMessages() {
|
|
45
45
|
return this._messages.length > 0;
|
|
46
46
|
}
|
|
47
47
|
/**
|
|
48
|
-
* {@
|
|
48
|
+
* {@inheritDoc IMessageAggregator.numMessages}
|
|
49
49
|
*/
|
|
50
50
|
get numMessages() {
|
|
51
51
|
return this._messages.length;
|
|
52
52
|
}
|
|
53
53
|
/**
|
|
54
|
-
* {@
|
|
54
|
+
* {@inheritDoc IMessageAggregator.messages}
|
|
55
55
|
*/
|
|
56
56
|
get messages() {
|
|
57
57
|
return this._messages;
|
|
58
58
|
}
|
|
59
59
|
/**
|
|
60
|
-
* {@
|
|
60
|
+
* {@inheritDoc IMessageAggregator.addMessage}
|
|
61
61
|
*/
|
|
62
62
|
addMessage(message) {
|
|
63
63
|
if (message) {
|
|
@@ -66,7 +66,7 @@ class MessageAggregator {
|
|
|
66
66
|
return this;
|
|
67
67
|
}
|
|
68
68
|
/**
|
|
69
|
-
* {@
|
|
69
|
+
* {@inheritDoc IMessageAggregator.addMessages}
|
|
70
70
|
*/
|
|
71
71
|
addMessages(messages) {
|
|
72
72
|
if (messages && messages.length > 0) {
|
|
@@ -75,7 +75,7 @@ class MessageAggregator {
|
|
|
75
75
|
return this;
|
|
76
76
|
}
|
|
77
77
|
/**
|
|
78
|
-
* {@
|
|
78
|
+
* {@inheritDoc IMessageAggregator.toString}
|
|
79
79
|
*/
|
|
80
80
|
toString(separator) {
|
|
81
81
|
return this._messages.join(separator !== null && separator !== void 0 ? separator : '\n');
|
|
@@ -35,6 +35,22 @@ export type FailureContinuation<T> = (message: string) => Result<T>;
|
|
|
35
35
|
* @beta
|
|
36
36
|
*/
|
|
37
37
|
export type ResultValueType<T> = T extends Result<infer TV> ? TV : never;
|
|
38
|
+
/**
|
|
39
|
+
* Type inference to determine the result type of an {@link IResult}.
|
|
40
|
+
* @beta
|
|
41
|
+
*/
|
|
42
|
+
export type IResultValueType<T> = T extends IResult<infer TV> ? TV : never;
|
|
43
|
+
/**
|
|
44
|
+
* Type inference to determine the value type returned from a result-map style
|
|
45
|
+
* `get` method.
|
|
46
|
+
* @remarks
|
|
47
|
+
* Useful for extracting collection entry types from maps whose `get` method
|
|
48
|
+
* returns an {@link IResult}.
|
|
49
|
+
* @beta
|
|
50
|
+
*/
|
|
51
|
+
export type ResultMapValueType<TCollection extends {
|
|
52
|
+
get: (...args: readonly unknown[]) => unknown;
|
|
53
|
+
}> = Exclude<IResultValueType<ReturnType<TCollection['get']>>, undefined>;
|
|
38
54
|
/**
|
|
39
55
|
* Formats an error message.
|
|
40
56
|
* @param message - The error message to be formatted.
|
|
@@ -43,7 +59,7 @@ export type ResultValueType<T> = T extends Result<infer TV> ? TV : never;
|
|
|
43
59
|
*/
|
|
44
60
|
export type ErrorFormatter<TD = unknown> = (message: string, detail?: TD) => string;
|
|
45
61
|
/**
|
|
46
|
-
* Simple logger interface used by {@link IResult.
|
|
62
|
+
* Simple logger interface used by {@link IResult.orThrow | orThrow(logger)} and {@link IResult.orThrow | orThrow(formatter)}.
|
|
47
63
|
* @public
|
|
48
64
|
*/
|
|
49
65
|
export interface IResultLogger<TD = unknown> {
|
|
@@ -86,7 +102,9 @@ export interface IResultReportOptions<TD = unknown> {
|
|
|
86
102
|
* @public
|
|
87
103
|
*/
|
|
88
104
|
export interface IResultReporter<T, TD = unknown> {
|
|
105
|
+
/** Reports a successful result at the specified log level. */
|
|
89
106
|
reportSuccess(level: MessageLogLevel, value: T, detail?: TD, message?: ErrorFormatter<TD>): void;
|
|
107
|
+
/** Reports a failed result at the specified log level. */
|
|
90
108
|
reportFailure(level: MessageLogLevel, message: string, detail?: TD): void;
|
|
91
109
|
}
|
|
92
110
|
/**
|
|
@@ -170,7 +188,7 @@ export interface IResult<T> {
|
|
|
170
188
|
* error will also be reported.
|
|
171
189
|
* @returns The return value, if the operation was successful.
|
|
172
190
|
* @throws The error message if the operation failed.
|
|
173
|
-
* @deprecated Use {@link IResult.
|
|
191
|
+
* @deprecated Use {@link IResult.orThrow | orThrow(logger)} or {@link IResult.orThrow | orThrow(formatter)} instead.
|
|
174
192
|
*/
|
|
175
193
|
getValueOrThrow(logger?: IResultLogger): T;
|
|
176
194
|
/**
|
|
@@ -184,7 +202,7 @@ export interface IResult<T> {
|
|
|
184
202
|
*
|
|
185
203
|
* @returns The return value, if the operation was successful. Returns
|
|
186
204
|
* the supplied default value or `undefined` if no default is supplied.
|
|
187
|
-
* @deprecated Use {@link IResult.
|
|
205
|
+
* @deprecated Use {@link IResult.orDefault | orDefault(T)} or {@link IResult.orDefault | orDefault()} instead.
|
|
188
206
|
*/
|
|
189
207
|
getValueOrDefault(dflt?: T): T | undefined;
|
|
190
208
|
/**
|
|
@@ -300,7 +318,7 @@ export interface IResult<T> {
|
|
|
300
318
|
*/
|
|
301
319
|
export declare class Success<out T> implements IResult<T> {
|
|
302
320
|
/**
|
|
303
|
-
* {@
|
|
321
|
+
* {@inheritDoc IResult.success}
|
|
304
322
|
*/
|
|
305
323
|
readonly success: true;
|
|
306
324
|
/**
|
|
@@ -321,65 +339,65 @@ export declare class Success<out T> implements IResult<T> {
|
|
|
321
339
|
*/
|
|
322
340
|
get value(): T;
|
|
323
341
|
/**
|
|
324
|
-
* {@
|
|
342
|
+
* {@inheritDoc IResult.isSuccess}
|
|
325
343
|
*/
|
|
326
344
|
isSuccess(): this is Success<T>;
|
|
327
345
|
/**
|
|
328
|
-
* {@
|
|
346
|
+
* {@inheritDoc IResult.isFailure}
|
|
329
347
|
*/
|
|
330
348
|
isFailure(): this is Failure<T>;
|
|
331
349
|
/**
|
|
332
|
-
* {@
|
|
350
|
+
* {@inheritDoc IResult.orThrow}
|
|
333
351
|
*/
|
|
334
352
|
orThrow(logger?: IResultLogger): T;
|
|
335
353
|
/**
|
|
336
|
-
* {@
|
|
354
|
+
* {@inheritDoc IResult.orThrow}
|
|
337
355
|
*/
|
|
338
356
|
orThrow(cb: ErrorFormatter): T;
|
|
339
357
|
/**
|
|
340
|
-
* {@
|
|
358
|
+
* {@inheritDoc IResult.orDefault}
|
|
341
359
|
*/
|
|
342
360
|
orDefault(dflt: T): T;
|
|
343
361
|
/**
|
|
344
|
-
* {@
|
|
362
|
+
* {@inheritDoc IResult.orDefault}
|
|
345
363
|
*/
|
|
346
364
|
orDefault(): T | undefined;
|
|
347
365
|
/**
|
|
348
|
-
* {@
|
|
349
|
-
* @deprecated Use {@link Success.
|
|
366
|
+
* {@inheritDoc IResult.getValueOrThrow}
|
|
367
|
+
* @deprecated Use {@link Success.orThrow | orThrow(logger)} or {@link Success.orThrow | orThrow(formatter)} instead.
|
|
350
368
|
*/
|
|
351
369
|
getValueOrThrow(__logger?: IResultLogger): T;
|
|
352
370
|
/**
|
|
353
|
-
* {@
|
|
354
|
-
* @deprecated Use {@link Success.
|
|
371
|
+
* {@inheritDoc IResult.getValueOrDefault}
|
|
372
|
+
* @deprecated Use {@link Success.orDefault | orDefault(T)} or {@link Success.orDefault | orDefault()} instead.
|
|
355
373
|
*/
|
|
356
374
|
getValueOrDefault(dflt?: T): T | undefined;
|
|
357
375
|
/**
|
|
358
|
-
* {@
|
|
376
|
+
* {@inheritDoc IResult.onSuccess}
|
|
359
377
|
*/
|
|
360
378
|
onSuccess<TN>(cb: SuccessContinuation<T, TN>): Result<TN>;
|
|
361
379
|
/**
|
|
362
|
-
* {@
|
|
380
|
+
* {@inheritDoc IResult.onFailure}
|
|
363
381
|
*/
|
|
364
382
|
onFailure(__: FailureContinuation<T>): Result<T>;
|
|
365
383
|
/**
|
|
366
|
-
* {@
|
|
384
|
+
* {@inheritDoc IResult.withErrorFormat}
|
|
367
385
|
*/
|
|
368
386
|
withErrorFormat(__cb: ErrorFormatter): Result<T>;
|
|
369
387
|
/**
|
|
370
|
-
* {@
|
|
388
|
+
* {@inheritDoc IResult.withFailureDetail}
|
|
371
389
|
*/
|
|
372
390
|
withFailureDetail<TD>(__detail: TD): DetailedResult<T, TD>;
|
|
373
391
|
/**
|
|
374
|
-
* {@
|
|
392
|
+
* {@inheritDoc IResult.withDetail}
|
|
375
393
|
*/
|
|
376
394
|
withDetail<TD>(detail: TD, successDetail?: TD): DetailedResult<T, TD>;
|
|
377
395
|
/**
|
|
378
|
-
* {@
|
|
396
|
+
* {@inheritDoc IResult.aggregateError}
|
|
379
397
|
*/
|
|
380
398
|
aggregateError(__errors: IMessageAggregator, __formatter?: ErrorFormatter): this;
|
|
381
399
|
/**
|
|
382
|
-
* {@
|
|
400
|
+
* {@inheritDoc IResult.report}
|
|
383
401
|
*/
|
|
384
402
|
report(reporter?: IResultReporter<T>, options?: IResultReportOptions<unknown>): Success<T>;
|
|
385
403
|
/**
|
|
@@ -396,7 +414,7 @@ export declare class Success<out T> implements IResult<T> {
|
|
|
396
414
|
*/
|
|
397
415
|
export declare class Failure<out T> implements IResult<T> {
|
|
398
416
|
/**
|
|
399
|
-
* {@
|
|
417
|
+
* {@inheritDoc IResult.success}
|
|
400
418
|
*/
|
|
401
419
|
readonly success: false;
|
|
402
420
|
/**
|
|
@@ -417,65 +435,65 @@ export declare class Failure<out T> implements IResult<T> {
|
|
|
417
435
|
*/
|
|
418
436
|
get message(): string;
|
|
419
437
|
/**
|
|
420
|
-
* {@
|
|
438
|
+
* {@inheritDoc IResult.isSuccess}
|
|
421
439
|
*/
|
|
422
440
|
isSuccess(): this is Success<T>;
|
|
423
441
|
/**
|
|
424
|
-
* {@
|
|
442
|
+
* {@inheritDoc IResult.isFailure}
|
|
425
443
|
*/
|
|
426
444
|
isFailure(): this is Failure<T>;
|
|
427
445
|
/**
|
|
428
|
-
* {@
|
|
446
|
+
* {@inheritDoc IResult.orThrow}
|
|
429
447
|
*/
|
|
430
448
|
orThrow(logger?: IResultLogger): never;
|
|
431
449
|
/**
|
|
432
|
-
* {@
|
|
450
|
+
* {@inheritDoc IResult.orThrow}
|
|
433
451
|
*/
|
|
434
452
|
orThrow(cb: ErrorFormatter): never;
|
|
435
453
|
/**
|
|
436
|
-
* {@
|
|
454
|
+
* {@inheritDoc IResult.orDefault}
|
|
437
455
|
*/
|
|
438
456
|
orDefault(dflt: T): T;
|
|
439
457
|
/**
|
|
440
|
-
* {@
|
|
458
|
+
* {@inheritDoc IResult.orDefault}
|
|
441
459
|
*/
|
|
442
460
|
orDefault(): T | undefined;
|
|
443
461
|
/**
|
|
444
|
-
* {@
|
|
445
|
-
* @deprecated Use {@link Failure.
|
|
462
|
+
* {@inheritDoc IResult.getValueOrThrow}
|
|
463
|
+
* @deprecated Use {@link Failure.orThrow | orThrow(logger)} or {@link Failure.orThrow | orThrow(formatter)} instead.
|
|
446
464
|
*/
|
|
447
465
|
getValueOrThrow(logger?: IResultLogger): never;
|
|
448
466
|
/**
|
|
449
|
-
* {@
|
|
450
|
-
* @deprecated Use {@link Failure.
|
|
467
|
+
* {@inheritDoc IResult.getValueOrDefault}
|
|
468
|
+
* @deprecated Use {@link Failure.orDefault | orDefault(T)} or {@link Failure.orDefault | orDefault()} instead.
|
|
451
469
|
*/
|
|
452
470
|
getValueOrDefault(dflt?: T): T | undefined;
|
|
453
471
|
/**
|
|
454
|
-
* {@
|
|
472
|
+
* {@inheritDoc IResult.onSuccess}
|
|
455
473
|
*/
|
|
456
474
|
onSuccess<TN>(__: SuccessContinuation<T, TN>): Result<TN>;
|
|
457
475
|
/**
|
|
458
|
-
* {@
|
|
476
|
+
* {@inheritDoc IResult.onFailure}
|
|
459
477
|
*/
|
|
460
478
|
onFailure(cb: FailureContinuation<T>): Result<T>;
|
|
461
479
|
/**
|
|
462
|
-
* {@
|
|
480
|
+
* {@inheritDoc IResult.withErrorFormat}
|
|
463
481
|
*/
|
|
464
482
|
withErrorFormat(cb: ErrorFormatter): Result<T>;
|
|
465
483
|
/**
|
|
466
|
-
* {@
|
|
484
|
+
* {@inheritDoc IResult.withFailureDetail}
|
|
467
485
|
*/
|
|
468
486
|
withFailureDetail<TD>(detail: TD): DetailedResult<T, TD>;
|
|
469
487
|
/**
|
|
470
|
-
* {@
|
|
488
|
+
* {@inheritDoc IResult.withDetail}
|
|
471
489
|
*/
|
|
472
490
|
withDetail<TD>(detail: TD, __successDetail?: TD): DetailedResult<T, TD>;
|
|
473
491
|
/**
|
|
474
|
-
* {@
|
|
492
|
+
* {@inheritDoc IResult.aggregateError}
|
|
475
493
|
*/
|
|
476
494
|
aggregateError(errors: IMessageAggregator, formatter?: ErrorFormatter): this;
|
|
477
495
|
/**
|
|
478
|
-
* {@
|
|
496
|
+
* {@inheritDoc IResult.report}
|
|
479
497
|
*/
|
|
480
498
|
report(reporter?: IResultReporter<T>, options?: IResultReportOptions<unknown>): Failure<T>;
|
|
481
499
|
/**
|
|
@@ -503,7 +521,7 @@ export declare class Failure<out T> implements IResult<T> {
|
|
|
503
521
|
*/
|
|
504
522
|
export declare function succeed<T>(value: T): Success<T>;
|
|
505
523
|
/**
|
|
506
|
-
* {@
|
|
524
|
+
* {@inheritDoc succeed}
|
|
507
525
|
* @public
|
|
508
526
|
*/
|
|
509
527
|
export declare function succeeds<T>(value: T): Success<T>;
|
|
@@ -517,7 +535,7 @@ export declare function succeeds<T>(value: T): Success<T>;
|
|
|
517
535
|
*/
|
|
518
536
|
export declare function fail<T>(message: string): Failure<T>;
|
|
519
537
|
/**
|
|
520
|
-
* {@
|
|
538
|
+
* {@inheritDoc fail}
|
|
521
539
|
* @public
|
|
522
540
|
*/
|
|
523
541
|
export declare function fails<T>(message: string): Failure<T>;
|
|
@@ -591,17 +609,17 @@ export declare class DetailedSuccess<out T, out TD> extends Success<T> {
|
|
|
591
609
|
* Propagates this {@link DetailedSuccess}.
|
|
592
610
|
* @remarks
|
|
593
611
|
* Failure does not mutate return type so we can return this event directly.
|
|
594
|
-
* @param
|
|
612
|
+
* @param __cb - {@link DetailedFailureContinuation | Failure callback} to be called
|
|
595
613
|
* on a {@link DetailedResult} in case of failure (ignored).
|
|
596
614
|
* @returns `this`
|
|
597
615
|
*/
|
|
598
616
|
onFailure(__cb: DetailedFailureContinuation<T, TD>): DetailedResult<T, TD>;
|
|
599
617
|
/**
|
|
600
|
-
* {@
|
|
618
|
+
* {@inheritDoc Success.withErrorFormat}
|
|
601
619
|
*/
|
|
602
620
|
withErrorFormat(cb: ErrorFormatter): DetailedResult<T, TD>;
|
|
603
621
|
/**
|
|
604
|
-
* {@
|
|
622
|
+
* {@inheritDoc IResult.report}
|
|
605
623
|
*/
|
|
606
624
|
report(reporter?: IResultReporter<T, unknown>, options?: IResultReportOptions<unknown>): DetailedSuccess<T, TD>;
|
|
607
625
|
/**
|
|
@@ -649,7 +667,7 @@ export declare class DetailedFailure<out T, out TD> extends Failure<T> {
|
|
|
649
667
|
* @remarks
|
|
650
668
|
* Mutates the success type as the success callback would have, but does not
|
|
651
669
|
* call the success callback.
|
|
652
|
-
* @param
|
|
670
|
+
* @param __cb - {@link DetailedSuccessContinuation | Success callback} to be called
|
|
653
671
|
* on a {@link DetailedResult} in case of success (ignored).
|
|
654
672
|
* @returns A new {@link DetailedFailure | DetailedFailure<TN, TD>} which contains
|
|
655
673
|
* the error message and detail from this one.
|
|
@@ -663,15 +681,15 @@ export declare class DetailedFailure<out T, out TD> extends Failure<T> {
|
|
|
663
681
|
*/
|
|
664
682
|
onFailure(cb: DetailedFailureContinuation<T, TD>): DetailedResult<T, TD>;
|
|
665
683
|
/**
|
|
666
|
-
* {@
|
|
684
|
+
* {@inheritDoc IResult.withErrorFormat}
|
|
667
685
|
*/
|
|
668
686
|
withErrorFormat(cb: ErrorFormatter<TD>): DetailedResult<T, TD>;
|
|
669
687
|
/**
|
|
670
|
-
* {@
|
|
688
|
+
* {@inheritDoc IResult.aggregateError}
|
|
671
689
|
*/
|
|
672
690
|
aggregateError(errors: IMessageAggregator, formatter?: ErrorFormatter<TD>): this;
|
|
673
691
|
/**
|
|
674
|
-
* {@
|
|
692
|
+
* {@inheritDoc IResult.report}
|
|
675
693
|
*/
|
|
676
694
|
report(reporter?: IResultReporter<T, unknown>, options?: IResultReportOptions<unknown>): DetailedFailure<T, TD>;
|
|
677
695
|
orThrow(logOrFormat?: IResultLogger<TD> | ErrorFormatter<TD>): never;
|
|
@@ -692,10 +710,15 @@ export declare class DetailedFailure<out T, out TD> extends Failure<T> {
|
|
|
692
710
|
static with<T, TD>(message: string, detail?: TD): DetailedFailure<T, TD>;
|
|
693
711
|
}
|
|
694
712
|
/**
|
|
695
|
-
*
|
|
713
|
+
* Represents a result with additional detail.
|
|
696
714
|
* @beta
|
|
697
715
|
*/
|
|
698
716
|
export type DetailedResult<T, TD> = DetailedSuccess<T, TD> | DetailedFailure<T, TD>;
|
|
717
|
+
/**
|
|
718
|
+
* Type inference to determine the result type `T` of a {@link DetailedResult | DetailedResult<T, TD>}.
|
|
719
|
+
* @beta
|
|
720
|
+
*/
|
|
721
|
+
export type DetailedResultValueType<T> = T extends DetailedResult<infer TV, unknown> ? TV : never;
|
|
699
722
|
/**
|
|
700
723
|
* Type inference to determine the detail type `TD` of a {@link DetailedResult | DetailedResult<T, TD>}.
|
|
701
724
|
* @beta
|
|
@@ -716,7 +739,7 @@ export type ResultDetailType<T> = T extends DetailedResult<unknown, infer TD> ?
|
|
|
716
739
|
*/
|
|
717
740
|
export declare function succeedWithDetail<T, TD>(value: T, detail?: TD): DetailedSuccess<T, TD>;
|
|
718
741
|
/**
|
|
719
|
-
* {@
|
|
742
|
+
* {@inheritDoc succeedWithDetail}
|
|
720
743
|
* @public
|
|
721
744
|
*/
|
|
722
745
|
export declare function succeedsWithDetail<T, TD>(value: T, detail?: TD): DetailedSuccess<T, TD>;
|
|
@@ -733,7 +756,7 @@ export declare function succeedsWithDetail<T, TD>(value: T, detail?: TD): Detail
|
|
|
733
756
|
*/
|
|
734
757
|
export declare function failWithDetail<T, TD>(message: string, detail?: TD): DetailedFailure<T, TD>;
|
|
735
758
|
/**
|
|
736
|
-
* {@
|
|
759
|
+
* {@inheritDoc failWithDetail}
|
|
737
760
|
* @public
|
|
738
761
|
*/
|
|
739
762
|
export declare function failsWithDetail<T, TD>(message: string, detail?: TD): DetailedFailure<T, TD>;
|