@loaders.gl/parquet 4.0.0-beta.4 → 4.0.0-beta.5

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.
@@ -1 +1 @@
1
- {"version":3,"file":"buffer-polyfill.browser.d.ts","sourceRoot":"","sources":["../../src/buffer-polyfill/buffer-polyfill.browser.ts"],"names":[],"mappings":";AAIA,yDAAyD;AACzD,wBAAgB,qBAAqB,IAAI,OAAO,MAAM,CAWrD"}
1
+ {"version":3,"file":"buffer-polyfill.browser.d.ts","sourceRoot":"","sources":["../../src/buffer-polyfill/buffer-polyfill.browser.ts"],"names":[],"mappings":";AAIA,yDAAyD;AACzD,wBAAgB,qBAAqB,IAAI,OAAO,MAAM,CAMrD"}
@@ -1,8 +1,6 @@
1
1
  import { Buffer as BufferPolyfill } from "./buffer.js";
2
2
  export function installBufferPolyfill() {
3
3
  globalThis.Buffer = globalThis.Buffer || BufferPolyfill;
4
- globalThis.process = globalThis.process || {};
5
- globalThis.process.env = globalThis.process.env || {};
6
4
  return globalThis.Buffer;
7
5
  }
8
6
  //# sourceMappingURL=buffer-polyfill.browser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"buffer-polyfill.browser.js","names":["Buffer","BufferPolyfill","installBufferPolyfill","globalThis","process","env"],"sources":["../../src/buffer-polyfill/buffer-polyfill.browser.ts"],"sourcesContent":["// luma.gl, MIT license\n\nimport {Buffer as BufferPolyfill} from './buffer';\n\n/** Install Node.js Buffer polyfill (NO-OP in Node.js) */\nexport function installBufferPolyfill(): typeof Buffer {\n // @ts-ignore\n globalThis.Buffer = globalThis.Buffer || BufferPolyfill;\n\n // @ts-ignore\n globalThis.process = globalThis.process || {};\n // @ts-ignore\n globalThis.process.env = globalThis.process.env || {};\n\n // @ts-ignore\n return globalThis.Buffer;\n}\n"],"mappings":"SAEQA,MAAM,IAAIC,cAAc;AAGhC,OAAO,SAASC,qBAAqBA,CAAA,EAAkB;EAErDC,UAAU,CAACH,MAAM,GAAGG,UAAU,CAACH,MAAM,IAAIC,cAAc;EAGvDE,UAAU,CAACC,OAAO,GAAGD,UAAU,CAACC,OAAO,IAAI,CAAC,CAAC;EAE7CD,UAAU,CAACC,OAAO,CAACC,GAAG,GAAGF,UAAU,CAACC,OAAO,CAACC,GAAG,IAAI,CAAC,CAAC;EAGrD,OAAOF,UAAU,CAACH,MAAM;AAC1B"}
1
+ {"version":3,"file":"buffer-polyfill.browser.js","names":["Buffer","BufferPolyfill","installBufferPolyfill","globalThis"],"sources":["../../src/buffer-polyfill/buffer-polyfill.browser.ts"],"sourcesContent":["// luma.gl, MIT license\n\nimport {Buffer as BufferPolyfill} from './buffer';\n\n/** Install Node.js Buffer polyfill (NO-OP in Node.js) */\nexport function installBufferPolyfill(): typeof Buffer {\n // @ts-ignore\n globalThis.Buffer = globalThis.Buffer || BufferPolyfill;\n\n // @ts-ignore\n return globalThis.Buffer;\n}\n"],"mappings":"SAEQA,MAAM,IAAIC,cAAc;AAGhC,OAAO,SAASC,qBAAqBA,CAAA,EAAkB;EAErDC,UAAU,CAACH,MAAM,GAAGG,UAAU,CAACH,MAAM,IAAIC,cAAc;EAGvD,OAAOE,UAAU,CAACH,MAAM;AAC1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"install-buffer-polyfill.d.ts","sourceRoot":"","sources":["../../src/buffer-polyfill/install-buffer-polyfill.ts"],"names":[],"mappings":";AAEA,eAAO,MAAM,MAAM,mBAA0B,CAAC"}
1
+ {"version":3,"file":"install-buffer-polyfill.d.ts","sourceRoot":"","sources":["../../src/buffer-polyfill/install-buffer-polyfill.ts"],"names":[],"mappings":";AAOA,eAAO,MAAM,MAAM,mBAA0B,CAAC"}
@@ -1,3 +1,5 @@
1
1
  import { installBufferPolyfill } from "./buffer-polyfill.node.js";
2
+ globalThis.process = globalThis.process || {};
3
+ globalThis.process.env = globalThis.process.env || {};
2
4
  export const Buffer = installBufferPolyfill();
3
5
  //# sourceMappingURL=install-buffer-polyfill.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"install-buffer-polyfill.js","names":["installBufferPolyfill","Buffer"],"sources":["../../src/buffer-polyfill/install-buffer-polyfill.ts"],"sourcesContent":["import {installBufferPolyfill} from './buffer-polyfill.node';\n\nexport const Buffer = installBufferPolyfill();\n"],"mappings":"SAAQA,qBAAqB;AAE7B,OAAO,MAAMC,MAAM,GAAGD,qBAAqB,CAAC,CAAC"}
1
+ {"version":3,"file":"install-buffer-polyfill.js","names":["installBufferPolyfill","globalThis","process","env","Buffer"],"sources":["../../src/buffer-polyfill/install-buffer-polyfill.ts"],"sourcesContent":["import {installBufferPolyfill} from './buffer-polyfill.node';\n\n// @ts-ignore\nglobalThis.process = globalThis.process || {};\n// @ts-ignore\nglobalThis.process.env = globalThis.process.env || {};\n\nexport const Buffer = installBufferPolyfill();\n"],"mappings":"SAAQA,qBAAqB;AAG7BC,UAAU,CAACC,OAAO,GAAGD,UAAU,CAACC,OAAO,IAAI,CAAC,CAAC;AAE7CD,UAAU,CAACC,OAAO,CAACC,GAAG,GAAGF,UAAU,CAACC,OAAO,CAACC,GAAG,IAAI,CAAC,CAAC;AAErD,OAAO,MAAMC,MAAM,GAAGJ,qBAAqB,CAAC,CAAC"}
package/dist/index.cjs CHANGED
@@ -1772,12 +1772,12 @@ var hexSliceLookupTable = function() {
1772
1772
  // src/buffer-polyfill/buffer-polyfill.browser.ts
1773
1773
  function installBufferPolyfill() {
1774
1774
  globalThis.Buffer = globalThis.Buffer || Buffer2;
1775
- globalThis.process = globalThis.process || {};
1776
- globalThis.process.env = globalThis.process.env || {};
1777
1775
  return globalThis.Buffer;
1778
1776
  }
1779
1777
 
1780
1778
  // src/buffer-polyfill/install-buffer-polyfill.ts
1779
+ globalThis.process = globalThis.process || {};
1780
+ globalThis.process.env = globalThis.process.env || {};
1781
1781
  var Buffer3 = installBufferPolyfill();
1782
1782
 
1783
1783
  // src/parquet-loader.ts
@@ -7254,7 +7254,10 @@ function unpackGeoFieldMetadata(field, columnMetadata) {
7254
7254
  for (const [crsKey, crsValue] of Object.entries(value || {})) {
7255
7255
  switch (crsKey) {
7256
7256
  case "id":
7257
- const crsId = typeof crsValue === "object" ? `${crsValue == null ? void 0 : crsValue.authority}:${crsValue == null ? void 0 : crsValue.code}` : JSON.stringify(crsValue);
7257
+ const crsId = typeof crsValue === "object" ? (
7258
+ // @ts-ignore
7259
+ `${crsValue == null ? void 0 : crsValue.authority}:${crsValue == null ? void 0 : crsValue.code}`
7260
+ ) : JSON.stringify(crsValue);
7258
7261
  setFieldMetadata(field, `geo.crs.${crsKey}`, crsId);
7259
7262
  break;
7260
7263
  default:
@@ -1 +1 @@
1
- {"version":3,"file":"decode-geo-metadata.js","names":["parseJSONStringMetadata","schema","metadataKey","stringifiedMetadata","metadata","JSON","parse","unpackJSONStringMetadata","json","key","value","Object","entries","stringify","getGeoMetadata","geoMetadata","setGeoMetadata","stringifiedGeoMetadata","geo","unpackGeoMetadata","version","primary_column","columns","keys","join","columnName","columnMetadata","field","fields","find","name","setFieldMetadata","unpackGeoFieldMetadata","crsKey","crsValue","crsId","authority","code"],"sources":["../../../src/lib/geo/decode-geo-metadata.ts"],"sourcesContent":["// loaders.gl, MIT license\nimport {Schema, Field} from '@loaders.gl/schema';\n\n/* eslint-disable camelcase */\n\ntype GeometryType =\n | 'Point'\n | 'LineString'\n | 'Polygon'\n | 'MultiPoint'\n | 'MultiLineString'\n | 'MultiPolygon'\n | 'GeometryCollection'\n | 'Point Z'\n | 'LineString Z'\n | 'Polygon Z'\n | 'MultiPoint Z'\n | 'MultiLineString Z'\n | 'MultiPolygon Z'\n | 'GeometryCollection Z';\n\n/**\n * A geoarrow / geoparquet geo metadata object\n * (stored in stringified form in the top level metadata 'geo' key)\n * @see https://github.com/opengeospatial/geoparquet/blob/main/format-specs/geoparquet.md\n * @see https://github.com/geoarrow/geoarrow/blob/main/metadata.md\n * */\nexport type GeoMetadata = {\n version?: string;\n primary_column?: string;\n columns: Record<string, GeoColumnMetadata>;\n [key: string]: unknown;\n};\n\n/** A geoarrow / geoparquet geo metadata for one geometry column */\nexport type GeoColumnMetadata = {\n encoding: 'wkb' | 'wkt';\n geometry_types: GeometryType[];\n crs?: object | null;\n orientation?: 'counterclockwise';\n bbox?: [number, number, number, number] | [number, number, number, number, number, number];\n edges?: 'planar' | 'spherical';\n epoch?: number;\n [key: string]: unknown;\n};\n\n/** Parse a key with stringified arrow metadata */\nexport function parseJSONStringMetadata(\n schema: Schema,\n metadataKey: string\n): Record<string, unknown> | null {\n const stringifiedMetadata = schema.metadata[metadataKey];\n if (!stringifiedMetadata) {\n return null;\n }\n\n try {\n const metadata = JSON.parse(stringifiedMetadata);\n if (!metadata || typeof metadata !== 'object') {\n return null;\n }\n return metadata;\n } catch {\n return null;\n }\n}\n\nexport function unpackJSONStringMetadata(schema: Schema, metadataKey: string): void {\n const json = parseJSONStringMetadata(schema, metadataKey);\n for (const [key, value] of Object.entries(json || {})) {\n schema.metadata[`${metadataKey}.${key}`] =\n typeof value === 'string' ? value : JSON.stringify(value);\n }\n}\n\n// GEO METADATA\n\n/**\n * Reads the GeoMetadata object from the metadata\n * @note geoarrow / parquet schema is stringified into a single key-value pair in the parquet metadata */\nexport function getGeoMetadata(schema: Schema): GeoMetadata | null {\n const geoMetadata = parseJSONStringMetadata(schema, 'geo') as GeoMetadata;\n return geoMetadata;\n}\n\n/**\n * Stores a geoarrow / geoparquet geo metadata object in the schema\n * @note geoarrow / geoparquet geo metadata is a single stringified JSON field\n */\nexport function setGeoMetadata(schema: Schema, geoMetadata: GeoMetadata): void {\n const stringifiedGeoMetadata = JSON.stringify(geoMetadata);\n schema.metadata.geo = stringifiedGeoMetadata;\n}\n\n/**\n * Unpacks geo metadata into separate metadata fields (parses the long JSON string)\n * @note geoarrow / parquet schema is stringified into a single key-value pair in the parquet metadata\n */\nexport function unpackGeoMetadata(schema: Schema): void {\n const geoMetadata = getGeoMetadata(schema);\n if (!geoMetadata) {\n return;\n }\n\n // Store Parquet Schema Level Metadata\n\n const {version, primary_column, columns} = geoMetadata;\n if (version) {\n schema.metadata['geo.version'] = version;\n }\n\n if (primary_column) {\n schema.metadata['geo.primary_column'] = primary_column;\n }\n\n // store column names as comma separated list\n schema.metadata['geo.columns'] = Object.keys(columns || {}).join('');\n\n for (const [columnName, columnMetadata] of Object.entries(columns || {})) {\n const field = schema.fields.find((field) => field.name === columnName);\n if (field) {\n if (field.name === primary_column) {\n setFieldMetadata(field, 'geo.primary_field', 'true');\n }\n unpackGeoFieldMetadata(field, columnMetadata);\n }\n }\n}\n\n// eslint-disable-next-line complexity\nfunction unpackGeoFieldMetadata(field: Field, columnMetadata): void {\n for (const [key, value] of Object.entries(columnMetadata || {})) {\n switch (key) {\n case 'geometry_type':\n setFieldMetadata(field, `geo.${key}`, (value as string[]).join(','));\n break;\n case 'bbox':\n setFieldMetadata(field, `geo.crs.${key}`, JSON.stringify(value));\n break;\n case 'crs':\n for (const [crsKey, crsValue] of Object.entries(value || {})) {\n switch (crsKey) {\n case 'id':\n const crsId =\n typeof crsValue === 'object'\n ? `${crsValue?.authority}:${crsValue?.code}`\n : JSON.stringify(crsValue);\n setFieldMetadata(field, `geo.crs.${crsKey}`, crsId);\n break;\n default:\n setFieldMetadata(\n field,\n `geo.crs.${crsKey}`,\n typeof crsValue === 'string' ? crsValue : JSON.stringify(crsValue)\n );\n break;\n }\n }\n break;\n case 'edges':\n default:\n setFieldMetadata(\n field,\n `geo.${key}`,\n typeof value === 'string' ? value : JSON.stringify(value)\n );\n }\n }\n}\n\nfunction setFieldMetadata(field: Field, key: string, value: string): void {\n field.metadata = field.metadata || {};\n field.metadata[key] = value;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"decode-geo-metadata.js","names":["parseJSONStringMetadata","schema","metadataKey","stringifiedMetadata","metadata","JSON","parse","unpackJSONStringMetadata","json","key","value","Object","entries","stringify","getGeoMetadata","geoMetadata","setGeoMetadata","stringifiedGeoMetadata","geo","unpackGeoMetadata","version","primary_column","columns","keys","join","columnName","columnMetadata","field","fields","find","name","setFieldMetadata","unpackGeoFieldMetadata","crsKey","crsValue","crsId","authority","code"],"sources":["../../../src/lib/geo/decode-geo-metadata.ts"],"sourcesContent":["// loaders.gl, MIT license\nimport {Schema, Field} from '@loaders.gl/schema';\n\n/* eslint-disable camelcase */\n\ntype GeometryType =\n | 'Point'\n | 'LineString'\n | 'Polygon'\n | 'MultiPoint'\n | 'MultiLineString'\n | 'MultiPolygon'\n | 'GeometryCollection'\n | 'Point Z'\n | 'LineString Z'\n | 'Polygon Z'\n | 'MultiPoint Z'\n | 'MultiLineString Z'\n | 'MultiPolygon Z'\n | 'GeometryCollection Z';\n\n/**\n * A geoarrow / geoparquet geo metadata object\n * (stored in stringified form in the top level metadata 'geo' key)\n * @see https://github.com/opengeospatial/geoparquet/blob/main/format-specs/geoparquet.md\n * @see https://github.com/geoarrow/geoarrow/blob/main/metadata.md\n * */\nexport type GeoMetadata = {\n version?: string;\n primary_column?: string;\n columns: Record<string, GeoColumnMetadata>;\n [key: string]: unknown;\n};\n\n/** A geoarrow / geoparquet geo metadata for one geometry column */\nexport type GeoColumnMetadata = {\n encoding: 'wkb' | 'wkt';\n geometry_types: GeometryType[];\n crs?: object | null;\n orientation?: 'counterclockwise';\n bbox?: [number, number, number, number] | [number, number, number, number, number, number];\n edges?: 'planar' | 'spherical';\n epoch?: number;\n [key: string]: unknown;\n};\n\n/** Parse a key with stringified arrow metadata */\nexport function parseJSONStringMetadata(\n schema: Schema,\n metadataKey: string\n): Record<string, unknown> | null {\n const stringifiedMetadata = schema.metadata[metadataKey];\n if (!stringifiedMetadata) {\n return null;\n }\n\n try {\n const metadata = JSON.parse(stringifiedMetadata);\n if (!metadata || typeof metadata !== 'object') {\n return null;\n }\n return metadata;\n } catch {\n return null;\n }\n}\n\nexport function unpackJSONStringMetadata(schema: Schema, metadataKey: string): void {\n const json = parseJSONStringMetadata(schema, metadataKey);\n for (const [key, value] of Object.entries(json || {})) {\n schema.metadata[`${metadataKey}.${key}`] =\n typeof value === 'string' ? value : JSON.stringify(value);\n }\n}\n\n// GEO METADATA\n\n/**\n * Reads the GeoMetadata object from the metadata\n * @note geoarrow / parquet schema is stringified into a single key-value pair in the parquet metadata */\nexport function getGeoMetadata(schema: Schema): GeoMetadata | null {\n const geoMetadata = parseJSONStringMetadata(schema, 'geo') as GeoMetadata;\n return geoMetadata;\n}\n\n/**\n * Stores a geoarrow / geoparquet geo metadata object in the schema\n * @note geoarrow / geoparquet geo metadata is a single stringified JSON field\n */\nexport function setGeoMetadata(schema: Schema, geoMetadata: GeoMetadata): void {\n const stringifiedGeoMetadata = JSON.stringify(geoMetadata);\n schema.metadata.geo = stringifiedGeoMetadata;\n}\n\n/**\n * Unpacks geo metadata into separate metadata fields (parses the long JSON string)\n * @note geoarrow / parquet schema is stringified into a single key-value pair in the parquet metadata\n */\nexport function unpackGeoMetadata(schema: Schema): void {\n const geoMetadata = getGeoMetadata(schema);\n if (!geoMetadata) {\n return;\n }\n\n // Store Parquet Schema Level Metadata\n\n const {version, primary_column, columns} = geoMetadata;\n if (version) {\n schema.metadata['geo.version'] = version;\n }\n\n if (primary_column) {\n schema.metadata['geo.primary_column'] = primary_column;\n }\n\n // store column names as comma separated list\n schema.metadata['geo.columns'] = Object.keys(columns || {}).join('');\n\n for (const [columnName, columnMetadata] of Object.entries(columns || {})) {\n const field = schema.fields.find((field) => field.name === columnName);\n if (field) {\n if (field.name === primary_column) {\n setFieldMetadata(field, 'geo.primary_field', 'true');\n }\n unpackGeoFieldMetadata(field, columnMetadata);\n }\n }\n}\n\n// eslint-disable-next-line complexity\nfunction unpackGeoFieldMetadata(field: Field, columnMetadata): void {\n for (const [key, value] of Object.entries(columnMetadata || {})) {\n switch (key) {\n case 'geometry_type':\n setFieldMetadata(field, `geo.${key}`, (value as string[]).join(','));\n break;\n case 'bbox':\n setFieldMetadata(field, `geo.crs.${key}`, JSON.stringify(value));\n break;\n case 'crs':\n // @ts-ignore\n for (const [crsKey, crsValue] of Object.entries(value || {})) {\n switch (crsKey) {\n case 'id':\n const crsId =\n typeof crsValue === 'object'\n ? // @ts-ignore\n `${crsValue?.authority}:${crsValue?.code}`\n : JSON.stringify(crsValue);\n setFieldMetadata(field, `geo.crs.${crsKey}`, crsId);\n break;\n default:\n setFieldMetadata(\n field,\n `geo.crs.${crsKey}`,\n typeof crsValue === 'string' ? crsValue : JSON.stringify(crsValue)\n );\n break;\n }\n }\n break;\n case 'edges':\n default:\n setFieldMetadata(\n field,\n `geo.${key}`,\n typeof value === 'string' ? value : JSON.stringify(value)\n );\n }\n }\n}\n\nfunction setFieldMetadata(field: Field, key: string, value: string): void {\n field.metadata = field.metadata || {};\n field.metadata[key] = value;\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/parquet",
3
- "version": "4.0.0-beta.4",
3
+ "version": "4.0.0-beta.5",
4
4
  "description": "Framework-independent loader for Apache Parquet files",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -49,22 +49,20 @@
49
49
  "util": false,
50
50
  "events": false,
51
51
  "./src/buffer-polyfill/buffer-polyfill.node.ts": "./src/buffer-polyfill/buffer-polyfill.browser.ts",
52
- "./dist/es5/buffer-polyfill/buffer-polyfill.node.js": "./dist/es5/buffer-polyfill/buffer-polyfill.browser.js",
53
- "./dist/esm/buffer-polyfill/buffer-polyfill.node.js": "./dist/esm/buffer-polyfill/buffer-polyfill.browser.js",
52
+ "./dist/buffer-polyfill/buffer-polyfill.node.js": "./dist/buffer-polyfill/buffer-polyfill.browser.js",
54
53
  "./src/lib/wasm/load-wasm/load-wasm-node.ts": "./src/lib/wasm/load-wasm/load-wasm-browser.ts",
55
- "./dist/es5/lib/wasm/load-wasm/load-wasm-node.js": "./dist/es5/lib/wasm/load-wasm/load-wasm-browser.js",
56
- "./dist/esm/lib/wasm/load-wasm/load-wasm-node.js": "./dist/esm/lib/wasm/load-wasm/load-wasm-browser.js"
54
+ "./dist/lib/wasm/load-wasm/load-wasm-node.js": "./dist/lib/wasm/load-wasm/load-wasm-browser.js"
57
55
  },
58
56
  "comments": [
59
57
  "base64-js and ieee754 are used by buffer polyfill"
60
58
  ],
61
59
  "dependencies": {
62
- "@loaders.gl/bson": "4.0.0-beta.4",
63
- "@loaders.gl/compression": "4.0.0-beta.4",
64
- "@loaders.gl/gis": "4.0.0-beta.4",
65
- "@loaders.gl/loader-utils": "4.0.0-beta.4",
66
- "@loaders.gl/schema": "4.0.0-beta.4",
67
- "@loaders.gl/wkt": "4.0.0-beta.4",
60
+ "@loaders.gl/bson": "4.0.0-beta.5",
61
+ "@loaders.gl/compression": "4.0.0-beta.5",
62
+ "@loaders.gl/gis": "4.0.0-beta.5",
63
+ "@loaders.gl/loader-utils": "4.0.0-beta.5",
64
+ "@loaders.gl/schema": "4.0.0-beta.5",
65
+ "@loaders.gl/wkt": "4.0.0-beta.5",
68
66
  "async-mutex": "^0.2.2",
69
67
  "base64-js": "^1.3.1",
70
68
  "brotli": "^1.3.2",
@@ -90,5 +88,5 @@
90
88
  "@types/varint": "^5.0.0",
91
89
  "apache-arrow": "^13.0.0"
92
90
  },
93
- "gitHead": "848c20b474532d301f2c3f8d4e1fb9bf262b86d4"
91
+ "gitHead": "a6f5a0d1a316cc22396e5a4d480c14329d1ef146"
94
92
  }
@@ -7,11 +7,6 @@ export function installBufferPolyfill(): typeof Buffer {
7
7
  // @ts-ignore
8
8
  globalThis.Buffer = globalThis.Buffer || BufferPolyfill;
9
9
 
10
- // @ts-ignore
11
- globalThis.process = globalThis.process || {};
12
- // @ts-ignore
13
- globalThis.process.env = globalThis.process.env || {};
14
-
15
10
  // @ts-ignore
16
11
  return globalThis.Buffer;
17
12
  }
@@ -1,3 +1,8 @@
1
1
  import {installBufferPolyfill} from './buffer-polyfill.node';
2
2
 
3
+ // @ts-ignore
4
+ globalThis.process = globalThis.process || {};
5
+ // @ts-ignore
6
+ globalThis.process.env = globalThis.process.env || {};
7
+
3
8
  export const Buffer = installBufferPolyfill();
@@ -138,12 +138,14 @@ function unpackGeoFieldMetadata(field: Field, columnMetadata): void {
138
138
  setFieldMetadata(field, `geo.crs.${key}`, JSON.stringify(value));
139
139
  break;
140
140
  case 'crs':
141
+ // @ts-ignore
141
142
  for (const [crsKey, crsValue] of Object.entries(value || {})) {
142
143
  switch (crsKey) {
143
144
  case 'id':
144
145
  const crsId =
145
146
  typeof crsValue === 'object'
146
- ? `${crsValue?.authority}:${crsValue?.code}`
147
+ ? // @ts-ignore
148
+ `${crsValue?.authority}:${crsValue?.code}`
147
149
  : JSON.stringify(crsValue);
148
150
  setFieldMetadata(field, `geo.crs.${crsKey}`, crsId);
149
151
  break;