71 lines
3.4 KiB
JavaScript
71 lines
3.4 KiB
JavaScript
// Licensed to the Apache Software Foundation (ASF) under one
|
|
// or more contributor license agreements. See the NOTICE file
|
|
// distributed with this work for additional information
|
|
// regarding copyright ownership. The ASF licenses this file
|
|
// to you under the Apache License, Version 2.0 (the
|
|
// "License"); you may not use this file except in compliance
|
|
// with the License. You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing,
|
|
// software distributed under the License is distributed on an
|
|
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
// KIND, either express or implied. See the License for the
|
|
// specific language governing permissions and limitations
|
|
// under the License.
|
|
/** @ignore */
|
|
export { Builder } from '../builder';
|
|
export { BoolBuilder } from './bool';
|
|
export { NullBuilder } from './null';
|
|
export { DateBuilder, DateDayBuilder, DateMillisecondBuilder } from './date';
|
|
export { DecimalBuilder } from './decimal';
|
|
export { DictionaryBuilder } from './dictionary';
|
|
export { FixedSizeBinaryBuilder } from './fixedsizebinary';
|
|
export { FloatBuilder, Float16Builder, Float32Builder, Float64Builder } from './float';
|
|
export { IntBuilder, Int8Builder, Int16Builder, Int32Builder, Int64Builder, Uint8Builder, Uint16Builder, Uint32Builder, Uint64Builder } from './int';
|
|
export { TimeBuilder, TimeSecondBuilder, TimeMillisecondBuilder, TimeMicrosecondBuilder, TimeNanosecondBuilder } from './time';
|
|
export { TimestampBuilder, TimestampSecondBuilder, TimestampMillisecondBuilder, TimestampMicrosecondBuilder, TimestampNanosecondBuilder } from './timestamp';
|
|
export { IntervalBuilder, IntervalDayTimeBuilder, IntervalYearMonthBuilder } from './interval';
|
|
export { Utf8Builder } from './utf8';
|
|
export { BinaryBuilder } from './binary';
|
|
export { ListBuilder } from './list';
|
|
export { FixedSizeListBuilder } from './fixedsizelist';
|
|
export { MapBuilder } from './map';
|
|
export { StructBuilder } from './struct';
|
|
export { UnionBuilder, SparseUnionBuilder, DenseUnionBuilder } from './union';
|
|
import { Type } from '../enum';
|
|
import { Utf8Builder } from './utf8';
|
|
import { Builder } from '../builder';
|
|
import { instance as setVisitor } from '../visitor/set';
|
|
import { instance as getBuilderConstructor } from '../visitor/builderctor';
|
|
/** @nocollapse */
|
|
Builder.new = newBuilder;
|
|
function newBuilder(options) {
|
|
const type = options.type;
|
|
const builder = new (getBuilderConstructor.getVisitFn(type)())(options);
|
|
if (type.children && type.children.length > 0) {
|
|
const children = options['children'] || [];
|
|
const defaultOptions = { 'nullValues': options['nullValues'] };
|
|
const getChildOptions = Array.isArray(children)
|
|
? ((_, i) => children[i] || defaultOptions)
|
|
: (({ name }) => children[name] || defaultOptions);
|
|
type.children.forEach((field, index) => {
|
|
const { type } = field;
|
|
const opts = getChildOptions(field, index);
|
|
builder.children.push(newBuilder({ ...opts, type }));
|
|
});
|
|
}
|
|
return builder;
|
|
}
|
|
Object.keys(Type)
|
|
.map((T) => Type[T])
|
|
.filter((T) => typeof T === 'number' && T !== Type.NONE)
|
|
.forEach((typeId) => {
|
|
const BuilderCtor = getBuilderConstructor.visit(typeId);
|
|
BuilderCtor.prototype._setValue = setVisitor.getVisitFn(typeId);
|
|
});
|
|
Utf8Builder.prototype._setValue = setVisitor.visitBinary;
|
|
|
|
//# sourceMappingURL=index.mjs.map
|