@qrvey/formula-lang
Version:
QFormula support for qrvey projects
28 lines • 1.32 kB
JavaScript
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