{"version":3,"sources":["../src/matchers/Match.ts"],"sourcesContent":["import { isDefined } from '../utils/Utils';\nimport { Message, toMessage } from '../utils/Types';\n\nexport class Match<S> {\n  constructor(private readonly subject: S, private readonly failed = false, private readonly message: Message<S> = '') {}\n\n  not(p: (s: S) => boolean, message: Message<S>): Match<S> {\n    if (this.failed) {\n      return this;\n    }\n    try {\n      return new Match<S>(this.subject, !p(this.subject), toMessage(message, this.subject));\n    } catch (e: any) {\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n      return new Match<S>(this.subject, true, e.message);\n    }\n  }\n\n  undefined(p: (s: S) => any, message: Message<S>): Match<S> {\n    return this.not(() => isDefined(p(this.subject)), message);\n  }\n\n  else(message: Message<S>): jest.CustomMatcherResult {\n    return {\n      pass: !this.failed,\n      message: () => (this.failed ? toMessage(this.message) : `${toMessage(message, this.subject)}, which we did not expect.`),\n    };\n  }\n}\n\nexport const match = <S>(subject: S): Match<S> => new Match<S>(subject);\n"],"mappings":";;;;;;;;AAGO,IAAM,QAAN,MAAM,OAAS;AAAA,EACpB,YAA6B,SAA6B,SAAS,OAAwB,UAAsB,IAAI;AAAxF;AAA6B;AAAiC;AAAA,EAA2B;AAAA,EAEtH,IAAI,GAAsB,SAA+B;AACvD,QAAI,KAAK,QAAQ;AACf,aAAO;AAAA,IACT;AACA,QAAI;AACF,aAAO,IAAI,OAAS,KAAK,SAAS,CAAC,EAAE,KAAK,OAAO,GAAG,UAAU,SAAS,KAAK,OAAO,CAAC;AAAA,IACtF,SAAS,GAAQ;AAEf,aAAO,IAAI,OAAS,KAAK,SAAS,MAAM,EAAE,OAAO;AAAA,IACnD;AAAA,EACF;AAAA,EAEA,UAAU,GAAkB,SAA+B;AACzD,WAAO,KAAK,IAAI,MAAM,UAAU,EAAE,KAAK,OAAO,CAAC,GAAG,OAAO;AAAA,EAC3D;AAAA,EAEA,KAAK,SAA+C;AAClD,WAAO;AAAA,MACL,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS,MAAO,KAAK,SAAS,UAAU,KAAK,OAAO,IAAI,GAAG,UAAU,SAAS,KAAK,OAAO,CAAC;AAAA,IAC7F;AAAA,EACF;AACF;AAEO,IAAM,QAAQ,CAAI,YAAyB,IAAI,MAAS,OAAO;","names":[]}