@loaders.gl/arrow 4.0.4 → 4.1.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/arrow-worker.js +237 -2
  2. package/dist/dist.dev.js +1398 -610
  3. package/dist/geoarrow/convert-geoarrow-to-binary-geometry.d.ts +4 -2
  4. package/dist/geoarrow/convert-geoarrow-to-binary-geometry.d.ts.map +1 -1
  5. package/dist/geoarrow/convert-geoarrow-to-binary-geometry.js +51 -32
  6. package/dist/geoarrow/convert-geoarrow-to-binary-geometry.js.map +1 -1
  7. package/dist/geoarrow/convert-geoarrow-to-geojson-geometry.d.ts +13 -0
  8. package/dist/geoarrow/convert-geoarrow-to-geojson-geometry.d.ts.map +1 -0
  9. package/dist/geoarrow/{convert-geoarrow-to-geojson.js → convert-geoarrow-to-geojson-geometry.js} +34 -27
  10. package/dist/geoarrow/convert-geoarrow-to-geojson-geometry.js.map +1 -0
  11. package/dist/geoarrow-loader.d.ts.map +1 -1
  12. package/dist/geoarrow-loader.js +0 -1
  13. package/dist/geoarrow-loader.js.map +1 -1
  14. package/dist/index.cjs +361 -332
  15. package/dist/index.d.ts +1 -1
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +1 -1
  18. package/dist/index.js.map +1 -1
  19. package/dist/parsers/parse-arrow-sync.d.ts.map +1 -1
  20. package/dist/parsers/parse-arrow-sync.js +2 -0
  21. package/dist/parsers/parse-arrow-sync.js.map +1 -1
  22. package/dist/tables/convert-arrow-to-columnar-table.d.ts.map +1 -1
  23. package/dist/tables/convert-arrow-to-columnar-table.js +1 -0
  24. package/dist/tables/convert-arrow-to-columnar-table.js.map +1 -1
  25. package/dist/tables/convert-arrow-to-geojson-table.d.ts +1 -1
  26. package/dist/tables/convert-arrow-to-geojson-table.d.ts.map +1 -1
  27. package/dist/tables/convert-arrow-to-geojson-table.js +14 -8
  28. package/dist/tables/convert-arrow-to-geojson-table.js.map +1 -1
  29. package/dist/tables/convert-columnar-to-row-table.d.ts.map +1 -1
  30. package/dist/tables/convert-columnar-to-row-table.js +1 -0
  31. package/dist/tables/convert-columnar-to-row-table.js.map +1 -1
  32. package/dist/triangulate-on-worker.d.ts +1 -1
  33. package/dist/triangulate-on-worker.d.ts.map +1 -1
  34. package/dist/triangulate-on-worker.js.map +1 -1
  35. package/dist/triangulation-worker.js +31 -24
  36. package/dist/workers/triangulation-worker.js +3 -1
  37. package/dist/workers/triangulation-worker.js.map +1 -1
  38. package/package.json +16 -10
  39. package/src/geoarrow/convert-geoarrow-to-binary-geometry.ts +81 -46
  40. package/src/geoarrow/{convert-geoarrow-to-geojson.ts → convert-geoarrow-to-geojson-geometry.ts} +56 -46
  41. package/src/geoarrow-loader.ts +0 -4
  42. package/src/index.ts +1 -1
  43. package/src/parsers/parse-arrow-sync.ts +6 -1
  44. package/src/tables/convert-arrow-to-columnar-table.ts +1 -0
  45. package/src/tables/convert-arrow-to-geojson-table.ts +18 -7
  46. package/src/tables/convert-columnar-to-row-table.ts +1 -0
  47. package/src/triangulate-on-worker.ts +1 -1
  48. package/src/workers/triangulation-worker.ts +1 -1
  49. package/dist/geoarrow/convert-geoarrow-to-geojson.d.ts +0 -20
  50. package/dist/geoarrow/convert-geoarrow-to-geojson.d.ts.map +0 -1
  51. package/dist/geoarrow/convert-geoarrow-to-geojson.js.map +0 -1
@@ -1879,6 +1879,16 @@
1879
1879
  proto.ArrayType = Int32Array;
1880
1880
  return proto[Symbol.toStringTag] = "Date";
1881
1881
  })(Date_.prototype);
1882
+ var DateDay = class extends Date_ {
1883
+ constructor() {
1884
+ super(DateUnit.DAY);
1885
+ }
1886
+ };
1887
+ var DateMillisecond = class extends Date_ {
1888
+ constructor() {
1889
+ super(DateUnit.MILLISECOND);
1890
+ }
1891
+ };
1882
1892
  var Time_ = class extends DataType {
1883
1893
  constructor(unit, bitWidth) {
1884
1894
  super();
@@ -1907,6 +1917,26 @@
1907
1917
  proto.bitWidth = null;
1908
1918
  return proto[Symbol.toStringTag] = "Time";
1909
1919
  })(Time_.prototype);
1920
+ var TimeSecond = class extends Time_ {
1921
+ constructor() {
1922
+ super(TimeUnit.SECOND, 32);
1923
+ }
1924
+ };
1925
+ var TimeMillisecond = class extends Time_ {
1926
+ constructor() {
1927
+ super(TimeUnit.MILLISECOND, 32);
1928
+ }
1929
+ };
1930
+ var TimeMicrosecond = class extends Time_ {
1931
+ constructor() {
1932
+ super(TimeUnit.MICROSECOND, 64);
1933
+ }
1934
+ };
1935
+ var TimeNanosecond = class extends Time_ {
1936
+ constructor() {
1937
+ super(TimeUnit.NANOSECOND, 64);
1938
+ }
1939
+ };
1910
1940
  var Timestamp_ = class extends DataType {
1911
1941
  constructor(unit, timezone) {
1912
1942
  super();
@@ -1927,6 +1957,26 @@
1927
1957
  proto.ArrayType = Int32Array;
1928
1958
  return proto[Symbol.toStringTag] = "Timestamp";
1929
1959
  })(Timestamp_.prototype);
1960
+ var TimestampSecond = class extends Timestamp_ {
1961
+ constructor(timezone) {
1962
+ super(TimeUnit.SECOND, timezone);
1963
+ }
1964
+ };
1965
+ var TimestampMillisecond = class extends Timestamp_ {
1966
+ constructor(timezone) {
1967
+ super(TimeUnit.MILLISECOND, timezone);
1968
+ }
1969
+ };
1970
+ var TimestampMicrosecond = class extends Timestamp_ {
1971
+ constructor(timezone) {
1972
+ super(TimeUnit.MICROSECOND, timezone);
1973
+ }
1974
+ };
1975
+ var TimestampNanosecond = class extends Timestamp_ {
1976
+ constructor(timezone) {
1977
+ super(TimeUnit.NANOSECOND, timezone);
1978
+ }
1979
+ };
1930
1980
  var Interval_ = class extends DataType {
1931
1981
  constructor(unit) {
1932
1982
  super();
@@ -1945,6 +1995,16 @@
1945
1995
  proto.ArrayType = Int32Array;
1946
1996
  return proto[Symbol.toStringTag] = "Interval";
1947
1997
  })(Interval_.prototype);
1998
+ var IntervalDayTime = class extends Interval_ {
1999
+ constructor() {
2000
+ super(IntervalUnit.DAY_TIME);
2001
+ }
2002
+ };
2003
+ var IntervalYearMonth = class extends Interval_ {
2004
+ constructor() {
2005
+ super(IntervalUnit.YEAR_MONTH);
2006
+ }
2007
+ };
1948
2008
  var List = class extends DataType {
1949
2009
  constructor(child) {
1950
2010
  super();
@@ -11893,14 +11953,189 @@ return true;`);
11893
11953
  }
11894
11954
  return {
11895
11955
  shape: "columnar-table",
11956
+ schema: table.schema,
11896
11957
  data: columnarTable
11897
11958
  };
11898
11959
  }
11899
11960
 
11961
+ // src/schema/convert-arrow-schema.ts
11962
+ function serializeArrowSchema(arrowSchema) {
11963
+ return {
11964
+ fields: arrowSchema.fields.map((arrowField) => serializeArrowField(arrowField)),
11965
+ metadata: serializeArrowMetadata(arrowSchema.metadata)
11966
+ };
11967
+ }
11968
+ function serializeArrowMetadata(arrowMetadata) {
11969
+ return Object.fromEntries(arrowMetadata);
11970
+ }
11971
+ function serializeArrowField(field) {
11972
+ return {
11973
+ name: field.name,
11974
+ type: serializeArrowType(field.type),
11975
+ nullable: field.nullable,
11976
+ metadata: serializeArrowMetadata(field.metadata)
11977
+ };
11978
+ }
11979
+ function serializeArrowType(arrowType) {
11980
+ switch (arrowType.constructor) {
11981
+ case Null:
11982
+ return "null";
11983
+ case Binary:
11984
+ return "binary";
11985
+ case Bool:
11986
+ return "bool";
11987
+ case Int_:
11988
+ const intType = arrowType;
11989
+ return `${intType.isSigned ? "u" : ""}int${intType.bitWidth}`;
11990
+ case Int8:
11991
+ return "int8";
11992
+ case Int16:
11993
+ return "int16";
11994
+ case Int32:
11995
+ return "int32";
11996
+ case Int64:
11997
+ return "int64";
11998
+ case Uint8:
11999
+ return "uint8";
12000
+ case Uint16:
12001
+ return "uint16";
12002
+ case Uint32:
12003
+ return "uint32";
12004
+ case Uint64:
12005
+ return "uint64";
12006
+ case Float:
12007
+ const precision = arrowType.precision;
12008
+ switch (precision) {
12009
+ case Precision.HALF:
12010
+ return "float16";
12011
+ case Precision.SINGLE:
12012
+ return "float32";
12013
+ case Precision.DOUBLE:
12014
+ return "float64";
12015
+ default:
12016
+ return "float16";
12017
+ }
12018
+ case Float16:
12019
+ return "float16";
12020
+ case Float32:
12021
+ return "float32";
12022
+ case Float64:
12023
+ return "float64";
12024
+ case Utf8:
12025
+ return "utf8";
12026
+ case Decimal:
12027
+ const decimal = arrowType;
12028
+ return {
12029
+ type: "decimal",
12030
+ bitWidth: decimal.bitWidth,
12031
+ precision: decimal.precision,
12032
+ scale: decimal.scale
12033
+ };
12034
+ case Date_:
12035
+ const dateUnit = arrowType.unit;
12036
+ return dateUnit === DateUnit.DAY ? "date-day" : "date-millisecond";
12037
+ case DateDay:
12038
+ return "date-day";
12039
+ case DateMillisecond:
12040
+ return "date-millisecond";
12041
+ case Time_:
12042
+ const timeUnit = arrowType.unit;
12043
+ switch (timeUnit) {
12044
+ case TimeUnit.SECOND:
12045
+ return "time-second";
12046
+ case TimeUnit.MILLISECOND:
12047
+ return "time-millisecond";
12048
+ case TimeUnit.MICROSECOND:
12049
+ return "time-microsecond";
12050
+ case TimeUnit.NANOSECOND:
12051
+ return "time-nanosecond";
12052
+ default:
12053
+ return "time-second";
12054
+ }
12055
+ case TimeMillisecond:
12056
+ return "time-millisecond";
12057
+ case TimeSecond:
12058
+ return "time-second";
12059
+ case TimeMicrosecond:
12060
+ return "time-microsecond";
12061
+ case TimeNanosecond:
12062
+ return "time-nanosecond";
12063
+ case Timestamp_:
12064
+ const timeStampUnit = arrowType.unit;
12065
+ switch (timeStampUnit) {
12066
+ case TimeUnit.SECOND:
12067
+ return "timestamp-second";
12068
+ case TimeUnit.MILLISECOND:
12069
+ return "timestamp-millisecond";
12070
+ case TimeUnit.MICROSECOND:
12071
+ return "timestamp-microsecond";
12072
+ case TimeUnit.NANOSECOND:
12073
+ return "timestamp-nanosecond";
12074
+ default:
12075
+ return "timestamp-second";
12076
+ }
12077
+ case TimestampSecond:
12078
+ return "timestamp-second";
12079
+ case TimestampMillisecond:
12080
+ return "timestamp-millisecond";
12081
+ case TimestampMicrosecond:
12082
+ return "timestamp-microsecond";
12083
+ case TimestampNanosecond:
12084
+ return "timestamp-nanosecond";
12085
+ case Interval_:
12086
+ const intervalUnit = arrowType.unit;
12087
+ switch (intervalUnit) {
12088
+ case IntervalUnit.DAY_TIME:
12089
+ return "interval-daytime";
12090
+ case IntervalUnit.YEAR_MONTH:
12091
+ return "interval-yearmonth";
12092
+ default:
12093
+ return "interval-daytime";
12094
+ }
12095
+ case IntervalDayTime:
12096
+ return "interval-daytime";
12097
+ case IntervalYearMonth:
12098
+ return "interval-yearmonth";
12099
+ case Map_:
12100
+ const mapType = arrowType;
12101
+ return {
12102
+ type: "map",
12103
+ keysSorted: mapType.keysSorted,
12104
+ children: mapType.children.map((arrowField) => serializeArrowField(arrowField))
12105
+ };
12106
+ case List:
12107
+ const listType = arrowType;
12108
+ const listField = listType.valueField;
12109
+ return {
12110
+ type: "list",
12111
+ children: [serializeArrowField(listField)]
12112
+ };
12113
+ case FixedSizeList:
12114
+ const fixedSizeList = arrowType;
12115
+ return {
12116
+ type: "fixed-size-list",
12117
+ listSize: fixedSizeList.listSize,
12118
+ children: [serializeArrowField(fixedSizeList.children[0])]
12119
+ };
12120
+ case Struct:
12121
+ const structType = arrowType;
12122
+ return {
12123
+ type: "struct",
12124
+ children: structType.children.map((arrowField) => serializeArrowField(arrowField))
12125
+ };
12126
+ default:
12127
+ throw new Error(`arrow type not supported: ${arrowType.constructor.name}`);
12128
+ }
12129
+ }
12130
+
11900
12131
  // src/parsers/parse-arrow-sync.ts
11901
12132
  function parseArrowSync(arrayBuffer, options) {
11902
12133
  const apacheArrowTable = tableFromIPC([new Uint8Array(arrayBuffer)]);
11903
- const arrowTable = { shape: "arrow-table", data: apacheArrowTable };
12134
+ const arrowTable = {
12135
+ shape: "arrow-table",
12136
+ schema: serializeArrowSchema(apacheArrowTable.schema),
12137
+ data: apacheArrowTable
12138
+ };
11904
12139
  const shape = options?.shape || "arrow-table";
11905
12140
  switch (shape) {
11906
12141
  case "arrow-table":
@@ -11939,7 +12174,7 @@ return true;`);
11939
12174
  }
11940
12175
 
11941
12176
  // src/arrow-loader.ts
11942
- var VERSION = true ? "4.0.4" : "latest";
12177
+ var VERSION = true ? "4.1.0-alpha.1" : "latest";
11943
12178
  var ArrowWorkerLoader = {
11944
12179
  name: "Apache Arrow",
11945
12180
  id: "arrow",