{"version":3,"file":"parser-BDHdwZo7.mjs","names":["testedStorage: Record<string, boolean>"],"sources":["../src/exports/parser.ts"],"sourcesContent":["import {\n  hasOwnProperty,\n  invariant,\n  isNullish,\n  isPositive,\n  makeBrand,\n} from 'vest-utils';\n\nimport { ErrorStrings } from '../errors/ErrorStrings';\nimport {\n  SuiteResult,\n  SuiteSummary,\n  TFieldName,\n  TGroupName,\n  TSchema,\n} from '../suiteResult/SuiteResultTypes';\nimport { suiteSelectors } from '../vest';\n\nexport function parse<\n  F extends TFieldName,\n  G extends TGroupName,\n  S extends TSchema,\n>(summary: SuiteSummary<F, G> | SuiteResult<F, G, S>): ParsedVestObject<F> {\n  invariant(\n    summary && hasOwnProperty(summary, 'valid'),\n    ErrorStrings.PARSER_EXPECT_RESULT_OBJECT,\n  );\n\n  const sel = suiteSelectors(summary);\n\n  const testedStorage: Record<string, boolean> = {};\n\n  const selectors = {\n    invalid: sel.hasErrors,\n    pending: sel.isPending,\n    tested: isTested,\n    untested: isUntested,\n    valid: sel.isValid,\n    warning: sel.hasWarnings,\n  };\n\n  return selectors;\n\n  // Booleans\n  function isTested(fieldName?: F | string): boolean {\n    if (isNullish(fieldName)) {\n      return isPositive(summary.testCount);\n    }\n\n    const safeFieldName = makeBrand<TFieldName>(fieldName);\n\n    if (hasOwnProperty(testedStorage, safeFieldName)) {\n      return testedStorage[safeFieldName];\n    }\n\n    addFieldToTestedStorage(safeFieldName);\n\n    return selectors.tested(safeFieldName as F);\n  }\n\n  function addFieldToTestedStorage(fieldName: TFieldName): void {\n    testedStorage[fieldName] =\n      hasOwnProperty(summary.tests, fieldName) &&\n      isPositive(summary.tests[fieldName].testCount);\n  }\n\n  function isUntested(fieldName?: F | string): boolean {\n    const safeFieldName = fieldName\n      ? makeBrand<TFieldName>(fieldName)\n      : undefined;\n\n    return !(\n      isPositive(summary.testCount) &&\n      selectors.tested(safeFieldName as F | undefined)\n    );\n  }\n}\n\nexport type ParsedVestObject<F extends TFieldName> = {\n  valid(fieldName?: F | string): boolean;\n  tested(fieldName?: F | string): boolean;\n  invalid(fieldName?: F | string): boolean;\n  untested(fieldName?: F | string): boolean;\n  warning(fieldName?: F | string): boolean;\n  pending(fieldName?: F | string): boolean;\n};\n"],"mappings":";;;;AAkBA,SAAgB,MAId,SAAyE;AACzE,WACE,WAAW,eAAe,SAAS,QAAQ,EAC3C,aAAa,4BACd;CAED,MAAM,MAAM,eAAe,QAAQ;CAEnC,MAAMA,gBAAyC,EAAE;CAEjD,MAAM,YAAY;EAChB,SAAS,IAAI;EACb,SAAS,IAAI;EACb,QAAQ;EACR,UAAU;EACV,OAAO,IAAI;EACX,SAAS,IAAI;EACd;AAED,QAAO;CAGP,SAAS,SAAS,WAAiC;AACjD,MAAI,UAAU,UAAU,CACtB,QAAO,WAAW,QAAQ,UAAU;EAGtC,MAAM,gBAAgB,UAAsB,UAAU;AAEtD,MAAI,eAAe,eAAe,cAAc,CAC9C,QAAO,cAAc;AAGvB,0BAAwB,cAAc;AAEtC,SAAO,UAAU,OAAO,cAAmB;;CAG7C,SAAS,wBAAwB,WAA6B;AAC5D,gBAAc,aACZ,eAAe,QAAQ,OAAO,UAAU,IACxC,WAAW,QAAQ,MAAM,WAAW,UAAU;;CAGlD,SAAS,WAAW,WAAiC;EACnD,MAAM,gBAAgB,YAClB,UAAsB,UAAU,GAChC;AAEJ,SAAO,EACL,WAAW,QAAQ,UAAU,IAC7B,UAAU,OAAO,cAA+B"}