Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
view.prototype.to_arrow = function(options = {}) {
const names = this._column_names();
const schema = this.schema();
const vectors = [];
const start_col = options.start_col || 0;
const end_col = options.end_col || names.length;
for (let i = start_col; i < end_col; i++) {
const name = names[i];
const col_path = name.split(defaults.COLUMN_SEPARATOR_STRING);
const type = schema[col_path[col_path.length - 1]];
if (type === "float") {
const [vals, nullCount, nullArray] = this.col_to_js_typed_array(name, options);
vectors.push(Vector.new(Data.Float(new Float64(), 0, vals.length, nullCount, nullArray, vals)));
} else if (type === "integer") {
const [vals, nullCount, nullArray] = this.col_to_js_typed_array(name, options);
vectors.push(Vector.new(Data.Int(new Int32(), 0, vals.length, nullCount, nullArray, vals)));
} else if (type === "boolean") {
const [vals, nullCount, nullArray] = this.col_to_js_typed_array(name, options);
vectors.push(Vector.new(Data.Bool(new Bool(), 0, vals.length, nullCount, nullArray, vals)));
} else if (type === "date" || type === "datetime") {
const [vals, nullCount, nullArray] = this.col_to_js_typed_array(name, options);
vectors.push(Vector.new(Data.Timestamp(new TimestampMillisecond(), 0, vals.length / 2, nullCount, nullArray, vals)));
} else if (type === "string") {
const [vals, offsets, indices, nullCount, nullArray] = this.col_to_js_typed_array(name, options);
const utf8Vector = Vector.new(Data.Utf8(new Utf8(), 0, offsets.length - 1, 0, null, offsets, vals));
const type = new Dictionary(utf8Vector.type, new Int32(), null, null, utf8Vector);
vectors.push(Vector.new(Data.Dictionary(type, 0, indices.length, nullCount, nullArray, indices)));
} else {
throw new Error(`Type ${type} not supported`);