import * as type from './type.js'; import type { Type } from './enum.js'; import type { DataType } from './type.js'; import type { Builder } from './builder.js'; import type { BuilderOptions } from './builder.js'; import type { BoolBuilder } from './builder/bool.js'; import type { NullBuilder } from './builder/null.js'; import type { DateBuilder, DateDayBuilder, DateMillisecondBuilder } from './builder/date.js'; import type { DecimalBuilder } from './builder/decimal.js'; import type { DictionaryBuilder } from './builder/dictionary.js'; import type { FixedSizeBinaryBuilder } from './builder/fixedsizebinary.js'; import type { FloatBuilder, Float16Builder, Float32Builder, Float64Builder } from './builder/float.js'; import type { IntBuilder, Int8Builder, Int16Builder, Int32Builder, Int64Builder, Uint8Builder, Uint16Builder, Uint32Builder, Uint64Builder } from './builder/int.js'; import type { TimeBuilder, TimeSecondBuilder, TimeMillisecondBuilder, TimeMicrosecondBuilder, TimeNanosecondBuilder } from './builder/time.js'; import type { TimestampBuilder, TimestampSecondBuilder, TimestampMillisecondBuilder, TimestampMicrosecondBuilder, TimestampNanosecondBuilder } from './builder/timestamp.js'; import type { IntervalBuilder, IntervalDayTimeBuilder, IntervalYearMonthBuilder } from './builder/interval.js'; import type { DurationBuilder, DurationSecondBuilder, DurationMillisecondBuilder, DurationMicrosecondBuilder, DurationNanosecondBuilder } from './builder/duration.js'; import type { Utf8Builder } from './builder/utf8.js'; import type { LargeUtf8Builder } from './builder/largeutf8.js'; import type { BinaryBuilder } from './builder/binary.js'; import type { LargeBinaryBuilder } from './builder/largebinary.js'; import type { ListBuilder } from './builder/list.js'; import type { FixedSizeListBuilder } from './builder/fixedsizelist.js'; import type { MapBuilder } from './builder/map.js'; import type { StructBuilder } from './builder/struct.js'; import type { UnionBuilder, SparseUnionBuilder, DenseUnionBuilder } from './builder/union.js'; /** @ignore */ type FloatArray = Float32Array | Float64Array; /** @ignore */ type IntArray = Int8Array | Int16Array | Int32Array; /** @ignore */ type UintArray = Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray; /** @ignore */ export type TypedArray = FloatArray | IntArray | UintArray; /** @ignore */ export type BigIntArray = BigInt64Array | BigUint64Array; /** @ignore */ export interface TypedArrayConstructor { readonly prototype: T; new (length?: number): T; new (array: Iterable): T; new (buffer: ArrayBufferLike, byteOffset?: number, length?: number): T; /** * The size in bytes of each element in the array. */ readonly BYTES_PER_ELEMENT: number; /** * Returns a new array from a set of elements. * @param items A set of elements to include in the new array object. */ of(...items: number[]): T; /** * Creates an array from an array-like or iterable object. * @param arrayLike An array-like or iterable object to convert to an array. * @param mapfn A mapping function to call on every element of the array. * @param thisArg Value of 'this' used to invoke the mapfn. */ from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): T; from(arrayLike: ArrayLike, mapfn: (v: U, k: number) => number, thisArg?: any): T; } /** @ignore */ export interface BigIntArrayConstructor { readonly prototype: T; new (length?: number): T; new (array: Iterable): T; new (buffer: ArrayBufferLike, byteOffset?: number, length?: number): T; /** * The size in bytes of each element in the array. */ readonly BYTES_PER_ELEMENT: number; /** * Returns a new array from a set of elements. * @param items A set of elements to include in the new array object. */ of(...items: bigint[]): T; /** * Creates an array from an array-like or iterable object. * @param arrayLike An array-like or iterable object to convert to an array. * @param mapfn A mapping function to call on every element of the array. * @param thisArg Value of 'this' used to invoke the mapfn. */ from(arrayLike: ArrayLike, mapfn?: (v: bigint, k: number) => bigint, thisArg?: any): T; from(arrayLike: ArrayLike, mapfn: (v: U, k: number) => bigint, thisArg?: any): T; } /** @ignore */ export type ArrayCtor = T extends TypedArray ? TypedArrayConstructor : T extends BigIntArray ? BigIntArrayConstructor : any; /** @ignore */ export type BuilderCtorArgs, R extends DataType = any, TArgs extends any[] = any[], TCtor extends new (type: R, ...args: TArgs) => T = new (type: R, ...args: TArgs) => T> = TCtor extends new (type: R, ...args: infer TArgs) => T ? TArgs : never; /** * Obtain the constructor function of an instance type * @ignore */ export type ConstructorType T = new (...args: any[]) => T> = TCtor extends new (...args: any[]) => T ? TCtor : never; /** @ignore */ export type BuilderCtorType, R extends DataType = any, TCtor extends new (options: BuilderOptions) => T = new (options: BuilderOptions) => T> = TCtor extends new (options: BuilderOptions) => T ? TCtor : never; /** @ignore */ export type BuilderType = T extends Type ? TypeToBuilder : T extends DataType ? DataTypeToBuilder : Builder; /** @ignore */ export type BuilderCtor = T extends Type ? BuilderCtorType> : T extends DataType ? BuilderCtorType> : BuilderCtorType; /** @ignore */ export type DataTypeCtor = T extends DataType ? ConstructorType : T extends Type ? ConstructorType> : never; /** @ignore */ export type TypedArrayDataType = T extends Int8Array ? type.Int8 : T extends Int16Array ? type.Int16 : T extends Int32Array ? type.Int32 : T extends BigInt64Array ? type.Int64 : T extends Uint8Array ? type.Uint8 : T extends Uint8ClampedArray ? type.Uint8 : T extends Uint16Array ? type.Uint16 : T extends Uint32Array ? type.Uint32 : T extends BigUint64Array ? type.Uint64 : T extends Float32Array ? type.Float32 : T extends Float64Array ? type.Float64 : never; /** @ignore */ export type JavaScriptDataType = JavaScriptArrayDataType; /** @ignore */ export type JavaScriptArrayDataType = T extends readonly (null | undefined)[] ? type.Null : T extends readonly (null | undefined | boolean)[] ? type.Bool : T extends readonly (null | undefined | string)[] ? type.Dictionary : T extends readonly (null | undefined | Date)[] ? type.Date_ : T extends readonly (null | undefined | bigint)[] ? type.Int64 : T extends readonly (null | undefined | number)[] ? type.Float64 : T extends readonly (null | undefined | readonly (infer U)[])[] ? type.List> : T extends readonly (null | undefined | Record)[] ? T extends readonly (null | undefined | infer U)[] ? type.Struct<{ [P in keyof U]: JavaScriptDataType; }> : never : never; /** @ignore */ export type ArrayDataType = T extends TypedArray | BigIntArray ? TypedArrayDataType : T extends readonly unknown[] ? JavaScriptArrayDataType : never; /** @ignore */ export type TypeToDataType = { [key: number]: type.DataType; [Type.Null]: type.Null; [Type.Bool]: type.Bool; [Type.Int]: type.Int; [Type.Int16]: type.Int16; [Type.Int32]: type.Int32; [Type.Int64]: type.Int64; [Type.Uint8]: type.Uint8; [Type.Uint16]: type.Uint16; [Type.Uint32]: type.Uint32; [Type.Uint64]: type.Uint64; [Type.Int8]: type.Int8; [Type.Float16]: type.Float16; [Type.Float32]: type.Float32; [Type.Float64]: type.Float64; [Type.Float]: type.Float; [Type.Utf8]: type.Utf8; [Type.LargeUtf8]: type.LargeUtf8; [Type.Binary]: type.Binary; [Type.LargeBinary]: type.LargeBinary; [Type.FixedSizeBinary]: type.FixedSizeBinary; [Type.Date]: type.Date_; [Type.DateDay]: type.DateDay; [Type.DateMillisecond]: type.DateMillisecond; [Type.Timestamp]: type.Timestamp; [Type.TimestampSecond]: type.TimestampSecond; [Type.TimestampMillisecond]: type.TimestampMillisecond; [Type.TimestampMicrosecond]: type.TimestampMicrosecond; [Type.TimestampNanosecond]: type.TimestampNanosecond; [Type.Time]: type.Time; [Type.TimeSecond]: type.TimeSecond; [Type.TimeMillisecond]: type.TimeMillisecond; [Type.TimeMicrosecond]: type.TimeMicrosecond; [Type.TimeNanosecond]: type.TimeNanosecond; [Type.Decimal]: type.Decimal; [Type.Union]: type.Union; [Type.DenseUnion]: type.DenseUnion; [Type.SparseUnion]: type.SparseUnion; [Type.Interval]: type.Interval; [Type.IntervalDayTime]: type.IntervalDayTime; [Type.IntervalYearMonth]: type.IntervalYearMonth; [Type.Duration]: type.Duration; [Type.DurationSecond]: type.DurationSecond; [Type.DurationMillisecond]: type.DurationMillisecond; [Type.DurationMicrosecond]: type.DurationMicrosecond; [Type.DurationNanosecond]: type.DurationNanosecond; [Type.Map]: type.Map_; [Type.List]: type.List; [Type.Struct]: type.Struct; [Type.Dictionary]: type.Dictionary; [Type.FixedSizeList]: type.FixedSizeList; }[T]; /** @ignore */ type TypeToBuilder = { [key: number]: Builder; [Type.Null]: NullBuilder; [Type.Bool]: BoolBuilder; [Type.Int8]: Int8Builder; [Type.Int16]: Int16Builder; [Type.Int32]: Int32Builder; [Type.Int64]: Int64Builder; [Type.Uint8]: Uint8Builder; [Type.Uint16]: Uint16Builder; [Type.Uint32]: Uint32Builder; [Type.Uint64]: Uint64Builder; [Type.Int]: IntBuilder; [Type.Float16]: Float16Builder; [Type.Float32]: Float32Builder; [Type.Float64]: Float64Builder; [Type.Float]: FloatBuilder; [Type.Utf8]: Utf8Builder; [Type.LargeUtf8]: LargeUtf8Builder; [Type.Binary]: BinaryBuilder; [Type.LargeBinary]: LargeBinaryBuilder; [Type.FixedSizeBinary]: FixedSizeBinaryBuilder; [Type.Date]: DateBuilder; [Type.DateDay]: DateDayBuilder; [Type.DateMillisecond]: DateMillisecondBuilder; [Type.Timestamp]: TimestampBuilder; [Type.TimestampSecond]: TimestampSecondBuilder; [Type.TimestampMillisecond]: TimestampMillisecondBuilder; [Type.TimestampMicrosecond]: TimestampMicrosecondBuilder; [Type.TimestampNanosecond]: TimestampNanosecondBuilder; [Type.Time]: TimeBuilder; [Type.TimeSecond]: TimeSecondBuilder; [Type.TimeMillisecond]: TimeMillisecondBuilder; [Type.TimeMicrosecond]: TimeMicrosecondBuilder; [Type.TimeNanosecond]: TimeNanosecondBuilder; [Type.Decimal]: DecimalBuilder; [Type.Union]: UnionBuilder; [Type.DenseUnion]: DenseUnionBuilder; [Type.SparseUnion]: SparseUnionBuilder; [Type.Interval]: IntervalBuilder; [Type.IntervalDayTime]: IntervalDayTimeBuilder; [Type.IntervalYearMonth]: IntervalYearMonthBuilder; [Type.Duration]: DurationBuilder; [Type.DurationSecond]: DurationBuilder; [Type.DurationMillisecond]: DurationMillisecondBuilder; [Type.DurationMicrosecond]: DurationMicrosecondBuilder; [Type.DurationNanosecond]: DurationNanosecondBuilder; [Type.Map]: MapBuilder; [Type.List]: ListBuilder; [Type.Struct]: StructBuilder; [Type.Dictionary]: DictionaryBuilder; [Type.FixedSizeList]: FixedSizeListBuilder; }[T]; /** @ignore */ type DataTypeToBuilder = { [key: number]: Builder; [Type.Null]: T extends type.Null ? NullBuilder : never; [Type.Bool]: T extends type.Bool ? BoolBuilder : never; [Type.Int8]: T extends type.Int8 ? Int8Builder : never; [Type.Int16]: T extends type.Int16 ? Int16Builder : never; [Type.Int32]: T extends type.Int32 ? Int32Builder : never; [Type.Int64]: T extends type.Int64 ? Int64Builder : never; [Type.Uint8]: T extends type.Uint8 ? Uint8Builder : never; [Type.Uint16]: T extends type.Uint16 ? Uint16Builder : never; [Type.Uint32]: T extends type.Uint32 ? Uint32Builder : never; [Type.Uint64]: T extends type.Uint64 ? Uint64Builder : never; [Type.Int]: T extends type.Int ? IntBuilder : never; [Type.Float16]: T extends type.Float16 ? Float16Builder : never; [Type.Float32]: T extends type.Float32 ? Float32Builder : never; [Type.Float64]: T extends type.Float64 ? Float64Builder : never; [Type.Float]: T extends type.Float ? FloatBuilder : never; [Type.Utf8]: T extends type.Utf8 ? Utf8Builder : never; [Type.LargeUtf8]: T extends type.LargeUtf8 ? LargeUtf8Builder : never; [Type.Binary]: T extends type.Binary ? BinaryBuilder : never; [Type.LargeBinary]: T extends type.LargeBinary ? LargeBinaryBuilder : never; [Type.FixedSizeBinary]: T extends type.FixedSizeBinary ? FixedSizeBinaryBuilder : never; [Type.Date]: T extends type.Date_ ? DateBuilder : never; [Type.DateDay]: T extends type.DateDay ? DateDayBuilder : never; [Type.DateMillisecond]: T extends type.DateMillisecond ? DateMillisecondBuilder : never; [Type.Timestamp]: T extends type.Timestamp ? TimestampBuilder : never; [Type.TimestampSecond]: T extends type.TimestampSecond ? TimestampSecondBuilder : never; [Type.TimestampMillisecond]: T extends type.TimestampMillisecond ? TimestampMillisecondBuilder : never; [Type.TimestampMicrosecond]: T extends type.TimestampMicrosecond ? TimestampMicrosecondBuilder : never; [Type.TimestampNanosecond]: T extends type.TimestampNanosecond ? TimestampNanosecondBuilder : never; [Type.Time]: T extends type.Time ? TimeBuilder : never; [Type.TimeSecond]: T extends type.TimeSecond ? TimeSecondBuilder : never; [Type.TimeMillisecond]: T extends type.TimeMillisecond ? TimeMillisecondBuilder : never; [Type.TimeMicrosecond]: T extends type.TimeMicrosecond ? TimeMicrosecondBuilder : never; [Type.TimeNanosecond]: T extends type.TimeNanosecond ? TimeNanosecondBuilder : never; [Type.Decimal]: T extends type.Decimal ? DecimalBuilder : never; [Type.Union]: T extends type.Union ? UnionBuilder : never; [Type.DenseUnion]: T extends type.DenseUnion ? DenseUnionBuilder : never; [Type.SparseUnion]: T extends type.SparseUnion ? SparseUnionBuilder : never; [Type.Interval]: T extends type.Interval ? IntervalBuilder : never; [Type.IntervalDayTime]: T extends type.IntervalDayTime ? IntervalDayTimeBuilder : never; [Type.IntervalYearMonth]: T extends type.IntervalYearMonth ? IntervalYearMonthBuilder : never; [Type.Duration]: T extends type.Duration ? DurationBuilder : never; [Type.DurationSecond]: T extends type.DurationSecond ? DurationSecondBuilder : never; [Type.DurationMillisecond]: T extends type.DurationMillisecond ? DurationMillisecondBuilder : never; [Type.DurationMicrosecond]: T extends type.DurationMicrosecond ? DurationMicrosecondBuilder : never; [Type.DurationNanosecond]: T extends type.DurationNanosecond ? DurationNanosecondBuilder : never; [Type.Map]: T extends type.Map_ ? MapBuilder : never; [Type.List]: T extends type.List ? ListBuilder : never; [Type.Struct]: T extends type.Struct ? StructBuilder : never; [Type.Dictionary]: T extends type.Dictionary ? DictionaryBuilder : never; [Type.FixedSizeList]: T extends type.FixedSizeList ? FixedSizeListBuilder : never; }[T['TType']]; export {};