{"version":3,"file":"parser-DagIUS0b.cjs","names":["ErrorStrings","suiteSelectors","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,2BACE,0CAA0B,SAAS,QAAQ,EAC3CA,0BAAa,4BACd;CAED,MAAM,MAAMC,4BAAe,QAAQ;CAEnC,MAAMC,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,gCAAc,UAAU,CACtB,mCAAkB,QAAQ,UAAU;EAGtC,MAAM,0CAAsC,UAAU;AAEtD,qCAAmB,eAAe,cAAc,CAC9C,QAAO,cAAc;AAGvB,0BAAwB,cAAc;AAEtC,SAAO,UAAU,OAAO,cAAmB;;CAG7C,SAAS,wBAAwB,WAA6B;AAC5D,gBAAc,4CACG,QAAQ,OAAO,UAAU,+BAC7B,QAAQ,MAAM,WAAW,UAAU;;CAGlD,SAAS,WAAW,WAAiC;EACnD,MAAM,gBAAgB,sCACI,UAAU,GAChC;AAEJ,SAAO,6BACM,QAAQ,UAAU,IAC7B,UAAU,OAAO,cAA+B"}