in src/internal/BinaryUtils.ts [311:355]
static calcObjectType(object): PRIMITIVE_TYPE | CompositeType {
const objectType = typeof object;
if (object === null) {
throw IgniteClientError.unsupportedTypeError(BinaryUtils.TYPE_CODE.NULL);
}
else if (objectType === 'number') {
return BinaryUtils.TYPE_CODE.DOUBLE;
}
else if (objectType === 'string') {
return BinaryUtils.TYPE_CODE.STRING;
}
else if (objectType === 'boolean') {
return BinaryUtils.TYPE_CODE.BOOLEAN;
}
else if (object instanceof Timestamp) {
return BinaryUtils.TYPE_CODE.TIMESTAMP;
}
else if (object instanceof Date) {
return BinaryUtils.TYPE_CODE.DATE;
}
else if (object instanceof EnumItem) {
return BinaryUtils.TYPE_CODE.ENUM;
}
else if (object instanceof Decimal) {
return BinaryUtils.TYPE_CODE.DECIMAL;
}
else if (object instanceof Array) {
if (object.length > 0 && object[0] !== null) {
return BinaryUtils.getArrayType(BinaryUtils.calcObjectType(object[0]));
}
}
else if (object instanceof Set) {
return new CollectionObjectType(CollectionObjectType.COLLECTION_SUBTYPE.HASH_SET);
}
else if (object instanceof Map) {
return new MapObjectType();
}
else if (object instanceof BinaryObject) {
return BinaryUtils.TYPE_CODE.BINARY_OBJECT;
}
else if (objectType === 'object') {
return new ComplexObjectType(object);
}
throw IgniteClientError.unsupportedTypeError(objectType);
}