UNPKG

@uwdata/flechette

Version:

Fast, lightweight access to Apache Arrow data.

60 lines (53 loc) 1.35 kB
import { toBigInt } from '../../util/numbers.js'; import { buffer } from '../buffer.js'; import { ValidityBuilder } from './validity.js'; /** * Builder for data batches that can be accessed directly as typed arrays. */ export class DirectBuilder extends ValidityBuilder { constructor(type, ctx) { super(type, ctx); this.values = buffer(type.values); } init() { this.values = buffer(this.type.values); return super.init(); } /** * @param {*} value * @param {number} index * @returns {boolean | void} */ set(value, index) { if (super.set(value, index)) { this.values.set(value, index); } } done() { return { ...super.done(), values: this.values.array(this.index + 1) }; } } /** * Builder for int64/uint64 data batches written as bigints. */ export class Int64Builder extends DirectBuilder { set(value, index) { super.set(value == null ? value : toBigInt(value), index); } } /** * Builder for data batches whose values must pass through a transform * function prior to be written to a backing buffer. */ export class TransformBuilder extends DirectBuilder { constructor(type, ctx, transform) { super(type, ctx); this.transform = transform; } set(value, index) { super.set(value == null ? value : this.transform(value), index); } }