Spaces:
Sleeping
Sleeping
{"version":3,"sources":["visitor/jsonvectorassembler.ts"],"names":[],"mappings":"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","file":"jsonvectorassembler.js","sourcesContent":["// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { BN } from '../util/bn';\nimport { Column } from '../column';\nimport { Vector } from '../vector';\nimport { Visitor } from '../visitor';\nimport { BufferType } from '../enum';\nimport { RecordBatch } from '../recordbatch';\nimport { VectorType as V } from '../interfaces';\nimport { UnionMode, DateUnit, TimeUnit } from '../enum';\nimport { iterateBits, getBit, getBool } from '../util/bit';\nimport { selectColumnChildrenArgs } from '../util/args';\nimport {\n DataType,\n Float, Int, Date_, Interval, Time, Timestamp, Union,\n Bool, Null, Utf8, Binary, Decimal, FixedSizeBinary, List, FixedSizeList, Map_, Struct,\n} from '../type';\n\n/** @ignore */\nexport interface JSONVectorAssembler extends Visitor {\n\n visit <T extends Column> (node: T ): object;\n visitMany <T extends Column> (cols: T[]): object[];\n getVisitFn<T extends DataType>(node: Column<T>): (column: Column<T>) => { name: string, count: number, VALIDITY: (0 | 1)[], DATA?: any[], OFFSET?: number[], TYPE?: number[], children?: any[] };\n\n visitNull <T extends Null> (vector: V<T>): { };\n visitBool <T extends Bool> (vector: V<T>): { DATA: boolean[] };\n visitInt <T extends Int> (vector: V<T>): { DATA: (number | string)[] };\n visitFloat <T extends Float> (vector: V<T>): { DATA: number[] };\n visitUtf8 <T extends Utf8> (vector: V<T>): { DATA: string[], OFFSET: number[] };\n visitBinary <T extends Binary> (vector: V<T>): { DATA: string[], OFFSET: number[] };\n visitFixedSizeBinary <T extends FixedSizeBinary> (vector: V<T>): { DATA: string[] };\n visitDate <T extends Date_> (vector: V<T>): { DATA: number[] };\n visitTimestamp <T extends Timestamp> (vector: V<T>): { DATA: string[] };\n visitTime <T extends Time> (vector: V<T>): { DATA: number[] };\n visitDecimal <T extends Decimal> (vector: V<T>): { DATA: string[] };\n visitList <T extends List> (vector: V<T>): { children: any[], OFFSET: number[] };\n visitStruct <T extends Struct> (vector: V<T>): { children: any[] };\n visitUnion <T extends Union> (vector: V<T>): { children: any[], TYPE: number[], };\n visitInterval <T extends Interval> (vector: V<T>): { DATA: number[] };\n visitFixedSizeList <T extends FixedSizeList> (vector: V<T>): { children: any[] };\n visitMap <T extends Map_> (vector: V<T>): { children: any[] };\n}\n\n/** @ignore */\nexport class JSONVectorAssembler extends Visitor {\n\n /** @nocollapse */\n public static assemble<T extends Column | RecordBatch>(...args: (T | T[])[]) {\n return new JSONVectorAssembler().visitMany(selectColumnChildrenArgs(RecordBatch, args));\n }\n\n public visit<T extends Column>(column: T) {\n const { data, name, length } = column;\n const { offset, nullCount, nullBitmap } = data;\n const type = DataType.isDictionary(column.type) ? column.type.indices : column.type;\n const buffers = Object.assign([], data.buffers, { [BufferType.VALIDITY]: undefined });\n return {\n 'name': name,\n 'count': length,\n 'VALIDITY': DataType.isNull(type) ? undefined\n : nullCount <= 0 ? Array.from({ length }, () => 1)\n : [...iterateBits(nullBitmap, offset, length, null, getBit)],\n ...super.visit(Vector.new(data.clone(type, offset, length, 0, buffers)))\n };\n }\n public visitNull() { return {}; }\n public visitBool<T extends Bool>({ values, offset, length }: V<T>) {\n return { 'DATA': [...iterateBits(values, offset, length, null, getBool)] };\n }\n public visitInt<T extends Int>(vector: V<T>) {\n return {\n 'DATA': vector.type.bitWidth < 64\n ? [...vector.values]\n : [...bigNumsToStrings(vector.values as (Int32Array | Uint32Array), 2)]\n };\n }\n public visitFloat<T extends Float>(vector: V<T>) {\n return { 'DATA': [...vector.values] };\n }\n public visitUtf8<T extends Utf8>(vector: V<T>) {\n return { 'DATA': [...vector], 'OFFSET': [...vector.valueOffsets] };\n }\n public visitBinary<T extends Binary>(vector: V<T>) {\n return { 'DATA': [...binaryToString(vector)], OFFSET: [...vector.valueOffsets] };\n }\n public visitFixedSizeBinary<T extends FixedSizeBinary>(vector: V<T>) {\n return { 'DATA': [...binaryToString(vector)] };\n }\n public visitDate<T extends Date_>(vector: V<T>) {\n return {\n 'DATA': vector.type.unit === DateUnit.DAY\n ? [...vector.values]\n : [...bigNumsToStrings(vector.values, 2)]\n };\n }\n public visitTimestamp<T extends Timestamp>(vector: V<T>) {\n return { 'DATA': [...bigNumsToStrings(vector.values, 2)] };\n }\n public visitTime<T extends Time>(vector: V<T>) {\n return {\n 'DATA': vector.type.unit < TimeUnit.MICROSECOND\n ? [...vector.values]\n : [...bigNumsToStrings(vector.values, 2)]\n };\n }\n public visitDecimal<T extends Decimal>(vector: V<T>) {\n return { 'DATA': [...bigNumsToStrings(vector.values, 4)] };\n }\n public visitList<T extends List>(vector: V<T>) {\n return {\n 'OFFSET': [...vector.valueOffsets],\n 'children': vector.type.children.map((f, i) =>\n this.visit(new Column(f, [vector.getChildAt(i)!])))\n };\n }\n public visitStruct<T extends Struct>(vector: V<T>) {\n return {\n 'children': vector.type.children.map((f, i) =>\n this.visit(new Column(f, [vector.getChildAt(i)!])))\n };\n }\n public visitUnion<T extends Union>(vector: V<T>) {\n return {\n 'TYPE': [...vector.typeIds],\n 'OFFSET': vector.type.mode === UnionMode.Dense ? [...vector.valueOffsets] : undefined,\n 'children': vector.type.children.map((f, i) => this.visit(new Column(f, [vector.getChildAt(i)!])))\n };\n }\n public visitInterval<T extends Interval>(vector: V<T>) {\n return { 'DATA': [...vector.values] };\n }\n public visitFixedSizeList<T extends FixedSizeList>(vector: V<T>) {\n return {\n 'children': vector.type.children.map((f, i) =>\n this.visit(new Column(f, [vector.getChildAt(i)!])))\n };\n }\n public visitMap<T extends Map_>(vector: V<T>) {\n return {\n 'OFFSET': [...vector.valueOffsets],\n 'children': vector.type.children.map((f, i) =>\n this.visit(new Column(f, [vector.getChildAt(i)!])))\n };\n }\n}\n\n/** @ignore */\nfunction* binaryToString(vector: Vector<Binary> | Vector<FixedSizeBinary>) {\n for (const octets of vector as Iterable<Uint8Array>) {\n yield octets.reduce((str, byte) => {\n return `${str}${('0' + (byte & 0xFF).toString(16)).slice(-2)}`;\n }, '').toUpperCase();\n }\n}\n\n/** @ignore */\nfunction* bigNumsToStrings(values: Uint32Array | Int32Array, stride: number) {\n for (let i = -1, n = values.length / stride; ++i < n;) {\n yield `${BN.new(values.subarray((i + 0) * stride, (i + 1) * stride), false)}`;\n }\n}\n"]} |