Skip to content

Commit 7b41935

Browse files
committed
Bump to arrow 15 and remove workarounds (#82)
1 parent c7063dd commit 7b41935

File tree

6 files changed

+62
-113
lines changed

6 files changed

+62
-113
lines changed

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,12 @@
3232
"src/"
3333
],
3434
"peerDependencies": {
35-
"apache-arrow": ">=14"
35+
"apache-arrow": ">=15"
3636
},
3737
"devDependencies": {
3838
"@rollup/plugin-terser": "^0.4.3",
3939
"@rollup/plugin-typescript": "^11.1.2",
40-
"apache-arrow": "^14",
40+
"apache-arrow": "^15",
4141
"prettier": "^3.1.0",
4242
"rollup": "^4.1.5",
4343
"rollup-plugin-dts": "^6.1.0",

src/field.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import * as arrow from "apache-arrow";
44
import { assert } from "./vector";
5-
import { LargeBinary, LargeList, LargeUtf8 } from "./types";
5+
import { LargeList } from "./types";
66

77
interface Flags {
88
nullable: boolean;
@@ -27,9 +27,9 @@ const formatMapping: Record<string, arrow.DataType | undefined> = {
2727
f: new arrow.Float32(),
2828
g: new arrow.Float64(),
2929
z: new arrow.Binary(),
30-
Z: new LargeBinary(),
30+
Z: new arrow.LargeBinary(),
3131
u: new arrow.Utf8(),
32-
U: new LargeUtf8(),
32+
U: new arrow.LargeUtf8(),
3333
tdD: new arrow.DateDay(),
3434
tdm: new arrow.DateMillisecond(),
3535
tts: new arrow.TimeSecond(),

src/types.ts

Lines changed: 4 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ export enum Type {
2121
FixedSizeList = 16 /** Fixed-size list. Each value occupies the same number of bytes */,
2222
Map = 17 /** Map of named logical types */,
2323
Duration = 18 /** Measure of elapsed time in either seconds, milliseconds, microseconds or nanoseconds. */,
24+
LargeBinary = 19 /** Large variable-length bytes (no guarantee of UTF8-ness) */,
25+
LargeUtf8 = 20 /** Large variable-length string as List<Char> */,
2426

25-
// These 3 are not included in the upstream enum
27+
// Not yet included in the upstream enum
2628
LargeList = 30,
27-
LargeBinary = 31,
28-
LargeUtf8 = 32,
2929

3030
Dictionary = -1 /** Dictionary aka Category type */,
3131
Int8 = -2,
@@ -61,13 +61,10 @@ export class LargeList<T extends DataType = any> extends DataType<
6161
{ [0]: T }
6262
> {
6363
constructor(child: Field<T>) {
64-
super();
64+
super(Type.LargeList);
6565
this.children = [child];
6666
}
6767
public declare readonly children: Field<T>[];
68-
public get typeId() {
69-
return Type.LargeList as Type.LargeList; // Type.List as Type.List;
70-
}
7168
public toString() {
7269
return `LargeList<${this.valueType}>`;
7370
}
@@ -86,48 +83,6 @@ export class LargeList<T extends DataType = any> extends DataType<
8683
})(LargeList.prototype);
8784
}
8885

89-
// @ts-expect-error Type 'Type.LargeBinary' does not satisfy the constraint 'Type'
90-
export class LargeBinary extends DataType<Type.LargeBinary> {
91-
constructor() {
92-
super();
93-
}
94-
public get typeId() {
95-
return Type.LargeBinary as Type.LargeBinary;
96-
}
97-
public toString() {
98-
return `Binary`;
99-
}
100-
protected static [Symbol.toStringTag] = ((proto: LargeBinary) => {
101-
(<any>proto).ArrayType = Uint8Array;
102-
return (proto[Symbol.toStringTag] = "LargeBinary");
103-
})(LargeBinary.prototype);
104-
}
105-
106-
// @ts-expect-error Type 'Type.LargeUtf8' does not satisfy the constraint 'Type'
107-
export class LargeUtf8 extends DataType<Type.LargeUtf8> {
108-
constructor() {
109-
super();
110-
}
111-
public get typeId() {
112-
return Type.LargeUtf8 as Type.LargeUtf8;
113-
}
114-
public toString() {
115-
return `LargeUtf8`;
116-
}
117-
protected static [Symbol.toStringTag] = ((proto: LargeUtf8) => {
118-
(<any>proto).ArrayType = Uint8Array;
119-
return (proto[Symbol.toStringTag] = "LargeUtf8");
120-
})(LargeUtf8.prototype);
121-
}
122-
12386
export function isLargeList(x: any): x is LargeList {
12487
return x?.typeId === Type.LargeList;
12588
}
126-
127-
export function isLargeBinary(x: any): x is LargeBinary {
128-
return x?.typeId === Type.LargeBinary;
129-
}
130-
131-
export function isLargeUtf8(x: any): x is LargeUtf8 {
132-
return x?.typeId === Type.LargeUtf8;
133-
}

src/vector.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as arrow from "apache-arrow";
22
import { DataType } from "apache-arrow";
3-
import { LargeList, isLargeBinary, isLargeList, isLargeUtf8 } from "./types";
3+
import { LargeList, isLargeList } from "./types";
44

55
type NullBitmap = Uint8Array | null | undefined;
66

@@ -340,7 +340,7 @@ export function parseData<T extends DataType>(
340340
});
341341
}
342342

343-
if (isLargeBinary(dataType)) {
343+
if (DataType.isLargeBinary(dataType)) {
344344
const [validityPtr, offsetsPtr, dataPtr] = bufferPtrs;
345345
const nullBitmap = parseNullBitmap(
346346
dataView.buffer,
@@ -420,7 +420,7 @@ export function parseData<T extends DataType>(
420420
});
421421
}
422422

423-
if (isLargeUtf8(dataType)) {
423+
if (DataType.isLargeUtf8(dataType)) {
424424
const [validityPtr, offsetsPtr, dataPtr] = bufferPtrs;
425425
const nullBitmap = parseNullBitmap(
426426
dataView.buffer,

tests/ffi.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ describe("primitive types non-null", (t) => {
9595

9696
expect(field.name, "col1");
9797
expect(field.typeId).toStrictEqual(fixture.dataType.typeId);
98-
expect(field.nullable).toBeFalsy();
98+
expect(field.nullable).toBeTruthy();
9999

100100
const arrayPtr = ffiTable.arrayAddr(0, 0);
101101
const wasmVector = parseVector(

yarn.lock

Lines changed: 49 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -463,6 +463,15 @@ __metadata:
463463
languageName: node
464464
linkType: hard
465465

466+
"@swc/helpers@npm:^0.5.2":
467+
version: 0.5.3
468+
resolution: "@swc/helpers@npm:0.5.3"
469+
dependencies:
470+
tslib: "npm:^2.4.0"
471+
checksum: 7003b9dafad38e27a4474a3dcf78d2aee85ce4bb7ee171ecc2d5b533768fb4f8fc9dbd6a1c3a9df5f8001e61ff416b93681e0a7dcbdc0df109b3e09c50cd4615
472+
languageName: node
473+
linkType: hard
474+
466475
"@tootallnate/once@npm:2":
467476
version: 2.0.0
468477
resolution: "@tootallnate/once@npm:2.0.0"
@@ -514,17 +523,17 @@ __metadata:
514523
languageName: node
515524
linkType: hard
516525

517-
"@types/command-line-args@npm:5.2.0":
518-
version: 5.2.0
519-
resolution: "@types/command-line-args@npm:5.2.0"
520-
checksum: 82a9308c9219fb19619dba302a4c3ccd039c8974b4b2d46265b9c99333168207743cba9c02fd85178d2f7f9a1e6d76c472e3ac45b1616b1f5926877c95ce0169
526+
"@types/command-line-args@npm:^5.2.1":
527+
version: 5.2.3
528+
resolution: "@types/command-line-args@npm:5.2.3"
529+
checksum: 3a9bc58fd26e546391f6369dd28c03d59349dc4ac39eada1a5c39cc3578e02e4aac222615170e0db79b198ffba2af84fdbdda46e08c6edc4da42bc17ea85200f
521530
languageName: node
522531
linkType: hard
523532

524-
"@types/command-line-usage@npm:5.0.2":
525-
version: 5.0.2
526-
resolution: "@types/command-line-usage@npm:5.0.2"
527-
checksum: 5553012915df5fcf95e1ef5363fa2d0bc8543d80aa972916cb8e0ab99c0581e573af6e5e9426560367353e86bea7ff11c73d7e1d979190fe8799f6229b6d1e32
533+
"@types/command-line-usage@npm:^5.0.2":
534+
version: 5.0.4
535+
resolution: "@types/command-line-usage@npm:5.0.4"
536+
checksum: 67840ebf4bcfee200c07d978669ad596fe2adc350fd5c19d44ec2248623575d96ec917f513d1d59453f8f57e879133861a4cc41c20045c07f6c959f1fcaac7ad
528537
languageName: node
529538
linkType: hard
530539

@@ -542,17 +551,12 @@ __metadata:
542551
languageName: node
543552
linkType: hard
544553

545-
"@types/node@npm:20.3.0":
546-
version: 20.3.0
547-
resolution: "@types/node@npm:20.3.0"
548-
checksum: f717d92c29c4877db394b604771b3734216f013312f93252f72c2018aabe8083be905fbcf0644c859938c8183b6e0245faaeaab94c9e78268b87a449bc6ef4aa
549-
languageName: node
550-
linkType: hard
551-
552-
"@types/pad-left@npm:2.1.1":
553-
version: 2.1.1
554-
resolution: "@types/pad-left@npm:2.1.1"
555-
checksum: 134a50786e5515e78b7b6a69150e768e877c6986ef637f921b9602d95cc73c0bb44ddbb160d7eb96706be792dc643e8b82617ef9760f4a5fa7f99cd06df03e50
554+
"@types/node@npm:^20.6.0":
555+
version: 20.11.5
556+
resolution: "@types/node@npm:20.11.5"
557+
dependencies:
558+
undici-types: "npm:~5.26.4"
559+
checksum: 6d18cec852f5cfbed3ec42b5c01c026e7a3f9da540d6e3d6738d4cee9979fb308cf27b6df7ba40a6553e7bc82e678f0ef53ba6e6ad52e5b86bd97b7783c2a42c
556560
languageName: node
557561
linkType: hard
558562

@@ -717,23 +721,22 @@ __metadata:
717721
languageName: node
718722
linkType: hard
719723

720-
"apache-arrow@npm:^14":
721-
version: 14.0.1
722-
resolution: "apache-arrow@npm:14.0.1"
724+
"apache-arrow@npm:^15":
725+
version: 15.0.0
726+
resolution: "apache-arrow@npm:15.0.0"
723727
dependencies:
724-
"@types/command-line-args": "npm:5.2.0"
725-
"@types/command-line-usage": "npm:5.0.2"
726-
"@types/node": "npm:20.3.0"
727-
"@types/pad-left": "npm:2.1.1"
728-
command-line-args: "npm:5.2.1"
729-
command-line-usage: "npm:7.0.1"
730-
flatbuffers: "npm:23.5.26"
728+
"@swc/helpers": "npm:^0.5.2"
729+
"@types/command-line-args": "npm:^5.2.1"
730+
"@types/command-line-usage": "npm:^5.0.2"
731+
"@types/node": "npm:^20.6.0"
732+
command-line-args: "npm:^5.2.1"
733+
command-line-usage: "npm:^7.0.1"
734+
flatbuffers: "npm:^23.5.26"
731735
json-bignum: "npm:^0.0.3"
732-
pad-left: "npm:^2.1.0"
733-
tslib: "npm:^2.5.3"
736+
tslib: "npm:^2.6.2"
734737
bin:
735-
arrow2csv: bin/arrow2csv.js
736-
checksum: 9049c6fab8f5a0a7da737f6ce1c9e13dd5d97830e89c13f6d2a65b8b1b99bb57d7c678d580f4ca2c0ecb7ee13119f7d3c6b72f80415e4ecf36de5323e822ddc1
738+
arrow2csv: bin/arrow2csv.cjs
739+
checksum: 706921d06c89841d1973a0a7d53150862d065f503091d824173535d0d58322e7b2600932fd3bfeb62be99d94e91acfef6961161776fcf51a18a9cc23172ca243
737740
languageName: node
738741
linkType: hard
739742

@@ -781,7 +784,7 @@ __metadata:
781784
dependencies:
782785
"@rollup/plugin-terser": "npm:^0.4.3"
783786
"@rollup/plugin-typescript": "npm:^11.1.2"
784-
apache-arrow: "npm:^14"
787+
apache-arrow: "npm:^15"
785788
prettier: "npm:^3.1.0"
786789
rollup: "npm:^4.1.5"
787790
rollup-plugin-dts: "npm:^6.1.0"
@@ -790,7 +793,7 @@ __metadata:
790793
typescript: "npm:^5.2.2"
791794
vitest: "npm:^0.34.6"
792795
peerDependencies:
793-
apache-arrow: ">=14"
796+
apache-arrow: ">=15"
794797
languageName: unknown
795798
linkType: soft
796799

@@ -970,7 +973,7 @@ __metadata:
970973
languageName: node
971974
linkType: hard
972975

973-
"command-line-args@npm:5.2.1, command-line-args@npm:^5.2.1":
976+
"command-line-args@npm:^5.2.1":
974977
version: 5.2.1
975978
resolution: "command-line-args@npm:5.2.1"
976979
dependencies:
@@ -982,7 +985,7 @@ __metadata:
982985
languageName: node
983986
linkType: hard
984987

985-
"command-line-usage@npm:7.0.1, command-line-usage@npm:^7.0.0":
988+
"command-line-usage@npm:^7.0.0, command-line-usage@npm:^7.0.1":
986989
version: 7.0.1
987990
resolution: "command-line-usage@npm:7.0.1"
988991
dependencies:
@@ -1233,7 +1236,7 @@ __metadata:
12331236
languageName: node
12341237
linkType: hard
12351238

1236-
"flatbuffers@npm:23.5.26":
1239+
"flatbuffers@npm:^23.5.26":
12371240
version: 23.5.26
12381241
resolution: "flatbuffers@npm:23.5.26"
12391242
checksum: 69e0903caa3aa8d2bdbf1557995835fd097806d413abc9b4b7440301a8ae2bd427220be1d613af80609c38d38cdbdeb459706903080433b509ceb64faf91b711
@@ -1889,15 +1892,6 @@ __metadata:
18891892
languageName: node
18901893
linkType: hard
18911894

1892-
"pad-left@npm:^2.1.0":
1893-
version: 2.1.0
1894-
resolution: "pad-left@npm:2.1.0"
1895-
dependencies:
1896-
repeat-string: "npm:^1.5.4"
1897-
checksum: 446c858bf3f7171cd164569aec074f3fe05ed9bcd03bc4016bb02b14733060344e54965e61667b46b67242ff77ae13d2ef9c35b6b039aed658ef5e9d1872f5d4
1898-
languageName: node
1899-
linkType: hard
1900-
19011895
"path-is-absolute@npm:^1.0.0":
19021896
version: 1.0.1
19031897
resolution: "path-is-absolute@npm:1.0.1"
@@ -2036,13 +2030,6 @@ __metadata:
20362030
languageName: node
20372031
linkType: hard
20382032

2039-
"repeat-string@npm:^1.5.4":
2040-
version: 1.6.1
2041-
resolution: "repeat-string@npm:1.6.1"
2042-
checksum: 87fa21bfdb2fbdedc44b9a5b118b7c1239bdd2c2c1e42742ef9119b7d412a5137a1d23f1a83dc6bb686f4f27429ac6f542e3d923090b44181bafa41e8ac0174d
2043-
languageName: node
2044-
linkType: hard
2045-
20462033
"resolve@npm:^1.22.1":
20472034
version: 1.22.3
20482035
resolution: "resolve@npm:1.22.3"
@@ -2513,7 +2500,7 @@ __metadata:
25132500
languageName: node
25142501
linkType: hard
25152502

2516-
"tslib@npm:^2.5.3":
2503+
"tslib@npm:^2.4.0, tslib@npm:^2.6.2":
25172504
version: 2.6.2
25182505
resolution: "tslib@npm:2.6.2"
25192506
checksum: e03a8a4271152c8b26604ed45535954c0a45296e32445b4b87f8a5abdb2421f40b59b4ca437c4346af0f28179780d604094eb64546bee2019d903d01c6c19bdb
@@ -2568,6 +2555,13 @@ __metadata:
25682555
languageName: node
25692556
linkType: hard
25702557

2558+
"undici-types@npm:~5.26.4":
2559+
version: 5.26.5
2560+
resolution: "undici-types@npm:5.26.5"
2561+
checksum: bb673d7876c2d411b6eb6c560e0c571eef4a01c1c19925175d16e3a30c4c428181fb8d7ae802a261f283e4166a0ac435e2f505743aa9e45d893f9a3df017b501
2562+
languageName: node
2563+
linkType: hard
2564+
25712565
"unique-filename@npm:^3.0.0":
25722566
version: 3.0.0
25732567
resolution: "unique-filename@npm:3.0.0"

0 commit comments

Comments
 (0)