{"version":3,"file":"parserUtils-BKPstAaO.mjs","names":[],"sources":["../src/utils/parserUtils.ts"],"sourcesContent":["import type {\n  DefaultOperatorName,\n  FullField,\n  FullOption,\n  OptionList,\n  ValueSource,\n  ValueSourceFlexibleOptions,\n  ValueSources,\n} from '../types';\nimport { filterFieldsByComparator } from './filterFieldsByComparator';\nimport { getValueSourcesUtil } from './getValueSourcesUtil';\nimport { isFlexibleOptionArray, toFlatOptionArray, toFullOption } from './optGroupUtils';\n\nexport const getFieldsArray = (\n  fields?: OptionList<FullField> | Record<string, FullField>\n): FullOption[] => {\n  const fieldsArray = fields\n    ? Array.isArray(fields)\n      ? fields\n      : Object.keys(fields)\n          .map(fld => Object.assign({}, fields[fld], { name: fld }))\n          // oxlint-disable-next-line no-array-sort\n          .sort((a, b) => a.label.localeCompare(b.label))\n    : [];\n  return toFlatOptionArray(fieldsArray);\n};\n\nexport function fieldIsValidUtil(params: {\n  fieldsFlat: FullField[];\n  getValueSources?: (field: string, operator: string) => ValueSources | ValueSourceFlexibleOptions;\n  fieldName: string;\n  operator: DefaultOperatorName;\n  subordinateFieldName?: string;\n}): boolean {\n  const { fieldsFlat, fieldName, operator, subordinateFieldName, getValueSources } = params;\n\n  const vsIncludes = (vs: ValueSource) => {\n    const vss = getValueSourcesUtil(primaryField, operator, getValueSources);\n    return isFlexibleOptionArray(vss) && vss.some(vso => vso.value === vs || vso.name === vs);\n  };\n\n  // If fields option was an empty array or undefined, then all identifiers\n  // are considered valid.\n  if (fieldsFlat.length === 0) return true;\n\n  let valid = false;\n\n  const primaryField = toFullOption(fieldsFlat.find(ff => ff.name === fieldName)!);\n  if (primaryField) {\n    valid = !(\n      !subordinateFieldName &&\n      operator !== 'notNull' &&\n      operator !== 'null' &&\n      !vsIncludes('value')\n    );\n\n    if (valid && !!subordinateFieldName) {\n      if (vsIncludes('field') && fieldName !== subordinateFieldName) {\n        const validSubordinateFields = filterFieldsByComparator(\n          primaryField,\n          fieldsFlat,\n          operator\n        ) as FullField[];\n        if (!validSubordinateFields.some(vsf => vsf.name === subordinateFieldName)) {\n          valid = false;\n        }\n      } else {\n        valid = false;\n      }\n    }\n  }\n\n  return valid;\n}\n"],"mappings":";;;AAaA,MAAa,kBACX,WACiB;CACjB,MAAM,cAAc,SAChB,MAAM,QAAQ,MAAM,IAClB,SACA,OAAO,KAAK,MAAM,CAAC,CAChB,KAAI,QAAO,OAAO,OAAO,CAAC,GAAG,OAAO,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,CAEzD,MAAM,GAAG,MAAM,EAAE,MAAM,cAAc,EAAE,KAAK,CAAC,IAClD,CAAC;CACL,OAAO,kBAAkB,WAAW;AACtC;AAEA,SAAgB,iBAAiB,QAMrB;CACV,MAAM,EAAE,YAAY,WAAW,UAAU,sBAAsB,oBAAoB;CAEnF,MAAM,cAAc,OAAoB;EACtC,MAAM,MAAM,oBAAoB,cAAc,UAAU,eAAe;EACvE,OAAO,sBAAsB,GAAG,KAAK,IAAI,MAAK,QAAO,IAAI,UAAU,MAAM,IAAI,SAAS,EAAE;CAC1F;CAIA,IAAI,WAAW,WAAW,GAAG,OAAO;CAEpC,IAAI,QAAQ;CAEZ,MAAM,eAAe,aAAa,WAAW,MAAK,OAAM,GAAG,SAAS,SAAS,CAAE;CAC/E,IAAI,cAAc;EAChB,QAAQ,EACN,CAAC,wBACD,aAAa,aACb,aAAa,UACb,CAAC,WAAW,OAAO;EAGrB,IAAI,SAAS,CAAC,CAAC,sBAAsB;GACnC,IAAI,WAAW,OAAO,KAAK,cAAc,sBAMnC;QAAA,CAL2B,yBAC7B,cACA,YACA,QAEwB,CAAC,CAAC,MAAK,QAAO,IAAI,SAAS,oBAAoB,GACvE,QAAQ;GAAA,OAGV,QAAQ;EAEZ;CACF;CAEA,OAAO;AACT"}