UNPKG

ts-flex-query

Version:
40 lines 1.58 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getDataType = getDataType; const data_type_1 = require("../types/data-type"); const utils_1 = require("./utils"); function getDataType(value) { const type = typeof value; switch (type) { case 'number': return { type: data_type_1.DataTypeType.number }; case 'bigint': return { type: data_type_1.DataTypeType.bigint }; case 'symbol': case 'string': return { type: data_type_1.DataTypeType.string }; case 'boolean': return { type: data_type_1.DataTypeType.boolean }; case 'undefined': return { type: data_type_1.DataTypeType.undefined }; case 'object': if (value === null) { return { type: data_type_1.DataTypeType.null }; } if (Array.isArray(value)) { return { type: data_type_1.DataTypeType.array, elementType: value.length ? getDataType(value[0]) : { type: data_type_1.DataTypeType.unknown } }; } return { type: data_type_1.DataTypeType.object, fields: (0, utils_1.createObjectFromArray)(Object.entries(value), (entry) => entry[0], (entry) => getDataType(entry[1])) }; case 'function': throw new Error('Functions are not supported in queries.'); default: return (0, utils_1.unexpected)(type); } } //# sourceMappingURL=get-data-type.js.map