@walkthru-earth/objex-utils 0.1.0 → 1.0.0

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.
package/dist/index.cjs CHANGED
@@ -2,6 +2,21 @@
2
2
 
3
3
  var apacheArrow = require('apache-arrow');
4
4
 
5
+ // ../../src/lib/constants.ts
6
+ var STORAGE_KEYS = {
7
+ SETTINGS: "obstore-explore-settings",
8
+ CONNECTIONS: "obstore-explore-connections",
9
+ QUERY_HISTORY: "obstore-explore-query-history"
10
+ };
11
+ var WGS84_CODES = /* @__PURE__ */ new Set([4326, 4979]);
12
+ var DEFAULT_TARGET_CRS = "EPSG:4326";
13
+ var DUCKDB_INIT_TIMEOUT_MS = 3e4;
14
+ var MAX_QUERY_HISTORY_ENTRIES = 200;
15
+ var SQL_PREVIEW_LENGTH = 120;
16
+ var VIEWER_DIR_EXTENSIONS = /* @__PURE__ */ new Set(["zarr", "zr3"]);
17
+ var LAYER_HUE_MULTIPLIER = 137;
18
+ var COPY_FEEDBACK_MS = 2e3;
19
+
5
20
  // ../../src/lib/file-icons/index.ts
6
21
  var DEFAULT_INFO = {
7
22
  icon: "File",
@@ -1000,6 +1015,11 @@ var EXTENSIONS = {
1000
1015
  }
1001
1016
  };
1002
1017
  function getFileTypeInfo(extension, isDir = false) {
1018
+ if (isDir && extension) {
1019
+ const ext2 = extension.startsWith(".") ? extension.toLowerCase() : `.${extension.toLowerCase()}`;
1020
+ const found = EXTENSIONS[ext2];
1021
+ if (found) return found;
1022
+ }
1003
1023
  if (isDir) return FOLDER_INFO;
1004
1024
  const ext = extension.startsWith(".") ? extension.toLowerCase() : `.${extension.toLowerCase()}`;
1005
1025
  return EXTENSIONS[ext] ?? DEFAULT_INFO;
@@ -1200,6 +1220,12 @@ function typeLabel(category) {
1200
1220
  return TYPE_LABELS[category];
1201
1221
  }
1202
1222
 
1223
+ // ../../src/lib/utils/error.ts
1224
+ function handleLoadError(err) {
1225
+ if (err instanceof DOMException && err.name === "AbortError") return null;
1226
+ return err instanceof Error ? err.message : String(err);
1227
+ }
1228
+
1203
1229
  // ../../src/lib/utils/format.ts
1204
1230
  function formatFileSize(bytes) {
1205
1231
  if (bytes < 0) return "0 B";
@@ -1235,6 +1261,16 @@ function getFileExtension(filename) {
1235
1261
  if (lastDot <= 0) return "";
1236
1262
  return filename.slice(lastDot).toLowerCase();
1237
1263
  }
1264
+ function jsonReplacerBigInt(_key, value) {
1265
+ return typeof value === "bigint" ? value.toString() : value;
1266
+ }
1267
+ function formatValue(value) {
1268
+ if (value === null || value === void 0) return "NULL";
1269
+ if (value instanceof Date) return value.toISOString();
1270
+ if (typeof value === "bigint") return value.toString();
1271
+ if (typeof value === "object") return JSON.stringify(value, jsonReplacerBigInt);
1272
+ return String(value);
1273
+ }
1238
1274
  function normalizeGeomType(raw) {
1239
1275
  const s = raw.toUpperCase().replace(/\s+/g, "");
1240
1276
  if (s === "POINT") return "point";
@@ -1837,7 +1873,6 @@ function generateHexDump(data, bytesPerRow = 16) {
1837
1873
  }
1838
1874
 
1839
1875
  // ../../src/lib/utils/parquet-metadata.ts
1840
- var WGS84_CODES = /* @__PURE__ */ new Set([4326, 4979]);
1841
1876
  function mapParquetType(col) {
1842
1877
  const lt = col.logical_type;
1843
1878
  if (lt) {
@@ -1977,25 +2012,280 @@ function extractBounds(geo) {
1977
2012
  return [primaryCol.bbox[0], primaryCol.bbox[1], primaryCol.bbox[2], primaryCol.bbox[3]];
1978
2013
  }
1979
2014
 
1980
- // ../../src/lib/utils/storage-url.ts
1981
- var SCHEME_MAP = {
1982
- "s3://": { provider: "s3", strip: 5 },
1983
- "s3a://": { provider: "s3", strip: 6 },
1984
- "s3n://": { provider: "s3", strip: 6 },
1985
- "aws://": { provider: "s3", strip: 6 },
1986
- "r2://": { provider: "r2", strip: 5 },
1987
- "gs://": { provider: "gcs", strip: 5 },
1988
- "gcs://": { provider: "gcs", strip: 6 },
1989
- "azure://": { provider: "azure", strip: 8 },
1990
- "az://": { provider: "azure", strip: 5 },
1991
- "abfs://": { provider: "azure", strip: 7 },
1992
- "abfss://": { provider: "azure", strip: 8 },
1993
- "wasbs://": { provider: "azure", strip: 8 },
1994
- "adl://": { provider: "azure", strip: 6 },
1995
- "storj://": { provider: "storj", strip: 8 },
1996
- "sj://": { provider: "storj", strip: 5 },
1997
- "swift://": { provider: "unknown", strip: 8 }
2015
+ // ../../src/lib/storage/providers.ts
2016
+ var PROVIDERS = {
2017
+ s3: {
2018
+ label: "AWS S3",
2019
+ description: "Amazon S3 or any S3-compatible service",
2020
+ authMethod: "sigv4",
2021
+ needsRegion: true,
2022
+ needsEndpoint: false,
2023
+ defaultRegion: "us-east-1",
2024
+ endpointTemplate: null,
2025
+ regions: [
2026
+ { code: "us-east-1", label: "US East (N. Virginia)" },
2027
+ { code: "us-east-2", label: "US East (Ohio)" },
2028
+ { code: "us-west-1", label: "US West (N. California)" },
2029
+ { code: "us-west-2", label: "US West (Oregon)" },
2030
+ { code: "eu-west-1", label: "EU (Ireland)" },
2031
+ { code: "eu-west-2", label: "EU (London)" },
2032
+ { code: "eu-west-3", label: "EU (Paris)" },
2033
+ { code: "eu-central-1", label: "EU (Frankfurt)" },
2034
+ { code: "eu-central-2", label: "EU (Zurich)" },
2035
+ { code: "eu-north-1", label: "EU (Stockholm)" },
2036
+ { code: "eu-south-1", label: "EU (Milan)" },
2037
+ { code: "eu-south-2", label: "EU (Spain)" },
2038
+ { code: "ap-northeast-1", label: "Asia Pacific (Tokyo)" },
2039
+ { code: "ap-northeast-2", label: "Asia Pacific (Seoul)" },
2040
+ { code: "ap-northeast-3", label: "Asia Pacific (Osaka)" },
2041
+ { code: "ap-southeast-1", label: "Asia Pacific (Singapore)" },
2042
+ { code: "ap-southeast-2", label: "Asia Pacific (Sydney)" },
2043
+ { code: "ap-southeast-3", label: "Asia Pacific (Jakarta)" },
2044
+ { code: "ap-south-1", label: "Asia Pacific (Mumbai)" },
2045
+ { code: "ap-south-2", label: "Asia Pacific (Hyderabad)" },
2046
+ { code: "ap-east-1", label: "Asia Pacific (Hong Kong)" },
2047
+ { code: "sa-east-1", label: "South America (S\xE3o Paulo)" },
2048
+ { code: "ca-central-1", label: "Canada (Central)" },
2049
+ { code: "ca-west-1", label: "Canada (Calgary)" },
2050
+ { code: "me-south-1", label: "Middle East (Bahrain)" },
2051
+ { code: "me-central-1", label: "Middle East (UAE)" },
2052
+ { code: "af-south-1", label: "Africa (Cape Town)" },
2053
+ { code: "il-central-1", label: "Israel (Tel Aviv)" }
2054
+ ],
2055
+ endpointPlaceholder: "Leave empty for AWS, or enter custom S3 endpoint",
2056
+ schemes: ["s3", "s3a", "s3n", "aws"]
2057
+ },
2058
+ gcs: {
2059
+ label: "Google Cloud",
2060
+ description: "Google Cloud Storage",
2061
+ authMethod: "sigv4",
2062
+ needsRegion: false,
2063
+ needsEndpoint: false,
2064
+ defaultRegion: "auto",
2065
+ endpointTemplate: "https://storage.googleapis.com",
2066
+ regions: [],
2067
+ endpointPlaceholder: "https://storage.googleapis.com",
2068
+ schemes: ["gs", "gcs"]
2069
+ },
2070
+ r2: {
2071
+ label: "Cloudflare R2",
2072
+ description: "Cloudflare R2 Storage",
2073
+ authMethod: "sigv4",
2074
+ needsRegion: false,
2075
+ needsEndpoint: true,
2076
+ defaultRegion: "auto",
2077
+ endpointTemplate: null,
2078
+ regions: [],
2079
+ endpointPlaceholder: "https://<account-id>.r2.cloudflarestorage.com",
2080
+ schemes: ["r2"]
2081
+ },
2082
+ azure: {
2083
+ label: "Azure",
2084
+ description: "Azure Blob Storage",
2085
+ authMethod: "sas-token",
2086
+ needsRegion: false,
2087
+ needsEndpoint: true,
2088
+ defaultRegion: "",
2089
+ endpointTemplate: null,
2090
+ regions: [],
2091
+ bucketLabel: "Container",
2092
+ endpointPlaceholder: "https://<account>.blob.core.windows.net",
2093
+ schemes: ["azure", "az", "abfs", "abfss", "wasbs", "adl"]
2094
+ },
2095
+ minio: {
2096
+ label: "MinIO",
2097
+ description: "Self-hosted MinIO or S3-compatible",
2098
+ authMethod: "sigv4",
2099
+ needsRegion: false,
2100
+ needsEndpoint: true,
2101
+ defaultRegion: "us-east-1",
2102
+ endpointTemplate: null,
2103
+ regions: [],
2104
+ endpointPlaceholder: "https://minio.example.com or http://localhost:9000",
2105
+ schemes: []
2106
+ },
2107
+ storj: {
2108
+ label: "Storj",
2109
+ description: "Storj Decentralized Cloud",
2110
+ authMethod: "sigv4",
2111
+ needsRegion: false,
2112
+ needsEndpoint: false,
2113
+ defaultRegion: "us1",
2114
+ endpointTemplate: "https://gateway.storjshare.io",
2115
+ regions: [
2116
+ { code: "us1", label: "US1" },
2117
+ { code: "eu1", label: "EU1" },
2118
+ { code: "ap1", label: "AP1" }
2119
+ ],
2120
+ endpointPlaceholder: "https://gateway.storjshare.io",
2121
+ schemes: ["storj", "sj"]
2122
+ },
2123
+ b2: {
2124
+ label: "Backblaze B2",
2125
+ description: "Backblaze B2 Cloud Storage",
2126
+ authMethod: "sigv4",
2127
+ needsRegion: true,
2128
+ needsEndpoint: false,
2129
+ defaultRegion: "us-west-004",
2130
+ endpointTemplate: "https://s3.{region}.backblazeb2.com",
2131
+ regions: [
2132
+ { code: "us-west-000", label: "US West (Sacramento)" },
2133
+ { code: "us-west-001", label: "US West (Stockton)" },
2134
+ { code: "us-west-002", label: "US West (Phoenix)" },
2135
+ { code: "us-west-004", label: "US West" },
2136
+ { code: "us-east-005", label: "US East (Reston)" },
2137
+ { code: "eu-central-003", label: "EU Central (Amsterdam)" },
2138
+ { code: "ca-central-001", label: "Canada (Toronto)" }
2139
+ ],
2140
+ endpointPlaceholder: "https://s3.us-west-004.backblazeb2.com",
2141
+ schemes: []
2142
+ },
2143
+ digitalocean: {
2144
+ label: "DigitalOcean",
2145
+ description: "DigitalOcean Spaces",
2146
+ authMethod: "sigv4",
2147
+ needsRegion: true,
2148
+ needsEndpoint: false,
2149
+ defaultRegion: "nyc3",
2150
+ endpointTemplate: "https://{region}.digitaloceanspaces.com",
2151
+ regions: [
2152
+ { code: "nyc3", label: "New York 3" },
2153
+ { code: "sfo3", label: "San Francisco 3" },
2154
+ { code: "ams3", label: "Amsterdam 3" },
2155
+ { code: "sgp1", label: "Singapore 1" },
2156
+ { code: "lon1", label: "London 1" },
2157
+ { code: "fra1", label: "Frankfurt 1" },
2158
+ { code: "tor1", label: "Toronto 1" },
2159
+ { code: "blr1", label: "Bangalore 1" },
2160
+ { code: "syd1", label: "Sydney 1" }
2161
+ ],
2162
+ endpointPlaceholder: "https://nyc3.digitaloceanspaces.com",
2163
+ schemes: []
2164
+ },
2165
+ wasabi: {
2166
+ label: "Wasabi",
2167
+ description: "Wasabi Hot Cloud Storage",
2168
+ authMethod: "sigv4",
2169
+ needsRegion: true,
2170
+ needsEndpoint: false,
2171
+ defaultRegion: "us-east-1",
2172
+ endpointTemplate: "https://s3.{region}.wasabisys.com",
2173
+ regions: [
2174
+ { code: "us-east-1", label: "US East 1 (Virginia)" },
2175
+ { code: "us-east-2", label: "US East 2 (Virginia)" },
2176
+ { code: "us-central-1", label: "US Central 1 (Texas)" },
2177
+ { code: "us-west-1", label: "US West 1 (Oregon)" },
2178
+ { code: "eu-central-1", label: "EU Central 1 (Amsterdam)" },
2179
+ { code: "eu-central-2", label: "EU Central 2 (Frankfurt)" },
2180
+ { code: "eu-west-1", label: "EU West 1 (London)" },
2181
+ { code: "eu-west-2", label: "EU West 2 (Paris)" },
2182
+ { code: "ap-northeast-1", label: "AP Northeast 1 (Tokyo)" },
2183
+ { code: "ap-northeast-2", label: "AP Northeast 2 (Osaka)" },
2184
+ { code: "ap-southeast-1", label: "AP Southeast 1 (Singapore)" },
2185
+ { code: "ap-southeast-2", label: "AP Southeast 2 (Sydney)" },
2186
+ { code: "ca-central-1", label: "Canada (Toronto)" }
2187
+ ],
2188
+ endpointPlaceholder: "https://s3.us-east-1.wasabisys.com",
2189
+ schemes: []
2190
+ },
2191
+ contabo: {
2192
+ label: "Contabo",
2193
+ description: "Contabo Object Storage",
2194
+ authMethod: "sigv4",
2195
+ needsRegion: true,
2196
+ needsEndpoint: false,
2197
+ defaultRegion: "eu2",
2198
+ endpointTemplate: "https://{region}.contabostorage.com",
2199
+ regions: [
2200
+ { code: "eu2", label: "European Union" },
2201
+ { code: "usc1", label: "US Central" },
2202
+ { code: "sin1", label: "Singapore" }
2203
+ ],
2204
+ endpointPlaceholder: "https://eu2.contabostorage.com",
2205
+ schemes: []
2206
+ },
2207
+ hetzner: {
2208
+ label: "Hetzner",
2209
+ description: "Hetzner Object Storage",
2210
+ authMethod: "sigv4",
2211
+ needsRegion: true,
2212
+ needsEndpoint: false,
2213
+ defaultRegion: "fsn1",
2214
+ endpointTemplate: "https://{region}.your-objectstorage.com",
2215
+ regions: [
2216
+ { code: "fsn1", label: "Falkenstein, DE" },
2217
+ { code: "nbg1", label: "Nuremberg, DE" },
2218
+ { code: "hel1", label: "Helsinki, FI" }
2219
+ ],
2220
+ endpointPlaceholder: "https://fsn1.your-objectstorage.com",
2221
+ schemes: []
2222
+ },
2223
+ linode: {
2224
+ label: "Linode / Akamai",
2225
+ description: "Akamai / Linode Object Storage",
2226
+ authMethod: "sigv4",
2227
+ needsRegion: true,
2228
+ needsEndpoint: false,
2229
+ defaultRegion: "us-east-1",
2230
+ endpointTemplate: "https://{region}.linodeobjects.com",
2231
+ regions: [
2232
+ { code: "us-east-1", label: "Newark, NJ" },
2233
+ { code: "us-southeast-1", label: "Atlanta, GA" },
2234
+ { code: "us-ord-1", label: "Chicago, IL" },
2235
+ { code: "us-iad-1", label: "Washington, DC" },
2236
+ { code: "us-lax-1", label: "Los Angeles, CA" },
2237
+ { code: "us-sea-1", label: "Seattle, WA" },
2238
+ { code: "us-mia-1", label: "Miami, FL" },
2239
+ { code: "eu-central-1", label: "Frankfurt, DE" },
2240
+ { code: "nl-ams-1", label: "Amsterdam, NL" },
2241
+ { code: "gb-lon-1", label: "London, UK" },
2242
+ { code: "fr-par-1", label: "Paris, FR" },
2243
+ { code: "ap-south-1", label: "Singapore" },
2244
+ { code: "jp-osa-1", label: "Osaka, JP" },
2245
+ { code: "au-mel-1", label: "Melbourne, AU" },
2246
+ { code: "br-gru-1", label: "S\xE3o Paulo, BR" },
2247
+ { code: "in-maa-1", label: "Chennai, IN" },
2248
+ { code: "id-cgk-1", label: "Jakarta, ID" },
2249
+ { code: "it-mil-1", label: "Milan, IT" },
2250
+ { code: "se-sto-1", label: "Stockholm, SE" }
2251
+ ],
2252
+ endpointPlaceholder: "https://us-east-1.linodeobjects.com",
2253
+ schemes: []
2254
+ },
2255
+ ovhcloud: {
2256
+ label: "OVHcloud",
2257
+ description: "OVHcloud Object Storage",
2258
+ authMethod: "sigv4",
2259
+ needsRegion: true,
2260
+ needsEndpoint: false,
2261
+ defaultRegion: "gra",
2262
+ endpointTemplate: "https://s3.{region}.io.cloud.ovh.net",
2263
+ regions: [
2264
+ { code: "gra", label: "Gravelines, FR" },
2265
+ { code: "sbg", label: "Strasbourg, FR" },
2266
+ { code: "bhs", label: "Beauharnois, CA" },
2267
+ { code: "de", label: "Frankfurt, DE" },
2268
+ { code: "uk", label: "London, UK" },
2269
+ { code: "waw", label: "Warsaw, PL" }
2270
+ ],
2271
+ endpointPlaceholder: "https://s3.gra.io.cloud.ovh.net",
2272
+ schemes: []
2273
+ }
1998
2274
  };
2275
+
2276
+ // ../../src/lib/utils/storage-url.ts
2277
+ function buildSchemeMap() {
2278
+ const map = {};
2279
+ for (const [id, def] of Object.entries(PROVIDERS)) {
2280
+ for (const scheme of def.schemes) {
2281
+ const key = `${scheme}://`;
2282
+ map[key] = { provider: id, strip: key.length };
2283
+ }
2284
+ }
2285
+ map["swift://"] = { provider: "unknown", strip: 8 };
2286
+ return map;
2287
+ }
2288
+ var SCHEME_MAP = buildSchemeMap();
1999
2289
  function defaultResult(defaults) {
2000
2290
  return {
2001
2291
  bucket: "",
@@ -2100,7 +2390,7 @@ function parseStorageUrl(input, defaults = {}) {
2100
2390
  bucket: doVhost[1],
2101
2391
  region: doVhost[2],
2102
2392
  endpoint: `${url.protocol}//${doVhost[2]}.digitaloceanspaces.com`,
2103
- provider: "s3",
2393
+ provider: "digitalocean",
2104
2394
  prefix: pathParts.join("/")
2105
2395
  };
2106
2396
  }
@@ -2110,7 +2400,7 @@ function parseStorageUrl(input, defaults = {}) {
2110
2400
  bucket: pathParts[0],
2111
2401
  region: doPath[1],
2112
2402
  endpoint: `${url.protocol}//${url.host}`,
2113
- provider: "s3",
2403
+ provider: "digitalocean",
2114
2404
  prefix: pathParts.slice(1).join("/")
2115
2405
  };
2116
2406
  }
@@ -2120,7 +2410,7 @@ function parseStorageUrl(input, defaults = {}) {
2120
2410
  bucket: pathParts[0],
2121
2411
  region: wasabiMatch[1],
2122
2412
  endpoint: `${url.protocol}//${url.host}`,
2123
- provider: "s3",
2413
+ provider: "wasabi",
2124
2414
  prefix: pathParts.slice(1).join("/")
2125
2415
  };
2126
2416
  }
@@ -2130,7 +2420,7 @@ function parseStorageUrl(input, defaults = {}) {
2130
2420
  bucket: b2S3[1],
2131
2421
  region: b2S3[2],
2132
2422
  endpoint: `${url.protocol}//s3.${b2S3[2]}.backblazeb2.com`,
2133
- provider: "s3",
2423
+ provider: "b2",
2134
2424
  prefix: pathParts.join("/")
2135
2425
  };
2136
2426
  }
@@ -2140,7 +2430,7 @@ function parseStorageUrl(input, defaults = {}) {
2140
2430
  bucket: pathParts[1],
2141
2431
  region: defaults.region || "us-west-000",
2142
2432
  endpoint: `${url.protocol}//${url.host}`,
2143
- provider: "s3",
2433
+ provider: "b2",
2144
2434
  prefix: pathParts.slice(2).join("/")
2145
2435
  };
2146
2436
  }
@@ -2173,6 +2463,56 @@ function parseStorageUrl(input, defaults = {}) {
2173
2463
  prefix: pathParts.slice(1).join("/")
2174
2464
  };
2175
2465
  }
2466
+ const contaboMatch = host.match(/^([a-z0-9]+)\.contabostorage\.com$/);
2467
+ if (contaboMatch && pathParts.length > 0) {
2468
+ return {
2469
+ bucket: pathParts[0],
2470
+ region: contaboMatch[1],
2471
+ endpoint: `${url.protocol}//${url.host}`,
2472
+ provider: "contabo",
2473
+ prefix: pathParts.slice(1).join("/")
2474
+ };
2475
+ }
2476
+ const hetznerMatch = host.match(/^([a-z0-9]+)\.your-objectstorage\.com$/);
2477
+ if (hetznerMatch && pathParts.length > 0) {
2478
+ return {
2479
+ bucket: pathParts[0],
2480
+ region: hetznerMatch[1],
2481
+ endpoint: `${url.protocol}//${url.host}`,
2482
+ provider: "hetzner",
2483
+ prefix: pathParts.slice(1).join("/")
2484
+ };
2485
+ }
2486
+ const linodeVhost = host.match(/^(.+)\.([a-z0-9-]+)\.linodeobjects\.com$/);
2487
+ if (linodeVhost) {
2488
+ return {
2489
+ bucket: linodeVhost[1],
2490
+ region: linodeVhost[2],
2491
+ endpoint: `${url.protocol}//${linodeVhost[2]}.linodeobjects.com`,
2492
+ provider: "linode",
2493
+ prefix: pathParts.join("/")
2494
+ };
2495
+ }
2496
+ const linodePath = host.match(/^([a-z0-9-]+)\.linodeobjects\.com$/);
2497
+ if (linodePath && pathParts.length > 0) {
2498
+ return {
2499
+ bucket: pathParts[0],
2500
+ region: linodePath[1],
2501
+ endpoint: `${url.protocol}//${url.host}`,
2502
+ provider: "linode",
2503
+ prefix: pathParts.slice(1).join("/")
2504
+ };
2505
+ }
2506
+ const ovhMatch = host.match(/^s3\.([a-z0-9-]+)\.io\.cloud\.ovh\.(?:net|us)$/);
2507
+ if (ovhMatch && pathParts.length > 0) {
2508
+ return {
2509
+ bucket: pathParts[0],
2510
+ region: ovhMatch[1],
2511
+ endpoint: `${url.protocol}//${url.host}`,
2512
+ provider: "ovhcloud",
2513
+ prefix: pathParts.slice(1).join("/")
2514
+ };
2515
+ }
2176
2516
  const isMinioLike = host.includes("minio") || host === "localhost" || host === "127.0.0.1" || host.startsWith("192.168.") || host.startsWith("10.");
2177
2517
  if (isMinioLike && pathParts.length > 0) {
2178
2518
  return {
@@ -2509,8 +2849,17 @@ function isWKT(value) {
2509
2849
  return WKT_TYPES.some((t) => s.startsWith(t) || s.startsWith(`MULTI${t}`));
2510
2850
  }
2511
2851
 
2852
+ exports.COPY_FEEDBACK_MS = COPY_FEEDBACK_MS;
2853
+ exports.DEFAULT_TARGET_CRS = DEFAULT_TARGET_CRS;
2854
+ exports.DUCKDB_INIT_TIMEOUT_MS = DUCKDB_INIT_TIMEOUT_MS;
2855
+ exports.LAYER_HUE_MULTIPLIER = LAYER_HUE_MULTIPLIER;
2856
+ exports.MAX_QUERY_HISTORY_ENTRIES = MAX_QUERY_HISTORY_ENTRIES;
2512
2857
  exports.QueryCancelledError = QueryCancelledError;
2858
+ exports.SQL_PREVIEW_LENGTH = SQL_PREVIEW_LENGTH;
2859
+ exports.STORAGE_KEYS = STORAGE_KEYS;
2513
2860
  exports.UrlAdapter = UrlAdapter;
2861
+ exports.VIEWER_DIR_EXTENSIONS = VIEWER_DIR_EXTENSIONS;
2862
+ exports.WGS84_CODES = WGS84_CODES;
2514
2863
  exports.buildDuckDbSource = buildDuckDbSource;
2515
2864
  exports.buildGeoArrowTables = buildGeoArrowTables;
2516
2865
  exports.classifyType = classifyType;
@@ -2522,14 +2871,17 @@ exports.findGeoColumn = findGeoColumn;
2522
2871
  exports.findGeoColumnFromRows = findGeoColumnFromRows;
2523
2872
  exports.formatDate = formatDate;
2524
2873
  exports.formatFileSize = formatFileSize;
2874
+ exports.formatValue = formatValue;
2525
2875
  exports.generateHexDump = generateHexDump;
2526
2876
  exports.getDuckDbReadFn = getDuckDbReadFn;
2527
2877
  exports.getFileExtension = getFileExtension;
2528
2878
  exports.getFileTypeInfo = getFileTypeInfo;
2529
2879
  exports.getMimeType = getMimeType;
2530
2880
  exports.getViewerKind = getViewerKind;
2881
+ exports.handleLoadError = handleLoadError;
2531
2882
  exports.isCloudNativeFormat = isCloudNativeFormat;
2532
2883
  exports.isQueryable = isQueryable;
2884
+ exports.jsonReplacerBigInt = jsonReplacerBigInt;
2533
2885
  exports.looksLikeUrl = looksLikeUrl;
2534
2886
  exports.normalizeGeomType = normalizeGeomType;
2535
2887
  exports.parseStorageUrl = parseStorageUrl;