geoai 1.0.3 → 1.0.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.
package/CHANGELOG.md CHANGED
@@ -7,24 +7,36 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.0.5] - 2026-07-15
11
+
12
+ ### Added
13
+ - WMS map provider with OGC GetMap support (EPSG:3857 bbox, WMS 1.1.1 / 1.3.0)
14
+ - `examples/06-wms-quickstart` — NRW orthophotos (`nw_dop_rgb`), draw-to-detect, NRW geocoder
15
+ - Interactive TMS and WMS providers in `live-examples-nextjs` task demos
16
+ - WMS documentation (`wms.mdx`), map-providers table update, and 17 WMS tests (including pipeline inference)
17
+ - Project roadmap (`_docs4devs/ROADMAP.md`) for use-case guides and quantization pipeline backlog
18
+
10
19
  ### Changed
11
- - Removed OpenCV.js dependency across all AI models for improved performance and reduced bundle size
12
- - Migrated building-footprint-segmentation and landcover-classification to use d3-contours for contour processing
13
- - Replaced OpenCV implementations with native JavaScript solutions
20
+ - `live-examples-nextjs` pins `geoai` to local `build/` for WMS/TMS provider development
21
+
22
+ ## [1.0.4] - 2026-07-11
14
23
 
15
24
  ### Added
16
- - Tile stitching method to GeoRawImage for improved image handling capabilities
17
- - GeoJSON output option for landcover classification results
18
- - Result layer type selector for better visualization control
25
+ - TMS map provider with `{z}/{x}/{y}` URL templates and WebMercator/TMS tile schemes
26
+ - `examples/05-tms-quickstart` and TMS / serving-raster-tiles documentation
19
27
 
20
28
  ### Fixed
21
- - Mask generation post-processing improvements
22
- - Multipolygon issues in mask generation
23
- - Landcover classification mask to polygon conversion accuracy
29
+ - `dts-bundle-generator` config for ESM package type (`build:types` in CI)
30
+ - CI test stability: Geobase tile mocks, ONNX cache cleanup, and zero-shot test isolation
31
+ - Test gist uploads no longer log errors when GitHub credentials are missing or invalid
24
32
 
25
- ### Improved
26
- - Overall library performance with removal of heavy OpenCV dependency
27
- - Memory usage optimization in geospatial processing tasks
33
+ ### Changed
34
+ - Gist uploads in tests are opt-in via `GEOAI_SAVE_GISTS=1`
35
+
36
+ ## [1.0.3] - 2025-08-28
37
+
38
+ ### Fixed
39
+ - Landuse classification vectorisation bug fix
28
40
 
29
41
  ## [1.0.0-rc.1] - 2024-01-XX
30
42
 
@@ -125,12 +137,6 @@ To migrate from the old package:
125
137
 
126
138
  ## [1.0.1] - 2025-08-28
127
139
 
128
- ### Release Candidate
140
+ ### Changed
129
141
  - Removed OpenCV.js dependency across all AI models for improved performance and reduced bundle size.
130
142
 
131
-
132
- ## [1.0.3] - 2025-08-28
133
-
134
- ### Release Candidate
135
- - Landuse classification vectorisation bug fix
136
-
package/README.md CHANGED
@@ -40,12 +40,12 @@ You can also use GeoAI directly in the browser via CDN:
40
40
 
41
41
  #### Unpkg CDN
42
42
  ```html
43
- <script src="https://unpkg.com/geoai@1.0.3/geoai.js"></script>
43
+ <script src="https://unpkg.com/geoai@1.0.5/geoai.js"></script>
44
44
  ```
45
45
 
46
46
  #### jsDelivr CDN
47
47
  ```html
48
- <script src="https://cdn.jsdelivr.net/npm/geoai@1.0.3/geoai.min.js"></script>
48
+ <script src="https://cdn.jsdelivr.net/npm/geoai@1.0.5/geoai.min.js"></script>
49
49
  ```
50
50
 
51
51
  When using CDN, the library is available globally as `geoai`.
@@ -133,7 +133,7 @@ function MyComponent() {
133
133
  ## Features
134
134
 
135
135
  - **Multiple AI Tasks**: Object detection, segmentation, classification, and more
136
- - **Map Provider Support**: Geobase, Mapbox, ESRI, and Google Maps
136
+ - **Map Provider Support**: Geobase, Mapbox, ESRI, TMS, and Google Maps
137
137
  - **React Integration**: Hooks for easy React integration
138
138
  - **TypeScript Support**: Full TypeScript definitions
139
139
  - **Web Worker Support**: Run AI models in background threads
@@ -158,10 +158,84 @@ function MyComponent() {
158
158
 
159
159
  For more see the [supported tasks](https://docs.geobase.app/geoai/supported-tasks)
160
160
 
161
+ ## Map Providers
162
+
163
+ GeoAI.js supports multiple map tile providers:
164
+
165
+ ### TMS (Tile Map Service)
166
+ TMS is a tile-based map specification that uses a bottom-left origin coordinate system. Perfect for custom tile servers and OpenAerialMap.
167
+
168
+ ```javascript
169
+ // Option 1: Using URL template with placeholders (recommended)
170
+ const pipeline = await geoai.pipeline([{ task: "object-detection" }], {
171
+ provider: "tms",
172
+ baseUrl: "https://tile.example.com/tiles/{z}/{x}/{y}.png",
173
+ apiKey: "your-api-key", // optional
174
+ tileSize: 256, // optional, defaults to 256
175
+ attribution: "Custom TMS Provider", // optional
176
+ });
177
+
178
+ // Option 2: Using base URL (legacy format, still supported)
179
+ const pipeline = await geoai.pipeline([{ task: "object-detection" }], {
180
+ provider: "tms",
181
+ baseUrl: "https://tile.example.com/tiles",
182
+ extension: "png", // optional, defaults to "png"
183
+ apiKey: "your-api-key", // optional
184
+ tileSize: 256, // optional, defaults to 256
185
+ attribution: "Custom TMS Provider", // optional
186
+ });
187
+ ```
188
+
189
+ ### ESRI
190
+ ESRI World Imagery - no API key required.
191
+
192
+ ```javascript
193
+ const pipeline = await geoai.pipeline([{ task: "object-detection" }], {
194
+ provider: "esri",
195
+ });
196
+ ```
197
+
198
+ ### Mapbox
199
+ Requires a Mapbox API key.
200
+
201
+ ```javascript
202
+ const pipeline = await geoai.pipeline([{ task: "object-detection" }], {
203
+ provider: "mapbox",
204
+ apiKey: "your-mapbox-api-key",
205
+ style: "mapbox://styles/mapbox/satellite-v9",
206
+ });
207
+ ```
208
+
209
+ ### Geobase
210
+ Requires Geobase project credentials.
211
+
212
+ ```javascript
213
+ const pipeline = await geoai.pipeline([{ task: "object-detection" }], {
214
+ provider: "geobase",
215
+ projectRef: "your-project-ref",
216
+ apikey: "your-api-key",
217
+ cogImagery: "https://path-to-your-cog.tif",
218
+ });
219
+ ```
220
+
221
+ ## Talk
222
+
223
+ **[Bringing Earth Observation AI to the Browser with WebGPU](talks/lightning-talk-webgpu-geoai.md)** — lightning talk at Big Data from Space 2025 (Decision Labs).
224
+
225
+ <div align="center">
226
+ <a href="https://geobase-docs.s3.amazonaws.com/geobase-ai-assets/talks/lightning-talk-webgpu-geoai.pdf">
227
+ <img src="https://geobase-docs.s3.amazonaws.com/geobase-ai-assets/talks/geoaijs.png" alt="GeoAI.js talk preview" width="480">
228
+ </a>
229
+ </div>
230
+
231
+ - [Slides (PDF)](https://geobase-docs.s3.amazonaws.com/geobase-ai-assets/talks/lightning-talk-webgpu-geoai.pdf)
232
+ - [Slide source (Marp)](talks/lightning-talk-webgpu-geoai.md)
233
+
161
234
  ## Links
162
235
 
163
236
  - **Documentation**: [docs.geobase.app/geoai](https://docs.geobase.app/geoai) - Comprehensive documentation, examples, and API reference
164
237
  - **Live Examples**: [docs.geobase.app/geoai-live](https://docs.geobase.app/geoai-live) - Interactive examples and demos
238
+ - **Roadmap**: [_docs4devs/ROADMAP.md](_docs4devs/ROADMAP.md) - Planned docs, quantization pipeline, and related backlog
165
239
  - **Community**: [GitHub Discussions](https://github.com/decision-labs/geoai.js/discussions) - Ask questions, share ideas, and connect with other developers
166
240
  - **Code**: [GitHub Repository](https://github.com/decision-labs/geoai.js) - Source code and contributions
167
241
  - **Issues**: [GitHub Issues](https://github.com/decision-labs/geoai.js/issues) - Report bugs and request features
package/geoai.js CHANGED
@@ -390,7 +390,7 @@ const postProcessYoloOutput = (model_outputs, pixel_values, rawImage, id2label)
390
390
  return model_output;
391
391
  };
392
392
  const parametersChanged = (instance, model_id, providerParams, modelParams) => {
393
- var _a, _b, _c, _d, _e, _f, _g;
393
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
394
394
  if (instance.model_id !== model_id) {
395
395
  return true;
396
396
  }
@@ -415,6 +415,16 @@ const parametersChanged = (instance, model_id, providerParams, modelParams) => {
415
415
  return true;
416
416
  }
417
417
  break;
418
+ case "tms":
419
+ if (((_h = instance.providerParams) == null ? void 0 : _h.baseUrl) !== (providerParams == null ? void 0 : providerParams.baseUrl)) {
420
+ return true;
421
+ }
422
+ break;
423
+ case "wms":
424
+ if (((_i = instance.providerParams) == null ? void 0 : _i.baseUrl) !== (providerParams == null ? void 0 : providerParams.baseUrl) || ((_j = instance.providerParams) == null ? void 0 : _j.layers) !== (providerParams == null ? void 0 : providerParams.layers) || ((_k = instance.providerParams) == null ? void 0 : _k.version) !== (providerParams == null ? void 0 : providerParams.version) || ((_l = instance.providerParams) == null ? void 0 : _l.crs) !== (providerParams == null ? void 0 : providerParams.crs)) {
425
+ return true;
426
+ }
427
+ break;
418
428
  }
419
429
  if (modelParams) {
420
430
  const instanceModelParams = instance.modelParams || {};
@@ -984,6 +994,7 @@ var ErrorType = /* @__PURE__ */ ((ErrorType2) => {
984
994
  ErrorType2["MaximumTileCountExceeded"] = "MaximumTileCountExceeded";
985
995
  ErrorType2["UnknownTask"] = "UnknownTask";
986
996
  ErrorType2["MissingInputField"] = "MissingInputField";
997
+ ErrorType2["ImageLoadFailed"] = "ImageLoadFailed";
987
998
  return ErrorType2;
988
999
  })(ErrorType || {});
989
1000
  const ErrorCodes = {
@@ -998,7 +1009,11 @@ const ErrorCodes = {
998
1009
  [
999
1010
  "MissingInputField"
1000
1011
  /* MissingInputField */
1001
- ]: 1003
1012
+ ]: 1003,
1013
+ [
1014
+ "ImageLoadFailed"
1015
+ /* ImageLoadFailed */
1016
+ ]: 1004
1002
1017
  // Add more error codes here as needed
1003
1018
  };
1004
1019
  class GeobaseError extends Error {
@@ -1241,6 +1256,130 @@ class Esri extends MapSource {
1241
1256
  return `${instance.serviceUrl}/${instance.serviceName}/MapServer/tile/${z}/${y}/${x}`;
1242
1257
  }
1243
1258
  }
1259
+ class Tms extends MapSource {
1260
+ constructor(config) {
1261
+ super();
1262
+ __publicField(this, "baseUrl");
1263
+ __publicField(this, "extension");
1264
+ __publicField(this, "apiKey");
1265
+ __publicField(this, "attribution");
1266
+ __publicField(this, "tileSize");
1267
+ __publicField(this, "headers");
1268
+ __publicField(this, "scheme");
1269
+ this.baseUrl = config.baseUrl;
1270
+ this.extension = config.extension || "png";
1271
+ this.apiKey = config.apiKey;
1272
+ this.attribution = config.attribution || "TMS Provider";
1273
+ this.tileSize = config.tileSize || 256;
1274
+ this.headers = config.headers;
1275
+ this.scheme = config.scheme || "WebMercator";
1276
+ }
1277
+ getTileUrlFromTileCoords(tileCoords, instance) {
1278
+ const [x, originalY, z] = tileCoords;
1279
+ const y = instance.scheme === "TMS" ? Math.pow(2, z) - 1 - originalY : originalY;
1280
+ let url;
1281
+ if (instance.baseUrl.includes("{x}") || instance.baseUrl.includes("{y}") || instance.baseUrl.includes("{z}")) {
1282
+ url = instance.baseUrl.replaceAll("{z}", z.toString()).replaceAll("{x}", x.toString()).replaceAll("{y}", y.toString());
1283
+ } else {
1284
+ url = `${instance.baseUrl}/${z}/${x}/${y}.${instance.extension}`;
1285
+ }
1286
+ if (instance.apiKey) {
1287
+ url += `?apikey=${instance.apiKey}`;
1288
+ }
1289
+ return url;
1290
+ }
1291
+ }
1292
+ function formatWmsBbox(bbox2, crs, version) {
1293
+ const [minX, minY, maxX, maxY] = bbox2;
1294
+ if (version === "1.3.0" && crs === "EPSG:4326") {
1295
+ return `${minY},${minX},${maxY},${maxX}`;
1296
+ }
1297
+ return `${minX},${minY},${maxX},${maxY}`;
1298
+ }
1299
+ function getTileBbox(tileCoords, crs, tileSize) {
1300
+ const [x, y, z] = tileCoords;
1301
+ if (crs === "EPSG:3857") {
1302
+ const toMeters = pixelsToMeters;
1303
+ const min = toMeters([x * tileSize, y * tileSize, z], tileSize);
1304
+ const max = toMeters([(x + 1) * tileSize, (y + 1) * tileSize, z], tileSize);
1305
+ return [
1306
+ Math.min(min[0], max[0]),
1307
+ Math.min(min[1], max[1]),
1308
+ Math.max(min[0], max[0]),
1309
+ Math.max(min[1], max[1])
1310
+ ];
1311
+ }
1312
+ return tileToBBox(tileCoords);
1313
+ }
1314
+ function buildWmsGetMapUrl(config, tileCoords) {
1315
+ const version = config.version ?? "1.1.1";
1316
+ const crs = config.crs ?? "EPSG:3857";
1317
+ const tileSize = config.tileSize ?? 256;
1318
+ const bbox2 = getTileBbox(tileCoords, crs, tileSize);
1319
+ const bboxParam = formatWmsBbox(bbox2, crs, version);
1320
+ const params = {
1321
+ SERVICE: "WMS",
1322
+ REQUEST: "GetMap",
1323
+ VERSION: version,
1324
+ LAYERS: config.layers,
1325
+ STYLES: config.styles ?? "",
1326
+ FORMAT: config.format ?? "image/png",
1327
+ WIDTH: tileSize.toString(),
1328
+ HEIGHT: tileSize.toString(),
1329
+ BBOX: bboxParam,
1330
+ ...version === "1.3.0" ? { CRS: crs } : { SRS: crs },
1331
+ ...config.transparent ? { TRANSPARENT: "TRUE" } : {},
1332
+ ...config.extraParams ?? {}
1333
+ };
1334
+ const url = new URL(config.baseUrl);
1335
+ for (const [key, value] of Object.entries(params)) {
1336
+ url.searchParams.set(key, value);
1337
+ }
1338
+ return url.toString();
1339
+ }
1340
+ class Wms extends MapSource {
1341
+ constructor(config) {
1342
+ super();
1343
+ __publicField(this, "baseUrl");
1344
+ __publicField(this, "layers");
1345
+ __publicField(this, "version");
1346
+ __publicField(this, "crs");
1347
+ __publicField(this, "format");
1348
+ __publicField(this, "styles");
1349
+ __publicField(this, "transparent");
1350
+ __publicField(this, "attribution");
1351
+ __publicField(this, "tileSize");
1352
+ __publicField(this, "headers");
1353
+ __publicField(this, "extraParams");
1354
+ this.baseUrl = config.baseUrl;
1355
+ this.layers = config.layers;
1356
+ this.version = config.version ?? "1.1.1";
1357
+ this.crs = config.crs ?? "EPSG:3857";
1358
+ this.format = config.format ?? "image/png";
1359
+ this.styles = config.styles ?? "";
1360
+ this.transparent = config.transparent ?? false;
1361
+ this.attribution = config.attribution ?? "WMS Provider";
1362
+ this.tileSize = config.tileSize ?? 256;
1363
+ this.headers = config.headers;
1364
+ this.extraParams = config.extraParams;
1365
+ }
1366
+ getTileUrlFromTileCoords(tileCoords, instance) {
1367
+ return buildWmsGetMapUrl(
1368
+ {
1369
+ baseUrl: instance.baseUrl,
1370
+ layers: instance.layers,
1371
+ version: instance.version,
1372
+ crs: instance.crs,
1373
+ format: instance.format,
1374
+ styles: instance.styles,
1375
+ transparent: instance.transparent,
1376
+ tileSize: instance.tileSize,
1377
+ extraParams: instance.extraParams
1378
+ },
1379
+ tileCoords
1380
+ );
1381
+ }
1382
+ }
1244
1383
  class BaseModel {
1245
1384
  constructor(model_id, providerParams, modelParams) {
1246
1385
  __publicField(this, "providerParams");
@@ -1284,6 +1423,32 @@ class BaseModel {
1284
1423
  attribution: this.providerParams.attribution
1285
1424
  });
1286
1425
  break;
1426
+ case "tms":
1427
+ this.dataProvider = new Tms({
1428
+ baseUrl: this.providerParams.baseUrl,
1429
+ extension: this.providerParams.extension,
1430
+ apiKey: this.providerParams.apiKey,
1431
+ attribution: this.providerParams.attribution,
1432
+ tileSize: this.providerParams.tileSize,
1433
+ headers: this.providerParams.headers,
1434
+ scheme: this.providerParams.scheme
1435
+ });
1436
+ break;
1437
+ case "wms":
1438
+ this.dataProvider = new Wms({
1439
+ baseUrl: this.providerParams.baseUrl,
1440
+ layers: this.providerParams.layers,
1441
+ version: this.providerParams.version,
1442
+ crs: this.providerParams.crs,
1443
+ format: this.providerParams.format,
1444
+ styles: this.providerParams.styles,
1445
+ transparent: this.providerParams.transparent,
1446
+ attribution: this.providerParams.attribution,
1447
+ tileSize: this.providerParams.tileSize,
1448
+ headers: this.providerParams.headers,
1449
+ extraParams: this.providerParams.extraParams
1450
+ });
1451
+ break;
1287
1452
  case "sentinel":
1288
1453
  throw new Error("Sentinel provider not implemented yet");
1289
1454
  default:
package/index.d.ts CHANGED
@@ -132,10 +132,76 @@ declare class Esri extends MapSource {
132
132
  number
133
133
  ], instance: Esri): string;
134
134
  }
135
+ export interface TmsConfig {
136
+ baseUrl: string;
137
+ extension?: string;
138
+ apiKey?: string;
139
+ attribution?: string;
140
+ tileSize?: number;
141
+ headers?: Record<string, string>;
142
+ /**
143
+ * Tile scheme to use.
144
+ * - 'WebMercator': Web Mercator/XYZ (top-left origin, Y increases downward) - default for most modern services including Cesium
145
+ * - 'TMS': TMS standard (bottom-left origin, Y increases upward) - traditional TMS
146
+ * @default 'WebMercator'
147
+ */
148
+ scheme?: "WebMercator" | "TMS";
149
+ }
150
+ declare class Tms extends MapSource {
151
+ baseUrl: string;
152
+ extension: string;
153
+ apiKey?: string;
154
+ attribution: string;
155
+ tileSize: number;
156
+ headers?: Record<string, string>;
157
+ scheme: "WebMercator" | "TMS";
158
+ constructor(config: TmsConfig);
159
+ protected getTileUrlFromTileCoords(tileCoords: [
160
+ number,
161
+ number,
162
+ number
163
+ ], instance: Tms): string;
164
+ }
165
+ export type WmsVersion = "1.1.1" | "1.3.0";
166
+ export type WmsCrs = "EPSG:3857" | "EPSG:4326";
167
+ export interface WmsGetMapConfig {
168
+ baseUrl: string;
169
+ layers: string;
170
+ version?: WmsVersion;
171
+ crs?: WmsCrs;
172
+ format?: string;
173
+ styles?: string;
174
+ transparent?: boolean;
175
+ tileSize?: number;
176
+ attribution?: string;
177
+ headers?: Record<string, string>;
178
+ extraParams?: Record<string, string>;
179
+ }
180
+ export interface WmsConfig extends WmsGetMapConfig {
181
+ }
182
+ declare class Wms extends MapSource {
183
+ baseUrl: string;
184
+ layers: string;
185
+ version: WmsVersion;
186
+ crs: WmsCrs;
187
+ format: string;
188
+ styles: string;
189
+ transparent: boolean;
190
+ attribution: string;
191
+ tileSize: number;
192
+ headers?: Record<string, string>;
193
+ extraParams?: Record<string, string>;
194
+ constructor(config: WmsConfig);
195
+ protected getTileUrlFromTileCoords(tileCoords: [
196
+ number,
197
+ number,
198
+ number
199
+ ], instance: Wms): string;
200
+ }
135
201
  declare abstract class BaseModel {
136
202
  protected static instance: BaseModel | null;
137
203
  protected providerParams: ProviderParams;
138
- protected dataProvider: Mapbox | Geobase | Esri | undefined;
204
+ protected dataProvider: Mapbox | Geobase | Esri | Tms | Wms | undefined;
139
205
  protected model_id: string;
140
206
  protected initialized: boolean;
141
207
  protected modelParams?: PretrainedModelOptions;
@@ -430,6 +496,30 @@ export type EsriParams = {
430
496
  tileSize?: number;
431
497
  attribution?: string;
432
498
  };
499
+ export type TmsParams = {
500
+ provider: "tms";
501
+ baseUrl: string;
502
+ extension?: string;
503
+ apiKey?: string;
504
+ attribution?: string;
505
+ tileSize?: number;
506
+ headers?: Record<string, string>;
507
+ scheme?: "WebMercator" | "TMS";
508
+ };
509
+ export type WmsParams = {
510
+ provider: "wms";
511
+ baseUrl: string;
512
+ layers: string;
513
+ version?: "1.1.1" | "1.3.0";
514
+ crs?: "EPSG:3857" | "EPSG:4326";
515
+ format?: string;
516
+ styles?: string;
517
+ transparent?: boolean;
518
+ attribution?: string;
519
+ tileSize?: number;
520
+ headers?: Record<string, string>;
521
+ extraParams?: Record<string, string>;
522
+ };
433
523
  export interface InferenceInputs {
434
524
  polygon: GeoJSON.Feature;
435
525
  classLabel?: string;
@@ -448,7 +538,7 @@ export interface InferenceParams {
448
538
  postProcessingParams?: PostProcessingParams;
449
539
  mapSourceParams?: MapSourceParams;
450
540
  }
451
- export type ProviderParams = MapboxParams | SentinelParams | GeobaseParams | EsriParams;
541
+ export type ProviderParams = MapboxParams | SentinelParams | GeobaseParams | EsriParams | TmsParams | WmsParams;
452
542
  export type HuggingFaceModelTask = "mask-generation" | "zero-shot-object-detection" | "zero-shot-image-classification" | "object-detection" | "oriented-object-detection" | "image-feature-extraction";
453
543
  export type GeobaseAiModelTask = "damage-assessment" | "vegetation-classification" | "land-cover-classification" | "land-use-classification" | "land-cover-change-detection" | "land-use-change-detection" | "solar-panel-detection" | "ship-detection" | "car-detection" | "wetland-segmentation" | "building-detection" | "oil-storage-tank-detection" | "building-footprint-segmentation";
454
544
  export type ModelInstance = MaskGeneration | ZeroShotObjectDetection | ObjectDetection | OrientedObjectDetection | LandCoverClassification | SolarPanelDetection | ShipDetection | CarDetection | WetLandSegmentation | BuildingDetection | OilStorageTankDetection | BuildingFootPrintSegmentation | ImageFeatureExtraction;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "geoai",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "description": "A JavaScript library for running Geo AI models in frontend applications",
5
5
  "keywords": [
6
6
  "geoai",
@@ -57,7 +57,7 @@
57
57
  "publish:build": "cd build && npm publish --access public --ignore-scripts",
58
58
  "publish:pkg": "pnpm prepublish:prep && pnpm publish:build",
59
59
  "build:core": "tsc && vite build",
60
- "build:types": "dts-bundle-generator --config ./dts-bundle-generator.config.ts",
60
+ "build:types": "dts-bundle-generator --config ./dts-bundle-generator.config.cjs",
61
61
  "build:package": "copyfiles ./package.json build",
62
62
  "build:examples": "pnpm build && cp -r ./build ./examples/codepen-geobase",
63
63
  "test": "vitest",