@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.
Files changed (104) hide show
  1. package/README.md +152 -84
  2. package/dist/index.js +2 -2
  3. package/dist/packlets/base/messageAggregator.js +6 -6
  4. package/dist/packlets/base/result.js +39 -39
  5. package/dist/packlets/base/utils.js +47 -0
  6. package/dist/packlets/collections/aggregatedResultMap.js +722 -0
  7. package/dist/packlets/collections/collector.js +9 -9
  8. package/dist/packlets/collections/collectorValidator.js +4 -4
  9. package/dist/packlets/collections/converters.js +39 -0
  10. package/dist/packlets/collections/convertingCollectorValidator.js +3 -3
  11. package/dist/packlets/collections/convertingResultMap.js +208 -0
  12. package/dist/packlets/collections/index.js +4 -0
  13. package/dist/packlets/collections/keyValueConverters.js +1 -4
  14. package/dist/packlets/collections/readOnlyConvertingResultMap.js +193 -0
  15. package/dist/packlets/collections/resultMapValidator.js +50 -6
  16. package/dist/packlets/collections/validatingConvertingResultMap.js +78 -0
  17. package/dist/packlets/conversion/advancedConverters.js +249 -0
  18. package/dist/packlets/conversion/baseConverter.js +23 -16
  19. package/dist/packlets/conversion/basicConverters.js +571 -0
  20. package/dist/packlets/conversion/converters.js +3 -617
  21. package/dist/packlets/conversion/defaultingConverter.js +21 -15
  22. package/dist/packlets/logging/bootLogger.js +122 -0
  23. package/dist/packlets/logging/index.js +1 -0
  24. package/dist/packlets/logging/logReporter.js +32 -1
  25. package/dist/packlets/logging/logger.js +25 -5
  26. package/dist/packlets/validation/classes.js +1 -0
  27. package/dist/packlets/validation/compositeId.js +60 -0
  28. package/dist/packlets/validation/field.js +1 -1
  29. package/dist/packlets/validation/genericValidator.js +24 -10
  30. package/dist/packlets/validation/object.js +3 -6
  31. package/dist/packlets/validation/validators.js +12 -0
  32. package/dist/ts-utils.d.ts +1633 -200
  33. package/dist/tsdoc-metadata.json +1 -1
  34. package/lib/index.d.ts +2 -2
  35. package/lib/index.js +2 -1
  36. package/lib/packlets/base/mapResults.d.ts +3 -3
  37. package/lib/packlets/base/messageAggregator.d.ts +6 -6
  38. package/lib/packlets/base/messageAggregator.js +6 -6
  39. package/lib/packlets/base/result.d.ts +74 -51
  40. package/lib/packlets/base/result.js +39 -39
  41. package/lib/packlets/base/utils.d.ts +42 -0
  42. package/lib/packlets/base/utils.js +52 -0
  43. package/lib/packlets/collections/aggregatedResultMap.d.ts +433 -0
  44. package/lib/packlets/collections/aggregatedResultMap.js +728 -0
  45. package/lib/packlets/collections/collector.d.ts +11 -10
  46. package/lib/packlets/collections/collector.js +9 -9
  47. package/lib/packlets/collections/collectorValidator.d.ts +12 -10
  48. package/lib/packlets/collections/collectorValidator.js +4 -4
  49. package/lib/packlets/collections/converters.d.ts +18 -0
  50. package/lib/packlets/collections/converters.js +42 -0
  51. package/lib/packlets/collections/convertingCollector.d.ts +4 -4
  52. package/lib/packlets/collections/convertingCollectorValidator.d.ts +10 -7
  53. package/lib/packlets/collections/convertingCollectorValidator.js +3 -3
  54. package/lib/packlets/collections/convertingResultMap.d.ts +176 -0
  55. package/lib/packlets/collections/convertingResultMap.js +213 -0
  56. package/lib/packlets/collections/index.d.ts +4 -0
  57. package/lib/packlets/collections/index.js +4 -0
  58. package/lib/packlets/collections/keyValueConverters.d.ts +1 -4
  59. package/lib/packlets/collections/keyValueConverters.js +1 -4
  60. package/lib/packlets/collections/readOnlyConvertingResultMap.d.ts +153 -0
  61. package/lib/packlets/collections/readOnlyConvertingResultMap.js +197 -0
  62. package/lib/packlets/collections/readonlyResultMap.d.ts +7 -7
  63. package/lib/packlets/collections/resultMap.d.ts +108 -2
  64. package/lib/packlets/collections/resultMapValidator.d.ts +45 -11
  65. package/lib/packlets/collections/resultMapValidator.js +52 -7
  66. package/lib/packlets/collections/validatingCollector.d.ts +5 -5
  67. package/lib/packlets/collections/validatingConvertingCollector.d.ts +3 -3
  68. package/lib/packlets/collections/validatingConvertingResultMap.d.ts +102 -0
  69. package/lib/packlets/collections/validatingConvertingResultMap.js +83 -0
  70. package/lib/packlets/collections/validatingResultMap.d.ts +1 -1
  71. package/lib/packlets/conversion/advancedConverters.d.ts +170 -0
  72. package/lib/packlets/conversion/advancedConverters.js +258 -0
  73. package/lib/packlets/conversion/baseConverter.d.ts +39 -23
  74. package/lib/packlets/conversion/baseConverter.js +23 -16
  75. package/lib/packlets/conversion/basicConverters.d.ts +470 -0
  76. package/lib/packlets/conversion/basicConverters.js +595 -0
  77. package/lib/packlets/conversion/converter.d.ts +7 -0
  78. package/lib/packlets/conversion/converters.d.ts +2 -535
  79. package/lib/packlets/conversion/converters.js +17 -639
  80. package/lib/packlets/conversion/defaultingConverter.d.ts +20 -16
  81. package/lib/packlets/conversion/defaultingConverter.js +21 -15
  82. package/lib/packlets/logging/bootLogger.d.ts +84 -0
  83. package/lib/packlets/logging/bootLogger.js +126 -0
  84. package/lib/packlets/logging/index.d.ts +1 -0
  85. package/lib/packlets/logging/index.js +1 -0
  86. package/lib/packlets/logging/logReporter.d.ts +18 -3
  87. package/lib/packlets/logging/logReporter.js +31 -0
  88. package/lib/packlets/logging/logger.d.ts +39 -6
  89. package/lib/packlets/logging/logger.js +26 -5
  90. package/lib/packlets/validation/classes.d.ts +1 -0
  91. package/lib/packlets/validation/classes.js +3 -1
  92. package/lib/packlets/validation/compositeId.d.ts +29 -0
  93. package/lib/packlets/validation/compositeId.js +64 -0
  94. package/lib/packlets/validation/field.d.ts +1 -1
  95. package/lib/packlets/validation/field.js +1 -1
  96. package/lib/packlets/validation/genericValidator.d.ts +15 -11
  97. package/lib/packlets/validation/genericValidator.js +24 -10
  98. package/lib/packlets/validation/object.d.ts +3 -6
  99. package/lib/packlets/validation/object.js +3 -6
  100. package/lib/packlets/validation/traits.d.ts +3 -3
  101. package/lib/packlets/validation/validator.d.ts +7 -0
  102. package/lib/packlets/validation/validators.d.ts +10 -0
  103. package/lib/packlets/validation/validators.js +13 -0
  104. package/package.json +27 -27
@@ -5,7 +5,7 @@
5
5
  "toolPackages": [
6
6
  {
7
7
  "packageName": "@microsoft/api-extractor",
8
- "packageVersion": "7.54.0"
8
+ "packageVersion": "7.57.6"
9
9
  }
10
10
  ]
11
11
  }
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 (populateObject:1)}
72
- * or {@link (populateObject:2)}.
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 (populateObject:1)} function.
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
- * {@inheritdoc IMessageAggregator.hasMessages}
17
+ * {@inheritDoc IMessageAggregator.hasMessages}
18
18
  */
19
19
  get hasMessages(): boolean;
20
20
  /**
21
- * {@inheritdoc IMessageAggregator.numMessages}
21
+ * {@inheritDoc IMessageAggregator.numMessages}
22
22
  */
23
23
  get numMessages(): number;
24
24
  /**
25
- * {@inheritdoc IMessageAggregator.messages}
25
+ * {@inheritDoc IMessageAggregator.messages}
26
26
  */
27
27
  get messages(): string[];
28
28
  /**
29
- * {@inheritdoc IMessageAggregator.addMessage}
29
+ * {@inheritDoc IMessageAggregator.addMessage}
30
30
  */
31
31
  addMessage(message: string | undefined): this;
32
32
  /**
33
- * {@inheritdoc IMessageAggregator.addMessages}
33
+ * {@inheritDoc IMessageAggregator.addMessages}
34
34
  */
35
35
  addMessages(messages: string[] | undefined): this;
36
36
  /**
37
- * {@inheritdoc IMessageAggregator.toString}
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
- * {@inheritdoc IMessageAggregator.hasMessages}
42
+ * {@inheritDoc IMessageAggregator.hasMessages}
43
43
  */
44
44
  get hasMessages() {
45
45
  return this._messages.length > 0;
46
46
  }
47
47
  /**
48
- * {@inheritdoc IMessageAggregator.numMessages}
48
+ * {@inheritDoc IMessageAggregator.numMessages}
49
49
  */
50
50
  get numMessages() {
51
51
  return this._messages.length;
52
52
  }
53
53
  /**
54
- * {@inheritdoc IMessageAggregator.messages}
54
+ * {@inheritDoc IMessageAggregator.messages}
55
55
  */
56
56
  get messages() {
57
57
  return this._messages;
58
58
  }
59
59
  /**
60
- * {@inheritdoc IMessageAggregator.addMessage}
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
- * {@inheritdoc IMessageAggregator.addMessages}
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
- * {@inheritdoc IMessageAggregator.toString}
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.(orThrow:1) | orThrow(logger)} and {@link IResult.(orThrow:2) | orThrow(formatter)}.
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.(orThrow:1) | orThrow(logger)} or {@link IResult.(orThrow:2) | orThrow(formatter)} instead.
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.(orDefault:1) | orDefault(T)} or {@link IResult.(orDefault:2) | orDefault()} instead.
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
- * {@inheritdoc IResult.success}
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
- * {@inheritdoc IResult.isSuccess}
342
+ * {@inheritDoc IResult.isSuccess}
325
343
  */
326
344
  isSuccess(): this is Success<T>;
327
345
  /**
328
- * {@inheritdoc IResult.isFailure}
346
+ * {@inheritDoc IResult.isFailure}
329
347
  */
330
348
  isFailure(): this is Failure<T>;
331
349
  /**
332
- * {@inheritdoc IResult.(orThrow:1)}
350
+ * {@inheritDoc IResult.orThrow}
333
351
  */
334
352
  orThrow(logger?: IResultLogger): T;
335
353
  /**
336
- * {@inheritdoc IResult.(orThrow:2)}
354
+ * {@inheritDoc IResult.orThrow}
337
355
  */
338
356
  orThrow(cb: ErrorFormatter): T;
339
357
  /**
340
- * {@inheritdoc IResult.(orDefault:1)}
358
+ * {@inheritDoc IResult.orDefault}
341
359
  */
342
360
  orDefault(dflt: T): T;
343
361
  /**
344
- * {@inheritdoc IResult.(orDefault:2)}
362
+ * {@inheritDoc IResult.orDefault}
345
363
  */
346
364
  orDefault(): T | undefined;
347
365
  /**
348
- * {@inheritdoc IResult.getValueOrThrow}
349
- * @deprecated Use {@link Success.(orThrow:1) | orThrow(logger)} or {@link Success.(orThrow:2) | orThrow(formatter)} instead.
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
- * {@inheritdoc IResult.getValueOrDefault}
354
- * @deprecated Use {@link Success.(orDefault:1) | orDefault(T)} or {@link Success.(orDefault:2) | orDefault()} instead.
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
- * {@inheritdoc IResult.onSuccess}
376
+ * {@inheritDoc IResult.onSuccess}
359
377
  */
360
378
  onSuccess<TN>(cb: SuccessContinuation<T, TN>): Result<TN>;
361
379
  /**
362
- * {@inheritdoc IResult.onFailure}
380
+ * {@inheritDoc IResult.onFailure}
363
381
  */
364
382
  onFailure(__: FailureContinuation<T>): Result<T>;
365
383
  /**
366
- * {@inheritdoc IResult.withErrorFormat}
384
+ * {@inheritDoc IResult.withErrorFormat}
367
385
  */
368
386
  withErrorFormat(__cb: ErrorFormatter): Result<T>;
369
387
  /**
370
- * {@inheritdoc IResult.withFailureDetail}
388
+ * {@inheritDoc IResult.withFailureDetail}
371
389
  */
372
390
  withFailureDetail<TD>(__detail: TD): DetailedResult<T, TD>;
373
391
  /**
374
- * {@inheritdoc IResult.withDetail}
392
+ * {@inheritDoc IResult.withDetail}
375
393
  */
376
394
  withDetail<TD>(detail: TD, successDetail?: TD): DetailedResult<T, TD>;
377
395
  /**
378
- * {@inheritdoc IResult.aggregateError}
396
+ * {@inheritDoc IResult.aggregateError}
379
397
  */
380
398
  aggregateError(__errors: IMessageAggregator, __formatter?: ErrorFormatter): this;
381
399
  /**
382
- * {@inheritdoc IResult.report}
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
- * {@inheritdoc IResult.success}
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
- * {@inheritdoc IResult.isSuccess}
438
+ * {@inheritDoc IResult.isSuccess}
421
439
  */
422
440
  isSuccess(): this is Success<T>;
423
441
  /**
424
- * {@inheritdoc IResult.isFailure}
442
+ * {@inheritDoc IResult.isFailure}
425
443
  */
426
444
  isFailure(): this is Failure<T>;
427
445
  /**
428
- * {@inheritdoc IResult.(orThrow:1)}
446
+ * {@inheritDoc IResult.orThrow}
429
447
  */
430
448
  orThrow(logger?: IResultLogger): never;
431
449
  /**
432
- * {@inheritdoc IResult.(orThrow:2)}
450
+ * {@inheritDoc IResult.orThrow}
433
451
  */
434
452
  orThrow(cb: ErrorFormatter): never;
435
453
  /**
436
- * {@inheritdoc IResult.(orDefault:1)}
454
+ * {@inheritDoc IResult.orDefault}
437
455
  */
438
456
  orDefault(dflt: T): T;
439
457
  /**
440
- * {@inheritdoc IResult.(orDefault:2)}
458
+ * {@inheritDoc IResult.orDefault}
441
459
  */
442
460
  orDefault(): T | undefined;
443
461
  /**
444
- * {@inheritdoc IResult.getValueOrThrow}
445
- * @deprecated Use {@link Failure.(orThrow:1) | orThrow(logger)} or {@link Failure.(orThrow:2) | orThrow(formatter)} instead.
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
- * {@inheritdoc IResult.getValueOrDefault}
450
- * @deprecated Use {@link Failure.(orDefault:1) | orDefault(T)} or {@link Failure.(orDefault:2) | orDefault()} instead.
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
- * {@inheritdoc IResult.onSuccess}
472
+ * {@inheritDoc IResult.onSuccess}
455
473
  */
456
474
  onSuccess<TN>(__: SuccessContinuation<T, TN>): Result<TN>;
457
475
  /**
458
- * {@inheritdoc IResult.onFailure}
476
+ * {@inheritDoc IResult.onFailure}
459
477
  */
460
478
  onFailure(cb: FailureContinuation<T>): Result<T>;
461
479
  /**
462
- * {@inheritdoc IResult.withErrorFormat}
480
+ * {@inheritDoc IResult.withErrorFormat}
463
481
  */
464
482
  withErrorFormat(cb: ErrorFormatter): Result<T>;
465
483
  /**
466
- * {@inheritdoc IResult.withFailureDetail}
484
+ * {@inheritDoc IResult.withFailureDetail}
467
485
  */
468
486
  withFailureDetail<TD>(detail: TD): DetailedResult<T, TD>;
469
487
  /**
470
- * {@inheritdoc IResult.withDetail}
488
+ * {@inheritDoc IResult.withDetail}
471
489
  */
472
490
  withDetail<TD>(detail: TD, __successDetail?: TD): DetailedResult<T, TD>;
473
491
  /**
474
- * {@inheritdoc IResult.aggregateError}
492
+ * {@inheritDoc IResult.aggregateError}
475
493
  */
476
494
  aggregateError(errors: IMessageAggregator, formatter?: ErrorFormatter): this;
477
495
  /**
478
- * {@inheritdoc IResult.report}
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
- * {@inheritdoc succeed}
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
- * {@inheritdoc fail}
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 _cb - {@link DetailedFailureContinuation | Failure callback} to be called
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
- * {@inheritdoc Success.withErrorFormat}
618
+ * {@inheritDoc Success.withErrorFormat}
601
619
  */
602
620
  withErrorFormat(cb: ErrorFormatter): DetailedResult<T, TD>;
603
621
  /**
604
- * {@inheritdoc IResult.report}
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 _cb - {@link DetailedSuccessContinuation | Success callback} to be called
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
- * {@inheritdoc IResult.withErrorFormat}
684
+ * {@inheritDoc IResult.withErrorFormat}
667
685
  */
668
686
  withErrorFormat(cb: ErrorFormatter<TD>): DetailedResult<T, TD>;
669
687
  /**
670
- * {@inheritdoc IResult.aggregateError}
688
+ * {@inheritDoc IResult.aggregateError}
671
689
  */
672
690
  aggregateError(errors: IMessageAggregator, formatter?: ErrorFormatter<TD>): this;
673
691
  /**
674
- * {@inheritdoc IResult.report}
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
- * Type inference to determine the result type `T` of a {@link DetailedResult | DetailedResult<T, TD>}.
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
- * {@inheritdoc succeedWithDetail}
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
- * {@inheritdoc failWithDetail}
759
+ * {@inheritDoc failWithDetail}
737
760
  * @public
738
761
  */
739
762
  export declare function failsWithDetail<T, TD>(message: string, detail?: TD): DetailedFailure<T, TD>;