@@ -3,13 +3,20 @@ import type { Predicate } from "./is.ts";
33export type AssertMessageFactory = (
44 x : unknown ,
55 pred : Predicate < unknown > ,
6+ name ?: string ,
67) => string ;
78
8- export const defaultAssertMessageFactory : AssertMessageFactory = ( x , pred ) => {
9+ export const defaultAssertMessageFactory : AssertMessageFactory = (
10+ x ,
11+ pred ,
12+ name ,
13+ ) => {
914 const p = pred . name || "anonymous predicate" ;
1015 const t = typeof x ;
1116 const v = JSON . stringify ( x , null , 2 ) ;
12- return `Expected a value that satisfies the predicate ${ p } , got ${ t } : ${ v } ` ;
17+ return `Expected ${
18+ name ?? "a value"
19+ } that satisfies the predicate ${ p } , got ${ t } : ${ v } `;
1320} ;
1421
1522let assertMessageFactory = defaultAssertMessageFactory ;
@@ -79,11 +86,11 @@ export function setAssertMessageFactory(factory: AssertMessageFactory): void {
7986export function assert < T > (
8087 x : unknown ,
8188 pred : Predicate < T > ,
82- options : { message ?: string } = { } ,
89+ options : { message ?: string ; name ?: string } = { } ,
8390) : asserts x is T {
8491 if ( ! pred ( x ) ) {
8592 throw new AssertError (
86- options . message ?? assertMessageFactory ( x , pred ) ,
93+ options . message ?? assertMessageFactory ( x , pred , options . name ) ,
8794 ) ;
8895 }
8996}
@@ -108,7 +115,7 @@ export function assert<T>(
108115export function ensure < T > (
109116 x : unknown ,
110117 pred : Predicate < T > ,
111- options : { message ?: string } = { } ,
118+ options : { message ?: string ; name ?: string } = { } ,
112119) : T {
113120 assert ( x , pred , options ) ;
114121 return x ;
0 commit comments