@loaders.gl/pmtiles 4.0.4 → 4.1.0-alpha.10

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/dist.dev.js CHANGED
@@ -907,7 +907,7 @@ var __exports__ = (() => {
907
907
  }
908
908
 
909
909
  // ../images/src/lib/utils/version.ts
910
- var VERSION = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
910
+ var VERSION = true ? "4.1.0-alpha.10" : "latest";
911
911
 
912
912
  // ../images/src/lib/category-api/image-type.ts
913
913
  var parseImageNode = globalThis.loaders?.parseImageNode;
@@ -2811,7 +2811,7 @@ var __exports__ = (() => {
2811
2811
  }
2812
2812
 
2813
2813
  // ../mvt/src/mvt-loader.ts
2814
- var VERSION2 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
2814
+ var VERSION2 = true ? "4.1.0-alpha.10" : "latest";
2815
2815
  var MVTWorkerLoader = {
2816
2816
  name: "Mapbox Vector Tile",
2817
2817
  id: "mvt",
@@ -3026,8 +3026,11 @@ var __exports__ = (() => {
3026
3026
  if (typeof attribute.count === "number") {
3027
3027
  field.uniqueValueCount = attribute.count;
3028
3028
  }
3029
- if (options.maxValues !== false && attribute.values) {
3030
- field.values = attribute.values?.slice(0, options.maxValues);
3029
+ if (attribute.values) {
3030
+ field.values = attribute.values;
3031
+ }
3032
+ if (field.values && typeof options.maxValues === "number") {
3033
+ field.values = field.values?.slice(0, options.maxValues);
3031
3034
  }
3032
3035
  return field;
3033
3036
  }
@@ -3041,7 +3044,7 @@ var __exports__ = (() => {
3041
3044
  }
3042
3045
 
3043
3046
  // ../mvt/src/tilejson-loader.ts
3044
- var VERSION3 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
3047
+ var VERSION3 = true ? "4.1.0-alpha.10" : "latest";
3045
3048
  var TileJSONLoader = {
3046
3049
  name: "TileJSON",
3047
3050
  id: "tilejson",
@@ -3053,7 +3056,7 @@ var __exports__ = (() => {
3053
3056
  text: true,
3054
3057
  options: {
3055
3058
  tilejson: {
3056
- maxValues: 10
3059
+ maxValues: void 0
3057
3060
  }
3058
3061
  },
3059
3062
  parse: async (arrayBuffer, options) => {
@@ -4612,12 +4615,12 @@ var __exports__ = (() => {
4612
4615
  var {
4613
4616
  TileType: TileType2
4614
4617
  } = dist_exports;
4615
- function parsePMTilesHeader(header, pmtilesMetadata, options) {
4618
+ function parsePMTilesHeader(header, pmtilesMetadata, options, loadOptions) {
4616
4619
  let tilejson = null;
4617
4620
  if (pmtilesMetadata) {
4618
4621
  try {
4619
4622
  const string = JSON.stringify(pmtilesMetadata);
4620
- tilejson = TileJSONLoader.parseTextSync?.(string) || null;
4623
+ tilejson = TileJSONLoader.parseTextSync?.(string, loadOptions) || null;
4621
4624
  } catch (error) {
4622
4625
  console.warn("PMTiles metadata could not be interpreted as TileJSON", error);
4623
4626
  }
@@ -4704,7 +4707,9 @@ var __exports__ = (() => {
4704
4707
  async getMetadata() {
4705
4708
  const pmtilesHeader = await this.pmtiles.getHeader();
4706
4709
  const pmtilesMetadata = await this.pmtiles.getMetadata();
4707
- const metadata = parsePMTilesHeader(pmtilesHeader, pmtilesMetadata);
4710
+ const metadata = parsePMTilesHeader(pmtilesHeader, pmtilesMetadata, {
4711
+ includeFormatHeader: false
4712
+ }, this.loadOptions);
4708
4713
  if (this.props.attributions) {
4709
4714
  metadata.attributions = [...this.props.attributions, ...metadata.attributions || []];
4710
4715
  }
package/dist/index.cjs CHANGED
@@ -44,13 +44,13 @@ var pmtiles2 = __toESM(require("pmtiles"), 1);
44
44
  var import_mvt = require("@loaders.gl/mvt");
45
45
  var pmtiles = __toESM(require("pmtiles"), 1);
46
46
  var { TileType } = pmtiles;
47
- function parsePMTilesHeader(header, pmtilesMetadata, options) {
47
+ function parsePMTilesHeader(header, pmtilesMetadata, options, loadOptions) {
48
48
  var _a, _b;
49
49
  let tilejson = null;
50
50
  if (pmtilesMetadata) {
51
51
  try {
52
52
  const string = JSON.stringify(pmtilesMetadata);
53
- tilejson = ((_b = (_a = import_mvt.TileJSONLoader).parseTextSync) == null ? void 0 : _b.call(_a, string)) || null;
53
+ tilejson = ((_b = (_a = import_mvt.TileJSONLoader).parseTextSync) == null ? void 0 : _b.call(_a, string, loadOptions)) || null;
54
54
  } catch (error) {
55
55
  console.warn("PMTiles metadata could not be interpreted as TileJSON", error);
56
56
  }
@@ -142,7 +142,12 @@ var PMTilesSource = class extends import_loader_utils.DataSource {
142
142
  async getMetadata() {
143
143
  const pmtilesHeader = await this.pmtiles.getHeader();
144
144
  const pmtilesMetadata = await this.pmtiles.getMetadata();
145
- const metadata = parsePMTilesHeader(pmtilesHeader, pmtilesMetadata);
145
+ const metadata = parsePMTilesHeader(
146
+ pmtilesHeader,
147
+ pmtilesMetadata,
148
+ { includeFormatHeader: false },
149
+ this.loadOptions
150
+ );
146
151
  if (this.props.attributions) {
147
152
  metadata.attributions = [...this.props.attributions, ...metadata.attributions || []];
148
153
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,YAAY,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AACzD,YAAY,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,YAAY,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AACzD,YAAY,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["PMTilesSource"],"sources":["../src/index.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nexport type {PMTilesMetadata} from './lib/parse-pmtiles';\nexport type {PMTilesSourceProps} from './pmtiles-source';\nexport {PMTilesSource} from './pmtiles-source';\n"],"mappings":"SAKQA,aAAa"}
1
+ {"version":3,"file":"index.js","names":["PMTilesSource"],"sources":["../src/index.ts"],"sourcesContent":["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nexport type {PMTilesMetadata} from './lib/parse-pmtiles';\nexport type {PMTilesSourceProps} from './pmtiles-source';\nexport {PMTilesSource} from './pmtiles-source';\n"],"mappings":"SAMQA,aAAa"}
@@ -1 +1 @@
1
- {"version":3,"file":"blob-source.d.ts","sourceRoot":"","sources":["../../src/lib/blob-source.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAEnC;;;;GAIG;AACH,qBAAa,UAAW,YAAW,OAAO,CAAC,MAAM;IAC/C,IAAI,EAAE,IAAI,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;gBAEA,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM;IAMnC,MAAM;IAKA,QAAQ,CACZ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;CAUlC"}
1
+ {"version":3,"file":"blob-source.d.ts","sourceRoot":"","sources":["../../src/lib/blob-source.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAEnC;;;;GAIG;AACH,qBAAa,UAAW,YAAW,OAAO,CAAC,MAAM;IAC/C,IAAI,EAAE,IAAI,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;gBAEA,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM;IAMnC,MAAM;IAKA,QAAQ,CACZ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;CAUlC"}
@@ -1 +1 @@
1
- {"version":3,"file":"blob-source.js","names":["BlobSource","constructor","blob","key","getKey","url","getBytes","offset","length","signal","slice","data","arrayBuffer"],"sources":["../../src/lib/blob-source.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport * as pmtiles from 'pmtiles';\n\n/**\n * A PMTiles library compatible source that reads from blobs\n * @deprecated TODO - reimplement as ReadableFileSource\n * Use loaders.gl HTTP range requests instead\n */\nexport class BlobSource implements pmtiles.Source {\n blob: Blob;\n key: string;\n\n constructor(blob: Blob, key: string) {\n this.blob = blob;\n this.key = key;\n }\n\n // TODO - how is this used?\n getKey() {\n // @ts-expect-error url is only defined on File subclass\n return this.blob.url || '';\n }\n\n async getBytes(\n offset: number,\n length: number,\n signal?: AbortSignal\n ): Promise<pmtiles.RangeResponse> {\n const slice = this.blob.slice(offset, offset + length);\n const data = await slice.arrayBuffer();\n return {\n data\n // etag: response.headers.get('ETag') || undefined,\n // cacheControl: response.headers.get('Cache-Control') || undefined,\n // expires: response.headers.get('Expires') || undefined\n };\n }\n}\n"],"mappings":"AAUA,OAAO,MAAMA,UAAU,CAA2B;EAIhDC,WAAWA,CAACC,IAAU,EAAEC,GAAW,EAAE;IAAA,KAHrCD,IAAI;IAAA,KACJC,GAAG;IAGD,IAAI,CAACD,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,GAAG,GAAGA,GAAG;EAChB;EAGAC,MAAMA,CAAA,EAAG;IAEP,OAAO,IAAI,CAACF,IAAI,CAACG,GAAG,IAAI,EAAE;EAC5B;EAEA,MAAMC,QAAQA,CACZC,MAAc,EACdC,MAAc,EACdC,MAAoB,EACY;IAChC,MAAMC,KAAK,GAAG,IAAI,CAACR,IAAI,CAACQ,KAAK,CAACH,MAAM,EAAEA,MAAM,GAAGC,MAAM,CAAC;IACtD,MAAMG,IAAI,GAAG,MAAMD,KAAK,CAACE,WAAW,CAAC,CAAC;IACtC,OAAO;MACLD;IAIF,CAAC;EACH;AACF"}
1
+ {"version":3,"file":"blob-source.js","names":["BlobSource","constructor","blob","key","getKey","url","getBytes","offset","length","signal","slice","data","arrayBuffer"],"sources":["../../src/lib/blob-source.ts"],"sourcesContent":["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport * as pmtiles from 'pmtiles';\n\n/**\n * A PMTiles library compatible source that reads from blobs\n * @deprecated TODO - reimplement as ReadableFileSource\n * Use loaders.gl HTTP range requests instead\n */\nexport class BlobSource implements pmtiles.Source {\n blob: Blob;\n key: string;\n\n constructor(blob: Blob, key: string) {\n this.blob = blob;\n this.key = key;\n }\n\n // TODO - how is this used?\n getKey() {\n // @ts-expect-error url is only defined on File subclass\n return this.blob.url || '';\n }\n\n async getBytes(\n offset: number,\n length: number,\n signal?: AbortSignal\n ): Promise<pmtiles.RangeResponse> {\n const slice = this.blob.slice(offset, offset + length);\n const data = await slice.arrayBuffer();\n return {\n data\n // etag: response.headers.get('ETag') || undefined,\n // cacheControl: response.headers.get('Cache-Control') || undefined,\n // expires: response.headers.get('Expires') || undefined\n };\n }\n}\n"],"mappings":"AAWA,OAAO,MAAMA,UAAU,CAA2B;EAIhDC,WAAWA,CAACC,IAAU,EAAEC,GAAW,EAAE;IAAA,KAHrCD,IAAI;IAAA,KACJC,GAAG;IAGD,IAAI,CAACD,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,GAAG,GAAGA,GAAG;EAChB;EAGAC,MAAMA,CAAA,EAAG;IAEP,OAAO,IAAI,CAACF,IAAI,CAACG,GAAG,IAAI,EAAE;EAC5B;EAEA,MAAMC,QAAQA,CACZC,MAAc,EACdC,MAAc,EACdC,MAAoB,EACY;IAChC,MAAMC,KAAK,GAAG,IAAI,CAACR,IAAI,CAACQ,KAAK,CAACH,MAAM,EAAEA,MAAM,GAAGC,MAAM,CAAC;IACtD,MAAMG,IAAI,GAAG,MAAMD,KAAK,CAACE,WAAW,CAAC,CAAC;IACtC,OAAO;MACLD;IAIF,CAAC;EACH;AACF"}
@@ -1,3 +1,4 @@
1
+ import { LoaderOptions } from '@loaders.gl/loader-utils';
1
2
  import type { TileJSON } from '@loaders.gl/mvt';
2
3
  import * as pmtiles from 'pmtiles';
3
4
  /** Metadata describing a PMTiles file */
@@ -35,9 +36,10 @@ export type PMTilesMetadata = {
35
36
  * @param header
36
37
  * @param tilejsonMetadata
37
38
  * @param options
39
+ * @param loadOptions
38
40
  * @returns
39
41
  */
40
42
  export declare function parsePMTilesHeader(header: pmtiles.Header, pmtilesMetadata: Record<string, unknown> | null, options?: {
41
43
  includeFormatHeader?: boolean;
42
- }): PMTilesMetadata;
44
+ }, loadOptions?: LoaderOptions): PMTilesMetadata;
43
45
  //# sourceMappingURL=parse-pmtiles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse-pmtiles.d.ts","sourceRoot":"","sources":["../../src/lib/parse-pmtiles.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,iBAAiB,CAAC;AAG9C,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAGnC,yCAAyC;AACzC,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,SAAS,CAAC;IAClB,sDAAsD;IACtD,aAAa,EAAE,MAAM,CAAC;IAEtB,4FAA4F;IAC5F,YAAY,EACR,oCAAoC,GACpC,WAAW,GACX,YAAY,GACZ,YAAY,GACZ,YAAY,GACZ,0BAA0B,CAAC;IAE/B,sEAAsE;IACtE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAExB,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACxE,uCAAuC;IACvC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzB,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,qDAAqD;IACrD,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB,iDAAiD;IACjD,YAAY,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC;IAC9B,2GAA2G;IAC3G,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1C,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,OAAO,CAAC,MAAM,EACtB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EAC/C,OAAO,CAAC,EAAE;IAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAAC,GACxC,eAAe,CAqDjB"}
1
+ {"version":3,"file":"parse-pmtiles.d.ts","sourceRoot":"","sources":["../../src/lib/parse-pmtiles.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,iBAAiB,CAAC;AAG9C,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAGnC,yCAAyC;AACzC,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,SAAS,CAAC;IAClB,sDAAsD;IACtD,aAAa,EAAE,MAAM,CAAC;IAEtB,4FAA4F;IAC5F,YAAY,EACR,oCAAoC,GACpC,WAAW,GACX,YAAY,GACZ,YAAY,GACZ,YAAY,GACZ,0BAA0B,CAAC;IAE/B,sEAAsE;IACtE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAExB,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACxE,uCAAuC;IACvC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzB,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,qDAAqD;IACrD,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB,iDAAiD;IACjD,YAAY,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC;IAC9B,2GAA2G;IAC3G,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1C,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,OAAO,CAAC,MAAM,EACtB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EAC/C,OAAO,CAAC,EAAE;IAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAAC,EACzC,WAAW,CAAC,EAAE,aAAa,GAC1B,eAAe,CAqDjB"}
@@ -3,14 +3,14 @@ import * as pmtiles from 'pmtiles';
3
3
  const {
4
4
  TileType
5
5
  } = pmtiles;
6
- export function parsePMTilesHeader(header, pmtilesMetadata, options) {
6
+ export function parsePMTilesHeader(header, pmtilesMetadata, options, loadOptions) {
7
7
  var _tilejson, _tilejson2;
8
8
  let tilejson = null;
9
9
  if (pmtilesMetadata) {
10
10
  try {
11
11
  var _TileJSONLoader$parse;
12
12
  const string = JSON.stringify(pmtilesMetadata);
13
- tilejson = ((_TileJSONLoader$parse = TileJSONLoader.parseTextSync) === null || _TileJSONLoader$parse === void 0 ? void 0 : _TileJSONLoader$parse.call(TileJSONLoader, string)) || null;
13
+ tilejson = ((_TileJSONLoader$parse = TileJSONLoader.parseTextSync) === null || _TileJSONLoader$parse === void 0 ? void 0 : _TileJSONLoader$parse.call(TileJSONLoader, string, loadOptions)) || null;
14
14
  } catch (error) {
15
15
  console.warn('PMTiles metadata could not be interpreted as TileJSON', error);
16
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"parse-pmtiles.js","names":["TileJSONLoader","pmtiles","TileType","parsePMTilesHeader","header","pmtilesMetadata","options","_tilejson","_tilejson2","tilejson","_TileJSONLoader$parse","string","JSON","stringify","parseTextSync","call","error","console","warn","partialMetadata","name","htmlAttribution","attributions","metadata","format","formatVersion","specVersion","tileMIMEType","decodeTileType","tileType","minZoom","maxZoom","boundingBox","minLon","minLat","maxLon","maxLat","center","centerLon","centerLat","centerZoom","etag","includeFormatHeader","formatHeader","formatMetadata","Mvt","Png","Jpeg","Webp","Avif"],"sources":["../../src/lib/parse-pmtiles.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport type {TileJSON} from '@loaders.gl/mvt';\nimport {TileJSONLoader} from '@loaders.gl/mvt';\n// import {Source, PMTiles, Header, TileType} from 'pmtiles';\nimport * as pmtiles from 'pmtiles';\nconst {TileType} = pmtiles;\n\n/** Metadata describing a PMTiles file */\nexport type PMTilesMetadata = {\n format: 'pmtiles';\n /** Version of pm tiles format used by this tileset */\n formatVersion: number;\n\n /** MIME type for tile contents. Unknown tile types will return 'application/octet-stream */\n tileMIMEType:\n | 'application/vnd.mapbox-vector-tile'\n | 'image/png'\n | 'image/jpeg'\n | 'image/webp'\n | 'image/avif'\n | 'application/octet-stream';\n\n /** Name of the tileset (extracted from JSON metadata if available) */\n name?: string;\n /** Attribution string (extracted from JSON metadata if available) */\n attributions?: string[];\n\n /** Minimal zoom level of tiles in this tileset */\n minZoom: number;\n /** Maximal zoom level of tiles in this tileset */\n maxZoom: number;\n /** Bounding box of tiles in this tileset `[[w, s], [e, n]]` */\n boundingBox: [min: [x: number, y: number], max: [x: number, y: number]];\n /** Center long, lat of this tileset */\n center: [number, number];\n /** Center zoom level of this tileset */\n centerZoom: number;\n /** Cache tag */\n etag?: string;\n\n /** Parsed TileJSON/tilestats metadata, if present */\n tilejson?: TileJSON;\n\n /** @deprecated PMTiles format specific header */\n formatHeader?: pmtiles.Header;\n /** @deprecated Unparsed metadata (Assumption metadata generated by e.g. tippecanoe, typically TileJSON) */\n formatMetadata?: Record<string, unknown>;\n};\n\n/**\n * Parse PMTiles metdata from a PMTiles file\n * @param header\n * @param tilejsonMetadata\n * @param options\n * @returns\n */\nexport function parsePMTilesHeader(\n header: pmtiles.Header,\n pmtilesMetadata: Record<string, unknown> | null,\n options?: {includeFormatHeader?: boolean}\n): PMTilesMetadata {\n // Ironically, to use the TileJSON loader we need to stringify the metadata again.\n // This is the price of integrating with the existing pmtiles library.\n // TODO - provide a non-standard TileJSONLoader parsers that accepts a JSON object?\n let tilejson: TileJSON | null = null;\n if (pmtilesMetadata) {\n try {\n const string = JSON.stringify(pmtilesMetadata);\n tilejson = TileJSONLoader.parseTextSync?.(string) || null;\n } catch (error) {\n // eslint-disable-next-line no-console\n console.warn('PMTiles metadata could not be interpreted as TileJSON', error);\n }\n }\n\n const partialMetadata: Partial<PMTilesMetadata> = {};\n\n if (typeof tilejson?.name === 'string') {\n partialMetadata.name = tilejson.name;\n }\n\n if (typeof tilejson?.htmlAttribution === 'string') {\n partialMetadata.attributions = [tilejson.htmlAttribution];\n }\n\n const metadata: PMTilesMetadata = {\n ...partialMetadata,\n format: 'pmtiles',\n formatVersion: header.specVersion,\n attributions: [],\n tileMIMEType: decodeTileType(header.tileType),\n minZoom: header.minZoom,\n maxZoom: header.maxZoom,\n boundingBox: [\n [header.minLon, header.minLat],\n [header.maxLon, header.maxLat]\n ],\n center: [header.centerLon, header.centerLat],\n centerZoom: header.centerZoom,\n etag: header.etag\n };\n\n if (tilejson) {\n metadata.tilejson = tilejson;\n }\n\n // Application can optionally include the raw header and metadata.\n if (options?.includeFormatHeader) {\n metadata.formatHeader = header;\n metadata.formatMetadata = metadata;\n }\n\n return metadata;\n}\n\n/** Extract a MIME type for tiles from vector tile header */\nfunction decodeTileType(\n tileType: pmtiles.TileType\n):\n | 'application/vnd.mapbox-vector-tile'\n | 'image/png'\n | 'image/jpeg'\n | 'image/webp'\n | 'image/avif'\n | 'application/octet-stream' {\n switch (tileType) {\n case TileType.Mvt:\n return 'application/vnd.mapbox-vector-tile';\n case TileType.Png:\n return 'image/png';\n case TileType.Jpeg:\n return 'image/jpeg';\n case TileType.Webp:\n return 'image/webp';\n case TileType.Avif:\n return 'image/avif';\n default:\n return 'application/octet-stream';\n }\n}\n"],"mappings":"AAIA,SAAQA,cAAc,QAAO,iBAAiB;AAE9C,OAAO,KAAKC,OAAO,MAAM,SAAS;AAClC,MAAM;EAACC;AAAQ,CAAC,GAAGD,OAAO;AAmD1B,OAAO,SAASE,kBAAkBA,CAChCC,MAAsB,EACtBC,eAA+C,EAC/CC,OAAyC,EACxB;EAAA,IAAAC,SAAA,EAAAC,UAAA;EAIjB,IAAIC,QAAyB,GAAG,IAAI;EACpC,IAAIJ,eAAe,EAAE;IACnB,IAAI;MAAA,IAAAK,qBAAA;MACF,MAAMC,MAAM,GAAGC,IAAI,CAACC,SAAS,CAACR,eAAe,CAAC;MAC9CI,QAAQ,GAAG,EAAAC,qBAAA,GAAAV,cAAc,CAACc,aAAa,cAAAJ,qBAAA,uBAA5BA,qBAAA,CAAAK,IAAA,CAAAf,cAAc,EAAiBW,MAAM,CAAC,KAAI,IAAI;IAC3D,CAAC,CAAC,OAAOK,KAAK,EAAE;MAEdC,OAAO,CAACC,IAAI,CAAC,uDAAuD,EAAEF,KAAK,CAAC;IAC9E;EACF;EAEA,MAAMG,eAAyC,GAAG,CAAC,CAAC;EAEpD,IAAI,SAAAZ,SAAA,GAAOE,QAAQ,cAAAF,SAAA,uBAARA,SAAA,CAAUa,IAAI,MAAK,QAAQ,EAAE;IACtCD,eAAe,CAACC,IAAI,GAAGX,QAAQ,CAACW,IAAI;EACtC;EAEA,IAAI,SAAAZ,UAAA,GAAOC,QAAQ,cAAAD,UAAA,uBAARA,UAAA,CAAUa,eAAe,MAAK,QAAQ,EAAE;IACjDF,eAAe,CAACG,YAAY,GAAG,CAACb,QAAQ,CAACY,eAAe,CAAC;EAC3D;EAEA,MAAME,QAAyB,GAAG;IAChC,GAAGJ,eAAe;IAClBK,MAAM,EAAE,SAAS;IACjBC,aAAa,EAAErB,MAAM,CAACsB,WAAW;IACjCJ,YAAY,EAAE,EAAE;IAChBK,YAAY,EAAEC,cAAc,CAACxB,MAAM,CAACyB,QAAQ,CAAC;IAC7CC,OAAO,EAAE1B,MAAM,CAAC0B,OAAO;IACvBC,OAAO,EAAE3B,MAAM,CAAC2B,OAAO;IACvBC,WAAW,EAAE,CACX,CAAC5B,MAAM,CAAC6B,MAAM,EAAE7B,MAAM,CAAC8B,MAAM,CAAC,EAC9B,CAAC9B,MAAM,CAAC+B,MAAM,EAAE/B,MAAM,CAACgC,MAAM,CAAC,CAC/B;IACDC,MAAM,EAAE,CAACjC,MAAM,CAACkC,SAAS,EAAElC,MAAM,CAACmC,SAAS,CAAC;IAC5CC,UAAU,EAAEpC,MAAM,CAACoC,UAAU;IAC7BC,IAAI,EAAErC,MAAM,CAACqC;EACf,CAAC;EAED,IAAIhC,QAAQ,EAAE;IACZc,QAAQ,CAACd,QAAQ,GAAGA,QAAQ;EAC9B;EAGA,IAAIH,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEoC,mBAAmB,EAAE;IAChCnB,QAAQ,CAACoB,YAAY,GAAGvC,MAAM;IAC9BmB,QAAQ,CAACqB,cAAc,GAAGrB,QAAQ;EACpC;EAEA,OAAOA,QAAQ;AACjB;AAGA,SAASK,cAAcA,CACrBC,QAA0B,EAOG;EAC7B,QAAQA,QAAQ;IACd,KAAK3B,QAAQ,CAAC2C,GAAG;MACf,OAAO,oCAAoC;IAC7C,KAAK3C,QAAQ,CAAC4C,GAAG;MACf,OAAO,WAAW;IACpB,KAAK5C,QAAQ,CAAC6C,IAAI;MAChB,OAAO,YAAY;IACrB,KAAK7C,QAAQ,CAAC8C,IAAI;MAChB,OAAO,YAAY;IACrB,KAAK9C,QAAQ,CAAC+C,IAAI;MAChB,OAAO,YAAY;IACrB;MACE,OAAO,0BAA0B;EACrC;AACF"}
1
+ {"version":3,"file":"parse-pmtiles.js","names":["TileJSONLoader","pmtiles","TileType","parsePMTilesHeader","header","pmtilesMetadata","options","loadOptions","_tilejson","_tilejson2","tilejson","_TileJSONLoader$parse","string","JSON","stringify","parseTextSync","call","error","console","warn","partialMetadata","name","htmlAttribution","attributions","metadata","format","formatVersion","specVersion","tileMIMEType","decodeTileType","tileType","minZoom","maxZoom","boundingBox","minLon","minLat","maxLon","maxLat","center","centerLon","centerLat","centerZoom","etag","includeFormatHeader","formatHeader","formatMetadata","Mvt","Png","Jpeg","Webp","Avif"],"sources":["../../src/lib/parse-pmtiles.ts"],"sourcesContent":["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {LoaderOptions} from '@loaders.gl/loader-utils';\nimport type {TileJSON} from '@loaders.gl/mvt';\nimport {TileJSONLoader} from '@loaders.gl/mvt';\n// import {Source, PMTiles, Header, TileType} from 'pmtiles';\nimport * as pmtiles from 'pmtiles';\nconst {TileType} = pmtiles;\n\n/** Metadata describing a PMTiles file */\nexport type PMTilesMetadata = {\n format: 'pmtiles';\n /** Version of pm tiles format used by this tileset */\n formatVersion: number;\n\n /** MIME type for tile contents. Unknown tile types will return 'application/octet-stream */\n tileMIMEType:\n | 'application/vnd.mapbox-vector-tile'\n | 'image/png'\n | 'image/jpeg'\n | 'image/webp'\n | 'image/avif'\n | 'application/octet-stream';\n\n /** Name of the tileset (extracted from JSON metadata if available) */\n name?: string;\n /** Attribution string (extracted from JSON metadata if available) */\n attributions?: string[];\n\n /** Minimal zoom level of tiles in this tileset */\n minZoom: number;\n /** Maximal zoom level of tiles in this tileset */\n maxZoom: number;\n /** Bounding box of tiles in this tileset `[[w, s], [e, n]]` */\n boundingBox: [min: [x: number, y: number], max: [x: number, y: number]];\n /** Center long, lat of this tileset */\n center: [number, number];\n /** Center zoom level of this tileset */\n centerZoom: number;\n /** Cache tag */\n etag?: string;\n\n /** Parsed TileJSON/tilestats metadata, if present */\n tilejson?: TileJSON;\n\n /** @deprecated PMTiles format specific header */\n formatHeader?: pmtiles.Header;\n /** @deprecated Unparsed metadata (Assumption metadata generated by e.g. tippecanoe, typically TileJSON) */\n formatMetadata?: Record<string, unknown>;\n};\n\n/**\n * Parse PMTiles metdata from a PMTiles file\n * @param header\n * @param tilejsonMetadata\n * @param options\n * @param loadOptions\n * @returns\n */\nexport function parsePMTilesHeader(\n header: pmtiles.Header,\n pmtilesMetadata: Record<string, unknown> | null,\n options?: {includeFormatHeader?: boolean},\n loadOptions?: LoaderOptions\n): PMTilesMetadata {\n // Ironically, to use the TileJSON loader we need to stringify the metadata again.\n // This is the price of integrating with the existing pmtiles library.\n // TODO - provide a non-standard TileJSONLoader parsers that accepts a JSON object?\n let tilejson: TileJSON | null = null;\n if (pmtilesMetadata) {\n try {\n const string = JSON.stringify(pmtilesMetadata);\n tilejson = TileJSONLoader.parseTextSync?.(string, loadOptions) || null;\n } catch (error) {\n // eslint-disable-next-line no-console\n console.warn('PMTiles metadata could not be interpreted as TileJSON', error);\n }\n }\n\n const partialMetadata: Partial<PMTilesMetadata> = {};\n\n if (typeof tilejson?.name === 'string') {\n partialMetadata.name = tilejson.name;\n }\n\n if (typeof tilejson?.htmlAttribution === 'string') {\n partialMetadata.attributions = [tilejson.htmlAttribution];\n }\n\n const metadata: PMTilesMetadata = {\n ...partialMetadata,\n format: 'pmtiles',\n formatVersion: header.specVersion,\n attributions: [],\n tileMIMEType: decodeTileType(header.tileType),\n minZoom: header.minZoom,\n maxZoom: header.maxZoom,\n boundingBox: [\n [header.minLon, header.minLat],\n [header.maxLon, header.maxLat]\n ],\n center: [header.centerLon, header.centerLat],\n centerZoom: header.centerZoom,\n etag: header.etag\n };\n\n if (tilejson) {\n metadata.tilejson = tilejson;\n }\n\n // Application can optionally include the raw header and metadata.\n if (options?.includeFormatHeader) {\n metadata.formatHeader = header;\n metadata.formatMetadata = metadata;\n }\n\n return metadata;\n}\n\n/** Extract a MIME type for tiles from vector tile header */\nfunction decodeTileType(\n tileType: pmtiles.TileType\n):\n | 'application/vnd.mapbox-vector-tile'\n | 'image/png'\n | 'image/jpeg'\n | 'image/webp'\n | 'image/avif'\n | 'application/octet-stream' {\n switch (tileType) {\n case TileType.Mvt:\n return 'application/vnd.mapbox-vector-tile';\n case TileType.Png:\n return 'image/png';\n case TileType.Jpeg:\n return 'image/jpeg';\n case TileType.Webp:\n return 'image/webp';\n case TileType.Avif:\n return 'image/avif';\n default:\n return 'application/octet-stream';\n }\n}\n"],"mappings":"AAMA,SAAQA,cAAc,QAAO,iBAAiB;AAE9C,OAAO,KAAKC,OAAO,MAAM,SAAS;AAClC,MAAM;EAACC;AAAQ,CAAC,GAAGD,OAAO;AAoD1B,OAAO,SAASE,kBAAkBA,CAChCC,MAAsB,EACtBC,eAA+C,EAC/CC,OAAyC,EACzCC,WAA2B,EACV;EAAA,IAAAC,SAAA,EAAAC,UAAA;EAIjB,IAAIC,QAAyB,GAAG,IAAI;EACpC,IAAIL,eAAe,EAAE;IACnB,IAAI;MAAA,IAAAM,qBAAA;MACF,MAAMC,MAAM,GAAGC,IAAI,CAACC,SAAS,CAACT,eAAe,CAAC;MAC9CK,QAAQ,GAAG,EAAAC,qBAAA,GAAAX,cAAc,CAACe,aAAa,cAAAJ,qBAAA,uBAA5BA,qBAAA,CAAAK,IAAA,CAAAhB,cAAc,EAAiBY,MAAM,EAAEL,WAAW,CAAC,KAAI,IAAI;IACxE,CAAC,CAAC,OAAOU,KAAK,EAAE;MAEdC,OAAO,CAACC,IAAI,CAAC,uDAAuD,EAAEF,KAAK,CAAC;IAC9E;EACF;EAEA,MAAMG,eAAyC,GAAG,CAAC,CAAC;EAEpD,IAAI,SAAAZ,SAAA,GAAOE,QAAQ,cAAAF,SAAA,uBAARA,SAAA,CAAUa,IAAI,MAAK,QAAQ,EAAE;IACtCD,eAAe,CAACC,IAAI,GAAGX,QAAQ,CAACW,IAAI;EACtC;EAEA,IAAI,SAAAZ,UAAA,GAAOC,QAAQ,cAAAD,UAAA,uBAARA,UAAA,CAAUa,eAAe,MAAK,QAAQ,EAAE;IACjDF,eAAe,CAACG,YAAY,GAAG,CAACb,QAAQ,CAACY,eAAe,CAAC;EAC3D;EAEA,MAAME,QAAyB,GAAG;IAChC,GAAGJ,eAAe;IAClBK,MAAM,EAAE,SAAS;IACjBC,aAAa,EAAEtB,MAAM,CAACuB,WAAW;IACjCJ,YAAY,EAAE,EAAE;IAChBK,YAAY,EAAEC,cAAc,CAACzB,MAAM,CAAC0B,QAAQ,CAAC;IAC7CC,OAAO,EAAE3B,MAAM,CAAC2B,OAAO;IACvBC,OAAO,EAAE5B,MAAM,CAAC4B,OAAO;IACvBC,WAAW,EAAE,CACX,CAAC7B,MAAM,CAAC8B,MAAM,EAAE9B,MAAM,CAAC+B,MAAM,CAAC,EAC9B,CAAC/B,MAAM,CAACgC,MAAM,EAAEhC,MAAM,CAACiC,MAAM,CAAC,CAC/B;IACDC,MAAM,EAAE,CAAClC,MAAM,CAACmC,SAAS,EAAEnC,MAAM,CAACoC,SAAS,CAAC;IAC5CC,UAAU,EAAErC,MAAM,CAACqC,UAAU;IAC7BC,IAAI,EAAEtC,MAAM,CAACsC;EACf,CAAC;EAED,IAAIhC,QAAQ,EAAE;IACZc,QAAQ,CAACd,QAAQ,GAAGA,QAAQ;EAC9B;EAGA,IAAIJ,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEqC,mBAAmB,EAAE;IAChCnB,QAAQ,CAACoB,YAAY,GAAGxC,MAAM;IAC9BoB,QAAQ,CAACqB,cAAc,GAAGrB,QAAQ;EACpC;EAEA,OAAOA,QAAQ;AACjB;AAGA,SAASK,cAAcA,CACrBC,QAA0B,EAOG;EAC7B,QAAQA,QAAQ;IACd,KAAK5B,QAAQ,CAAC4C,GAAG;MACf,OAAO,oCAAoC;IAC7C,KAAK5C,QAAQ,CAAC6C,GAAG;MACf,OAAO,WAAW;IACpB,KAAK7C,QAAQ,CAAC8C,IAAI;MAChB,OAAO,YAAY;IACrB,KAAK9C,QAAQ,CAAC+C,IAAI;MAChB,OAAO,YAAY;IACrB,KAAK/C,QAAQ,CAACgD,IAAI;MAChB,OAAO,YAAY;IACrB;MACE,OAAO,0BAA0B;EACrC;AACF"}
@@ -2,6 +2,8 @@ import type { TileLoadParameters, GetTileParameters } from '@loaders.gl/loader-u
2
2
  import type { ImageType, DataSourceProps } from '@loaders.gl/loader-utils';
3
3
  import type { ImageTileSource, VectorTileSource } from '@loaders.gl/loader-utils';
4
4
  import { DataSource } from '@loaders.gl/loader-utils';
5
+ import { ImageLoaderOptions } from '@loaders.gl/images';
6
+ import { MVTLoaderOptions, TileJSONLoaderOptions } from '@loaders.gl/mvt';
5
7
  import * as pmtiles from 'pmtiles';
6
8
  import type { PMTilesMetadata } from './lib/parse-pmtiles';
7
9
  export type Service = {
@@ -22,6 +24,7 @@ export declare const PMTilesService: ServiceWithSource<PMTilesSource, PMTilesSou
22
24
  export type PMTilesSourceProps = DataSourceProps & {
23
25
  url: string | Blob;
24
26
  attributions?: string[];
27
+ loadOptions?: TileJSONLoaderOptions & MVTLoaderOptions & ImageLoaderOptions;
25
28
  };
26
29
  /**
27
30
  * A PMTiles data source
@@ -1 +1 @@
1
- {"version":3,"file":"pmtiles-source.d.ts","sourceRoot":"","sources":["../src/pmtiles-source.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,kBAAkB,EAAE,iBAAiB,EAAC,MAAM,0BAA0B,CAAC;AACpF,OAAO,KAAK,EAAC,SAAS,EAAE,eAAe,EAAC,MAAM,0BAA0B,CAAC;AACzE,OAAO,KAAK,EAAC,eAAe,EAAE,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAChF,OAAO,EAAC,UAAU,EAAc,MAAM,0BAA0B,CAAC;AAIjE,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAGnC,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AAMzD,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,OAAO,EAAE,YAAY,IAAI,OAAO,GAAG;IAC/D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,YAAY,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC;CAChD,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,iBAAiB,CAAC,aAAa,EAAE,kBAAkB,CAW/E,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,eAAe,GAAG;IACjD,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB,CAAC;AAEF;;;GAGG;AACH,qBAAa,aAAc,SAAQ,UAAW,YAAW,eAAe,EAAE,gBAAgB;IACxF,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,kBAAkB,CAAC;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC/B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;gBAEvB,KAAK,EAAE,kBAAkB;IAW/B,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC;IAevC,OAAO,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAcnE,WAAW,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAapE,YAAY,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAOtE,aAAa,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;CAc5E"}
1
+ {"version":3,"file":"pmtiles-source.d.ts","sourceRoot":"","sources":["../src/pmtiles-source.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,kBAAkB,EAAE,iBAAiB,EAAC,MAAM,0BAA0B,CAAC;AACpF,OAAO,KAAK,EAAC,SAAS,EAAE,eAAe,EAAC,MAAM,0BAA0B,CAAC;AACzE,OAAO,KAAK,EAAC,eAAe,EAAE,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAChF,OAAO,EAAC,UAAU,EAAc,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAc,kBAAkB,EAAC,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAY,gBAAgB,EAAE,qBAAqB,EAAC,MAAM,iBAAiB,CAAC;AAEnF,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAGnC,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AAMzD,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,OAAO,EAAE,YAAY,IAAI,OAAO,GAAG;IAC/D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,YAAY,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC;CAChD,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,iBAAiB,CAAC,aAAa,EAAE,kBAAkB,CAW/E,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,eAAe,GAAG;IACjD,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,qBAAqB,GAAG,gBAAgB,GAAG,kBAAkB,CAAC;CAC7E,CAAC;AAEF;;;GAGG;AACH,qBAAa,aAAc,SAAQ,UAAW,YAAW,eAAe,EAAE,gBAAgB;IACxF,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,kBAAkB,CAAC;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC/B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;gBAEvB,KAAK,EAAE,kBAAkB;IAW/B,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC;IAoBvC,OAAO,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAcnE,WAAW,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAapE,YAAY,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAOtE,aAAa,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;CAc5E"}
@@ -38,7 +38,9 @@ export class PMTilesSource extends DataSource {
38
38
  async getMetadata() {
39
39
  const pmtilesHeader = await this.pmtiles.getHeader();
40
40
  const pmtilesMetadata = await this.pmtiles.getMetadata();
41
- const metadata = parsePMTilesHeader(pmtilesHeader, pmtilesMetadata);
41
+ const metadata = parsePMTilesHeader(pmtilesHeader, pmtilesMetadata, {
42
+ includeFormatHeader: false
43
+ }, this.loadOptions);
42
44
  if (this.props.attributions) {
43
45
  metadata.attributions = [...this.props.attributions, ...(metadata.attributions || [])];
44
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pmtiles-source.js","names":["DataSource","resolvePath","ImageLoader","MVTLoader","pmtiles","PMTiles","parsePMTilesHeader","BlobSource","VERSION","PMTilesService","name","id","module","version","extensions","mimeTypes","options","createSource","props","PMTilesSource","constructor","data","mimeType","metadata","url","getTileData","bind","getMetadata","pmtilesHeader","getHeader","pmtilesMetadata","attributions","tileMIMEType","getTile","tileParams","x","y","zoom","z","rangeResponse","getZxy","arrayBuffer","index","getVectorTile","layers","getImageTile","parse","loadOptions","_this$loadOptions","shape","mvt","coordinates","tileIndex"],"sources":["../src/pmtiles-source.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport type {TileLoadParameters, GetTileParameters} from '@loaders.gl/loader-utils';\nimport type {ImageType, DataSourceProps} from '@loaders.gl/loader-utils';\nimport type {ImageTileSource, VectorTileSource} from '@loaders.gl/loader-utils';\nimport {DataSource, resolvePath} from '@loaders.gl/loader-utils';\nimport {ImageLoader} from '@loaders.gl/images';\nimport {MVTLoader, MVTLoaderOptions} from '@loaders.gl/mvt';\n\nimport * as pmtiles from 'pmtiles';\nconst {PMTiles} = pmtiles;\n\nimport type {PMTilesMetadata} from './lib/parse-pmtiles';\nimport {parsePMTilesHeader} from './lib/parse-pmtiles';\nimport {BlobSource} from './lib/blob-source';\n\nconst VERSION = '1.0.0';\n\nexport type Service = {\n name: string;\n id: string;\n module: string;\n version: string;\n extensions: string[];\n mimeTypes: string[];\n options: Record<string, unknown>;\n};\n\nexport type ServiceWithSource<SourceT, SourcePropsT> = Service & {\n _source?: SourceT;\n _sourceProps?: SourcePropsT;\n createSource: (props: SourcePropsT) => SourceT;\n};\n\nexport const PMTilesService: ServiceWithSource<PMTilesSource, PMTilesSourceProps> = {\n name: 'PMTiles',\n id: 'pmtiles',\n module: 'pmtiles',\n version: VERSION,\n extensions: ['pmtiles'],\n mimeTypes: ['application/octet-stream'],\n options: {\n pmtiles: {}\n },\n createSource: (props: PMTilesSourceProps) => new PMTilesSource(props)\n};\n\nexport type PMTilesSourceProps = DataSourceProps & {\n url: string | Blob;\n attributions?: string[];\n};\n\n/**\n * A PMTiles data source\n * @note Can be either a raster or vector tile source depending on the contents of the PMTiles file.\n */\nexport class PMTilesSource extends DataSource implements ImageTileSource, VectorTileSource {\n data: string | Blob;\n props: PMTilesSourceProps;\n mimeType: string | null = null;\n pmtiles: pmtiles.PMTiles;\n metadata: Promise<PMTilesMetadata>;\n\n constructor(props: PMTilesSourceProps) {\n super(props);\n this.props = props;\n const url =\n typeof props.url === 'string' ? resolvePath(props.url) : new BlobSource(props.url, 'pmtiles');\n this.data = props.url;\n this.pmtiles = new PMTiles(url);\n this.getTileData = this.getTileData.bind(this);\n this.metadata = this.getMetadata();\n }\n\n async getMetadata(): Promise<PMTilesMetadata> {\n const pmtilesHeader = await this.pmtiles.getHeader();\n const pmtilesMetadata = await this.pmtiles.getMetadata();\n const metadata: PMTilesMetadata = parsePMTilesHeader(pmtilesHeader, pmtilesMetadata);\n // Add additional attribution if necessary\n if (this.props.attributions) {\n metadata.attributions = [...this.props.attributions, ...(metadata.attributions || [])];\n }\n if (metadata?.tileMIMEType) {\n this.mimeType = metadata?.tileMIMEType;\n }\n // TODO - do we need to allow tileSize to be overridden? Some PMTiles examples seem to suggest it.\n return metadata;\n }\n\n async getTile(tileParams: GetTileParameters): Promise<ArrayBuffer | null> {\n const {x, y, zoom: z} = tileParams;\n const rangeResponse = await this.pmtiles.getZxy(z, x, y);\n const arrayBuffer = rangeResponse?.data;\n if (!arrayBuffer) {\n // console.error('No arrayBuffer', tileParams);\n return null;\n }\n return arrayBuffer;\n }\n\n // Tile Source interface implementation: deck.gl compatible API\n // TODO - currently only handles image tiles, not vector tiles\n\n async getTileData(tileParams: TileLoadParameters): Promise<unknown | null> {\n const {x, y, z} = tileParams.index;\n const metadata = await this.metadata;\n switch (metadata.tileMIMEType) {\n case 'application/vnd.mapbox-vector-tile':\n return await this.getVectorTile({x, y, zoom: z, layers: []});\n default:\n return await this.getImageTile({x, y, zoom: z, layers: []});\n }\n }\n\n // ImageTileSource interface implementation\n\n async getImageTile(tileParams: GetTileParameters): Promise<ImageType | null> {\n const arrayBuffer = await this.getTile(tileParams);\n return arrayBuffer ? await ImageLoader.parse(arrayBuffer, this.loadOptions) : null;\n }\n\n // VectorTileSource interface implementation\n\n async getVectorTile(tileParams: GetTileParameters): Promise<unknown | null> {\n const arrayBuffer = await this.getTile(tileParams);\n const loadOptions: MVTLoaderOptions = {\n shape: 'geojson-table',\n mvt: {\n coordinates: 'wgs84',\n tileIndex: {x: tileParams.x, y: tileParams.y, z: tileParams.zoom},\n ...(this.loadOptions as MVTLoaderOptions)?.mvt\n },\n ...this.loadOptions\n };\n\n return arrayBuffer ? await MVTLoader.parse(arrayBuffer, loadOptions) : null;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"pmtiles-source.js","names":["DataSource","resolvePath","ImageLoader","MVTLoader","pmtiles","PMTiles","parsePMTilesHeader","BlobSource","VERSION","PMTilesService","name","id","module","version","extensions","mimeTypes","options","createSource","props","PMTilesSource","constructor","data","mimeType","metadata","url","getTileData","bind","getMetadata","pmtilesHeader","getHeader","pmtilesMetadata","includeFormatHeader","loadOptions","attributions","tileMIMEType","getTile","tileParams","x","y","zoom","z","rangeResponse","getZxy","arrayBuffer","index","getVectorTile","layers","getImageTile","parse","_this$loadOptions","shape","mvt","coordinates","tileIndex"],"sources":["../src/pmtiles-source.ts"],"sourcesContent":["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {TileLoadParameters, GetTileParameters} from '@loaders.gl/loader-utils';\nimport type {ImageType, DataSourceProps} from '@loaders.gl/loader-utils';\nimport type {ImageTileSource, VectorTileSource} from '@loaders.gl/loader-utils';\nimport {DataSource, resolvePath} from '@loaders.gl/loader-utils';\nimport {ImageLoader, ImageLoaderOptions} from '@loaders.gl/images';\nimport {MVTLoader, MVTLoaderOptions, TileJSONLoaderOptions} from '@loaders.gl/mvt';\n\nimport * as pmtiles from 'pmtiles';\nconst {PMTiles} = pmtiles;\n\nimport type {PMTilesMetadata} from './lib/parse-pmtiles';\nimport {parsePMTilesHeader} from './lib/parse-pmtiles';\nimport {BlobSource} from './lib/blob-source';\n\nconst VERSION = '1.0.0';\n\nexport type Service = {\n name: string;\n id: string;\n module: string;\n version: string;\n extensions: string[];\n mimeTypes: string[];\n options: Record<string, unknown>;\n};\n\nexport type ServiceWithSource<SourceT, SourcePropsT> = Service & {\n _source?: SourceT;\n _sourceProps?: SourcePropsT;\n createSource: (props: SourcePropsT) => SourceT;\n};\n\nexport const PMTilesService: ServiceWithSource<PMTilesSource, PMTilesSourceProps> = {\n name: 'PMTiles',\n id: 'pmtiles',\n module: 'pmtiles',\n version: VERSION,\n extensions: ['pmtiles'],\n mimeTypes: ['application/octet-stream'],\n options: {\n pmtiles: {}\n },\n createSource: (props: PMTilesSourceProps) => new PMTilesSource(props)\n};\n\nexport type PMTilesSourceProps = DataSourceProps & {\n url: string | Blob;\n attributions?: string[];\n loadOptions?: TileJSONLoaderOptions & MVTLoaderOptions & ImageLoaderOptions;\n};\n\n/**\n * A PMTiles data source\n * @note Can be either a raster or vector tile source depending on the contents of the PMTiles file.\n */\nexport class PMTilesSource extends DataSource implements ImageTileSource, VectorTileSource {\n data: string | Blob;\n props: PMTilesSourceProps;\n mimeType: string | null = null;\n pmtiles: pmtiles.PMTiles;\n metadata: Promise<PMTilesMetadata>;\n\n constructor(props: PMTilesSourceProps) {\n super(props);\n this.props = props;\n const url =\n typeof props.url === 'string' ? resolvePath(props.url) : new BlobSource(props.url, 'pmtiles');\n this.data = props.url;\n this.pmtiles = new PMTiles(url);\n this.getTileData = this.getTileData.bind(this);\n this.metadata = this.getMetadata();\n }\n\n async getMetadata(): Promise<PMTilesMetadata> {\n const pmtilesHeader = await this.pmtiles.getHeader();\n const pmtilesMetadata = await this.pmtiles.getMetadata();\n const metadata: PMTilesMetadata = parsePMTilesHeader(\n pmtilesHeader,\n pmtilesMetadata,\n {includeFormatHeader: false},\n this.loadOptions\n );\n // Add additional attribution if necessary\n if (this.props.attributions) {\n metadata.attributions = [...this.props.attributions, ...(metadata.attributions || [])];\n }\n if (metadata?.tileMIMEType) {\n this.mimeType = metadata?.tileMIMEType;\n }\n // TODO - do we need to allow tileSize to be overridden? Some PMTiles examples seem to suggest it.\n return metadata;\n }\n\n async getTile(tileParams: GetTileParameters): Promise<ArrayBuffer | null> {\n const {x, y, zoom: z} = tileParams;\n const rangeResponse = await this.pmtiles.getZxy(z, x, y);\n const arrayBuffer = rangeResponse?.data;\n if (!arrayBuffer) {\n // console.error('No arrayBuffer', tileParams);\n return null;\n }\n return arrayBuffer;\n }\n\n // Tile Source interface implementation: deck.gl compatible API\n // TODO - currently only handles image tiles, not vector tiles\n\n async getTileData(tileParams: TileLoadParameters): Promise<unknown | null> {\n const {x, y, z} = tileParams.index;\n const metadata = await this.metadata;\n switch (metadata.tileMIMEType) {\n case 'application/vnd.mapbox-vector-tile':\n return await this.getVectorTile({x, y, zoom: z, layers: []});\n default:\n return await this.getImageTile({x, y, zoom: z, layers: []});\n }\n }\n\n // ImageTileSource interface implementation\n\n async getImageTile(tileParams: GetTileParameters): Promise<ImageType | null> {\n const arrayBuffer = await this.getTile(tileParams);\n return arrayBuffer ? await ImageLoader.parse(arrayBuffer, this.loadOptions) : null;\n }\n\n // VectorTileSource interface implementation\n\n async getVectorTile(tileParams: GetTileParameters): Promise<unknown | null> {\n const arrayBuffer = await this.getTile(tileParams);\n const loadOptions: MVTLoaderOptions = {\n shape: 'geojson-table',\n mvt: {\n coordinates: 'wgs84',\n tileIndex: {x: tileParams.x, y: tileParams.y, z: tileParams.zoom},\n ...(this.loadOptions as MVTLoaderOptions)?.mvt\n },\n ...this.loadOptions\n };\n\n return arrayBuffer ? await MVTLoader.parse(arrayBuffer, loadOptions) : null;\n }\n}\n"],"mappings":"AAOA,SAAQA,UAAU,EAAEC,WAAW,QAAO,0BAA0B;AAChE,SAAQC,WAAW,QAA2B,oBAAoB;AAClE,SAAQC,SAAS,QAAgD,iBAAiB;AAElF,OAAO,KAAKC,OAAO,MAAM,SAAS;AAClC,MAAM;EAACC;AAAO,CAAC,GAAGD,OAAO;AAAC,SAGlBE,kBAAkB;AAAA,SAClBC,UAAU;AAElB,MAAMC,OAAO,GAAG,OAAO;AAkBvB,OAAO,MAAMC,cAAoE,GAAG;EAClFC,IAAI,EAAE,SAAS;EACfC,EAAE,EAAE,SAAS;EACbC,MAAM,EAAE,SAAS;EACjBC,OAAO,EAAEL,OAAO;EAChBM,UAAU,EAAE,CAAC,SAAS,CAAC;EACvBC,SAAS,EAAE,CAAC,0BAA0B,CAAC;EACvCC,OAAO,EAAE;IACPZ,OAAO,EAAE,CAAC;EACZ,CAAC;EACDa,YAAY,EAAGC,KAAyB,IAAK,IAAIC,aAAa,CAACD,KAAK;AACtE,CAAC;AAYD,OAAO,MAAMC,aAAa,SAASnB,UAAU,CAA8C;EAOzFoB,WAAWA,CAACF,KAAyB,EAAE;IACrC,KAAK,CAACA,KAAK,CAAC;IAAC,KAPfG,IAAI;IAAA,KACJH,KAAK;IAAA,KACLI,QAAQ,GAAkB,IAAI;IAAA,KAC9BlB,OAAO;IAAA,KACPmB,QAAQ;IAIN,IAAI,CAACL,KAAK,GAAGA,KAAK;IAClB,MAAMM,GAAG,GACP,OAAON,KAAK,CAACM,GAAG,KAAK,QAAQ,GAAGvB,WAAW,CAACiB,KAAK,CAACM,GAAG,CAAC,GAAG,IAAIjB,UAAU,CAACW,KAAK,CAACM,GAAG,EAAE,SAAS,CAAC;IAC/F,IAAI,CAACH,IAAI,GAAGH,KAAK,CAACM,GAAG;IACrB,IAAI,CAACpB,OAAO,GAAG,IAAIC,OAAO,CAACmB,GAAG,CAAC;IAC/B,IAAI,CAACC,WAAW,GAAG,IAAI,CAACA,WAAW,CAACC,IAAI,CAAC,IAAI,CAAC;IAC9C,IAAI,CAACH,QAAQ,GAAG,IAAI,CAACI,WAAW,CAAC,CAAC;EACpC;EAEA,MAAMA,WAAWA,CAAA,EAA6B;IAC5C,MAAMC,aAAa,GAAG,MAAM,IAAI,CAACxB,OAAO,CAACyB,SAAS,CAAC,CAAC;IACpD,MAAMC,eAAe,GAAG,MAAM,IAAI,CAAC1B,OAAO,CAACuB,WAAW,CAAC,CAAC;IACxD,MAAMJ,QAAyB,GAAGjB,kBAAkB,CAClDsB,aAAa,EACbE,eAAe,EACf;MAACC,mBAAmB,EAAE;IAAK,CAAC,EAC5B,IAAI,CAACC,WACP,CAAC;IAED,IAAI,IAAI,CAACd,KAAK,CAACe,YAAY,EAAE;MAC3BV,QAAQ,CAACU,YAAY,GAAG,CAAC,GAAG,IAAI,CAACf,KAAK,CAACe,YAAY,EAAE,IAAIV,QAAQ,CAACU,YAAY,IAAI,EAAE,CAAC,CAAC;IACxF;IACA,IAAIV,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAEW,YAAY,EAAE;MAC1B,IAAI,CAACZ,QAAQ,GAAGC,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEW,YAAY;IACxC;IAEA,OAAOX,QAAQ;EACjB;EAEA,MAAMY,OAAOA,CAACC,UAA6B,EAA+B;IACxE,MAAM;MAACC,CAAC;MAAEC,CAAC;MAAEC,IAAI,EAAEC;IAAC,CAAC,GAAGJ,UAAU;IAClC,MAAMK,aAAa,GAAG,MAAM,IAAI,CAACrC,OAAO,CAACsC,MAAM,CAACF,CAAC,EAAEH,CAAC,EAAEC,CAAC,CAAC;IACxD,MAAMK,WAAW,GAAGF,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEpB,IAAI;IACvC,IAAI,CAACsB,WAAW,EAAE;MAEhB,OAAO,IAAI;IACb;IACA,OAAOA,WAAW;EACpB;EAKA,MAAMlB,WAAWA,CAACW,UAA8B,EAA2B;IACzE,MAAM;MAACC,CAAC;MAAEC,CAAC;MAAEE;IAAC,CAAC,GAAGJ,UAAU,CAACQ,KAAK;IAClC,MAAMrB,QAAQ,GAAG,MAAM,IAAI,CAACA,QAAQ;IACpC,QAAQA,QAAQ,CAACW,YAAY;MAC3B,KAAK,oCAAoC;QACvC,OAAO,MAAM,IAAI,CAACW,aAAa,CAAC;UAACR,CAAC;UAAEC,CAAC;UAAEC,IAAI,EAAEC,CAAC;UAAEM,MAAM,EAAE;QAAE,CAAC,CAAC;MAC9D;QACE,OAAO,MAAM,IAAI,CAACC,YAAY,CAAC;UAACV,CAAC;UAAEC,CAAC;UAAEC,IAAI,EAAEC,CAAC;UAAEM,MAAM,EAAE;QAAE,CAAC,CAAC;IAC/D;EACF;EAIA,MAAMC,YAAYA,CAACX,UAA6B,EAA6B;IAC3E,MAAMO,WAAW,GAAG,MAAM,IAAI,CAACR,OAAO,CAACC,UAAU,CAAC;IAClD,OAAOO,WAAW,GAAG,MAAMzC,WAAW,CAAC8C,KAAK,CAACL,WAAW,EAAE,IAAI,CAACX,WAAW,CAAC,GAAG,IAAI;EACpF;EAIA,MAAMa,aAAaA,CAACT,UAA6B,EAA2B;IAAA,IAAAa,iBAAA;IAC1E,MAAMN,WAAW,GAAG,MAAM,IAAI,CAACR,OAAO,CAACC,UAAU,CAAC;IAClD,MAAMJ,WAA6B,GAAG;MACpCkB,KAAK,EAAE,eAAe;MACtBC,GAAG,EAAE;QACHC,WAAW,EAAE,OAAO;QACpBC,SAAS,EAAE;UAAChB,CAAC,EAAED,UAAU,CAACC,CAAC;UAAEC,CAAC,EAAEF,UAAU,CAACE,CAAC;UAAEE,CAAC,EAAEJ,UAAU,CAACG;QAAI,CAAC;QACjE,KAAAU,iBAAA,GAAI,IAAI,CAACjB,WAAW,cAAAiB,iBAAA,uBAAjBA,iBAAA,CAAwCE,GAAG;MAChD,CAAC;MACD,GAAG,IAAI,CAACnB;IACV,CAAC;IAED,OAAOW,WAAW,GAAG,MAAMxC,SAAS,CAAC6C,KAAK,CAACL,WAAW,EAAEX,WAAW,CAAC,GAAG,IAAI;EAC7E;AACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/pmtiles",
3
- "version": "4.0.4",
3
+ "version": "4.1.0-alpha.10",
4
4
  "description": "Framework-independent loader for the pmtiles format",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -12,21 +12,26 @@
12
12
  "url": "https://github.com/visgl/loaders.gl"
13
13
  },
14
14
  "keywords": [
15
- "webgl",
16
15
  "loader",
17
- "3d",
18
- "mesh",
19
- "point cloud",
20
- "PCD"
16
+ "tile",
17
+ "mvt",
18
+ "image tile",
19
+ "tilejson",
20
+ "range request",
21
+ "cloud native",
22
+ "PM Tiles",
23
+ "pmtiles",
24
+ "webgl",
25
+ "webgpu"
21
26
  ],
22
27
  "types": "dist/index.d.ts",
23
28
  "main": "dist/index.cjs",
24
29
  "module": "dist/index.js",
25
30
  "exports": {
26
31
  ".": {
32
+ "types": "./dist/index.d.ts",
27
33
  "import": "./dist/index.js",
28
- "require": "./dist/index.cjs",
29
- "types": "./dist/index.d.ts"
34
+ "require": "./dist/index.cjs"
30
35
  }
31
36
  },
32
37
  "sideEffects": false,
@@ -40,11 +45,11 @@
40
45
  "build-bundle": "ocular-bundle ./src/index.ts"
41
46
  },
42
47
  "dependencies": {
43
- "@loaders.gl/images": "4.0.4",
44
- "@loaders.gl/loader-utils": "4.0.4",
45
- "@loaders.gl/mvt": "4.0.4",
46
- "@loaders.gl/schema": "4.0.4",
48
+ "@loaders.gl/images": "4.1.0-alpha.10",
49
+ "@loaders.gl/loader-utils": "4.1.0-alpha.10",
50
+ "@loaders.gl/mvt": "4.1.0-alpha.10",
51
+ "@loaders.gl/schema": "4.1.0-alpha.10",
47
52
  "pmtiles": "^2.7.2"
48
53
  },
49
- "gitHead": "4dc810fa04bb400f4aedfef98a83c7ef882ed3d7"
54
+ "gitHead": "19f43c2d90d8b50860c3f8e487429779a386287d"
50
55
  }
package/src/index.ts CHANGED
@@ -1,4 +1,5 @@
1
- // loaders.gl, MIT license
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
2
3
  // Copyright (c) vis.gl contributors
3
4
 
4
5
  export type {PMTilesMetadata} from './lib/parse-pmtiles';
@@ -1,4 +1,5 @@
1
- // loaders.gl, MIT license
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
2
3
  // Copyright (c) vis.gl contributors
3
4
 
4
5
  import * as pmtiles from 'pmtiles';
@@ -1,6 +1,8 @@
1
- // loaders.gl, MIT license
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
2
3
  // Copyright (c) vis.gl contributors
3
4
 
5
+ import {LoaderOptions} from '@loaders.gl/loader-utils';
4
6
  import type {TileJSON} from '@loaders.gl/mvt';
5
7
  import {TileJSONLoader} from '@loaders.gl/mvt';
6
8
  // import {Source, PMTiles, Header, TileType} from 'pmtiles';
@@ -54,12 +56,14 @@ export type PMTilesMetadata = {
54
56
  * @param header
55
57
  * @param tilejsonMetadata
56
58
  * @param options
59
+ * @param loadOptions
57
60
  * @returns
58
61
  */
59
62
  export function parsePMTilesHeader(
60
63
  header: pmtiles.Header,
61
64
  pmtilesMetadata: Record<string, unknown> | null,
62
- options?: {includeFormatHeader?: boolean}
65
+ options?: {includeFormatHeader?: boolean},
66
+ loadOptions?: LoaderOptions
63
67
  ): PMTilesMetadata {
64
68
  // Ironically, to use the TileJSON loader we need to stringify the metadata again.
65
69
  // This is the price of integrating with the existing pmtiles library.
@@ -68,7 +72,7 @@ export function parsePMTilesHeader(
68
72
  if (pmtilesMetadata) {
69
73
  try {
70
74
  const string = JSON.stringify(pmtilesMetadata);
71
- tilejson = TileJSONLoader.parseTextSync?.(string) || null;
75
+ tilejson = TileJSONLoader.parseTextSync?.(string, loadOptions) || null;
72
76
  } catch (error) {
73
77
  // eslint-disable-next-line no-console
74
78
  console.warn('PMTiles metadata could not be interpreted as TileJSON', error);
@@ -1,12 +1,13 @@
1
- // loaders.gl, MIT license
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
2
3
  // Copyright (c) vis.gl contributors
3
4
 
4
5
  import type {TileLoadParameters, GetTileParameters} from '@loaders.gl/loader-utils';
5
6
  import type {ImageType, DataSourceProps} from '@loaders.gl/loader-utils';
6
7
  import type {ImageTileSource, VectorTileSource} from '@loaders.gl/loader-utils';
7
8
  import {DataSource, resolvePath} from '@loaders.gl/loader-utils';
8
- import {ImageLoader} from '@loaders.gl/images';
9
- import {MVTLoader, MVTLoaderOptions} from '@loaders.gl/mvt';
9
+ import {ImageLoader, ImageLoaderOptions} from '@loaders.gl/images';
10
+ import {MVTLoader, MVTLoaderOptions, TileJSONLoaderOptions} from '@loaders.gl/mvt';
10
11
 
11
12
  import * as pmtiles from 'pmtiles';
12
13
  const {PMTiles} = pmtiles;
@@ -49,6 +50,7 @@ export const PMTilesService: ServiceWithSource<PMTilesSource, PMTilesSourceProps
49
50
  export type PMTilesSourceProps = DataSourceProps & {
50
51
  url: string | Blob;
51
52
  attributions?: string[];
53
+ loadOptions?: TileJSONLoaderOptions & MVTLoaderOptions & ImageLoaderOptions;
52
54
  };
53
55
 
54
56
  /**
@@ -76,7 +78,12 @@ export class PMTilesSource extends DataSource implements ImageTileSource, Vector
76
78
  async getMetadata(): Promise<PMTilesMetadata> {
77
79
  const pmtilesHeader = await this.pmtiles.getHeader();
78
80
  const pmtilesMetadata = await this.pmtiles.getMetadata();
79
- const metadata: PMTilesMetadata = parsePMTilesHeader(pmtilesHeader, pmtilesMetadata);
81
+ const metadata: PMTilesMetadata = parsePMTilesHeader(
82
+ pmtilesHeader,
83
+ pmtilesMetadata,
84
+ {includeFormatHeader: false},
85
+ this.loadOptions
86
+ );
80
87
  // Add additional attribution if necessary
81
88
  if (this.props.attributions) {
82
89
  metadata.attributions = [...this.props.attributions, ...(metadata.attributions || [])];