{"version":3,"sources":["../../src/matchers/toMatchJson.ts"],"sourcesContent":["import { match } from './Match';\nimport { eq } from '../utils/Eq';\nimport { asJson } from '../utils/Utils';\n\nexport const MatchesJson = {\n  SubjectUndefined: 'Subject is undefined.',\n  SubsetUndefined: 'Subset to match with is undefined.',\n  DoesNotMatch: 'Subset does not match subject.',\n  Yes: 'Subset matches subject',\n};\n\nexport const toMatchJson = (value?: unknown, subset?: unknown): jest.CustomMatcherResult =>\n  match<unknown>(value)\n    .undefined(v => v, MatchesJson.SubjectUndefined)\n    .undefined(() => subset, MatchesJson.SubsetUndefined)\n    .not(v => eq.subset(asJson(v), asJson(subset)), MatchesJson.DoesNotMatch)\n    .else(() => MatchesJson.Yes);\n\nexpect.extend({\n  toMatchJson: toMatchJson,\n});\n\ndeclare global {\n  // eslint-disable-next-line @typescript-eslint/no-namespace\n  namespace jest {\n    interface Matchers<R, T> {\n      toMatchJson(subset?: unknown): R;\n    }\n  }\n}\n"],"mappings":";;;;;;;;;;;;AAIO,IAAM,cAAc;AAAA,EACzB,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,cAAc;AAAA,EACd,KAAK;AACP;AAEO,IAAM,cAAc,CAAC,OAAiB,WAC3C,MAAe,KAAK,EACjB,UAAU,OAAK,GAAG,YAAY,gBAAgB,EAC9C,UAAU,MAAM,QAAQ,YAAY,eAAe,EACnD,IAAI,OAAK,GAAG,OAAO,OAAO,CAAC,GAAG,OAAO,MAAM,CAAC,GAAG,YAAY,YAAY,EACvE,KAAK,MAAM,YAAY,GAAG;AAE/B,OAAO,OAAO;AAAA,EACZ;AACF,CAAC;","names":[]}