UNPKG

@qrvey/formula-lang

Version:

QFormula support for qrvey projects

28 lines 1.32 kB
import { AST_PRIMITIVES } from '../constants'; import { ERROR_DICTIONARY, ERROR_LIST } from '../errors/dictionary'; import { getValidDataTypeParam } from '../utils/getValidDataTypeParam'; import { inferPrimitive, isSinglePrimitive } from '../utils/primitiveFunctions'; export function isSameAndValidRecursiveDataType(validDataTypes) { return (_param, _dataType, context) => { const args = context.fnNode.arguments; const dataTypePrimitive = getValidDataTypeParam(args, validDataTypes); const isValidDataTypePrimitive = dataTypePrimitive !== AST_PRIMITIVES.UNKNOWN; const expectedDataTypePrimitive = isValidDataTypePrimitive ? dataTypePrimitive : validDataTypes; const valid = isValidDataTypePrimitive && isSinglePrimitive(inferPrimitive(...args.map((_arg) => _arg.primitive))); if (valid) { return { valid, mismatchData: { primitive: expectedDataTypePrimitive, }, }; } return Object.assign(Object.assign({ valid }, ERROR_DICTIONARY[ERROR_LIST.inferredPrimitive]), { mismatchData: { primitive: expectedDataTypePrimitive, } }); }; } //# sourceMappingURL=isSameAndValidRecursiveDataType.js.map