@loaders.gl/pmtiles 4.0.0-beta.2 → 4.0.0-beta.4
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.min.js → dist.dev.js} +3578 -3303
- package/dist/index.cjs +182 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/parse-pmtiles.d.ts +6 -6
- package/dist/lib/parse-pmtiles.d.ts.map +1 -1
- package/dist/{esm/lib → lib}/parse-pmtiles.js +5 -1
- package/dist/lib/parse-pmtiles.js.map +1 -0
- package/dist/pmtiles-source.d.ts +20 -24
- package/dist/pmtiles-source.d.ts.map +1 -1
- package/dist/{esm/pmtiles-source.js → pmtiles-source.js} +23 -8
- package/dist/pmtiles-source.js.map +1 -0
- package/package.json +18 -10
- package/src/lib/parse-pmtiles.ts +9 -7
- package/src/pmtiles-source.ts +32 -28
- package/dist/bundle.d.ts +0 -2
- package/dist/bundle.d.ts.map +0 -1
- package/dist/es5/bundle.js +0 -6
- package/dist/es5/bundle.js.map +0 -1
- package/dist/es5/index.js +0 -13
- package/dist/es5/index.js.map +0 -1
- package/dist/es5/lib/parse-pmtiles.js +0 -126
- package/dist/es5/lib/parse-pmtiles.js.map +0 -1
- package/dist/es5/lib/sources.js +0 -2
- package/dist/es5/lib/sources.js.map +0 -1
- package/dist/es5/pmtiles-source.js +0 -289
- package/dist/es5/pmtiles-source.js.map +0 -1
- package/dist/esm/bundle.js +0 -4
- package/dist/esm/bundle.js.map +0 -1
- package/dist/esm/index.js +0 -2
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/lib/parse-pmtiles.js.map +0 -1
- package/dist/esm/lib/sources.js +0 -2
- package/dist/esm/lib/sources.js.map +0 -1
- package/dist/esm/pmtiles-source.js.map +0 -1
- package/dist/lib/sources.d.ts +0 -1
- package/dist/lib/sources.d.ts.map +0 -1
- package/src/bundle.ts +0 -4
- package/src/lib/sources.ts +0 -150
package/dist/es5/bundle.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bundle.js","names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"sources":["../../src/bundle.ts"],"sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"mappings":";;AACA,IAAMA,aAAa,GAAGC,OAAO,CAAC,SAAS,CAAC;AACxCC,UAAU,CAACC,OAAO,GAAGD,UAAU,CAACC,OAAO,IAAI,CAAC,CAAC;AAC7CC,MAAM,CAACC,OAAO,GAAGC,MAAM,CAACC,MAAM,CAACL,UAAU,CAACC,OAAO,EAAEH,aAAa,CAAC"}
|
package/dist/es5/index.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
Object.defineProperty(exports, "PMTilesSource", {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: function get() {
|
|
9
|
-
return _pmtilesSource.PMTilesSource;
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
|
-
var _pmtilesSource = require("./pmtiles-source");
|
|
13
|
-
//# sourceMappingURL=index.js.map
|
package/dist/es5/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_pmtilesSource","require"],"sources":["../../src/index.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nexport type {PMTilesMetadata} from './lib/parse-pmtiles';\nexport type {PMTilesSourceProps} from './pmtiles-source';\nexport {PMTilesSource} from './pmtiles-source';\n"],"mappings":";;;;;;;;;;;AAIA,IAAAA,cAAA,GAAAC,OAAA"}
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.loadPMTile = loadPMTile;
|
|
8
|
-
exports.loadPMTilesHeader = loadPMTilesHeader;
|
|
9
|
-
exports.parsePMTilesHeader = parsePMTilesHeader;
|
|
10
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
12
|
-
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
13
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
14
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
15
|
-
var _pmtiles = require("pmtiles");
|
|
16
|
-
var _mvt = require("@loaders.gl/mvt");
|
|
17
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
18
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
19
|
-
function loadPMTilesHeader(_x) {
|
|
20
|
-
return _loadPMTilesHeader.apply(this, arguments);
|
|
21
|
-
}
|
|
22
|
-
function _loadPMTilesHeader() {
|
|
23
|
-
_loadPMTilesHeader = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(source) {
|
|
24
|
-
var pmTiles, header, metadata, tilejsonMetadata;
|
|
25
|
-
return _regenerator.default.wrap(function _callee$(_context) {
|
|
26
|
-
while (1) switch (_context.prev = _context.next) {
|
|
27
|
-
case 0:
|
|
28
|
-
pmTiles = new _pmtiles.PMTiles(source);
|
|
29
|
-
_context.next = 3;
|
|
30
|
-
return pmTiles.getHeader();
|
|
31
|
-
case 3:
|
|
32
|
-
header = _context.sent;
|
|
33
|
-
_context.next = 6;
|
|
34
|
-
return pmTiles.getMetadata();
|
|
35
|
-
case 6:
|
|
36
|
-
metadata = _context.sent;
|
|
37
|
-
tilejsonMetadata = metadata && (0, _typeof2.default)(metadata) === 'object' && !Array.isArray(metadata) ? metadata : null;
|
|
38
|
-
return _context.abrupt("return", parsePMTilesHeader(header, tilejsonMetadata));
|
|
39
|
-
case 9:
|
|
40
|
-
case "end":
|
|
41
|
-
return _context.stop();
|
|
42
|
-
}
|
|
43
|
-
}, _callee);
|
|
44
|
-
}));
|
|
45
|
-
return _loadPMTilesHeader.apply(this, arguments);
|
|
46
|
-
}
|
|
47
|
-
function loadPMTile(_x2, _x3) {
|
|
48
|
-
return _loadPMTile.apply(this, arguments);
|
|
49
|
-
}
|
|
50
|
-
function _loadPMTile() {
|
|
51
|
-
_loadPMTile = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(source, options) {
|
|
52
|
-
var pmTiles, _options$tileZxy, z, x, y, tile;
|
|
53
|
-
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
54
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
55
|
-
case 0:
|
|
56
|
-
pmTiles = new _pmtiles.PMTiles(source);
|
|
57
|
-
if (options.tileZxy) {
|
|
58
|
-
_context2.next = 3;
|
|
59
|
-
break;
|
|
60
|
-
}
|
|
61
|
-
throw new Error('tile zxy missing');
|
|
62
|
-
case 3:
|
|
63
|
-
_options$tileZxy = (0, _slicedToArray2.default)(options.tileZxy, 3), z = _options$tileZxy[0], x = _options$tileZxy[1], y = _options$tileZxy[2];
|
|
64
|
-
_context2.next = 6;
|
|
65
|
-
return pmTiles.getZxy(z, x, y);
|
|
66
|
-
case 6:
|
|
67
|
-
tile = _context2.sent;
|
|
68
|
-
return _context2.abrupt("return", tile === null || tile === void 0 ? void 0 : tile.data);
|
|
69
|
-
case 8:
|
|
70
|
-
case "end":
|
|
71
|
-
return _context2.stop();
|
|
72
|
-
}
|
|
73
|
-
}, _callee2);
|
|
74
|
-
}));
|
|
75
|
-
return _loadPMTile.apply(this, arguments);
|
|
76
|
-
}
|
|
77
|
-
function parsePMTilesHeader(header, tilejsonMetadata, options) {
|
|
78
|
-
var partialMetadata = {};
|
|
79
|
-
if (typeof (tilejsonMetadata === null || tilejsonMetadata === void 0 ? void 0 : tilejsonMetadata.name) === 'string') {
|
|
80
|
-
partialMetadata.name = tilejsonMetadata.name;
|
|
81
|
-
}
|
|
82
|
-
if (typeof (tilejsonMetadata === null || tilejsonMetadata === void 0 ? void 0 : tilejsonMetadata.attribution) === 'string') {
|
|
83
|
-
partialMetadata.attributions = [tilejsonMetadata.attribution];
|
|
84
|
-
}
|
|
85
|
-
var metadata = _objectSpread(_objectSpread({}, partialMetadata), {}, {
|
|
86
|
-
format: 'pmtiles',
|
|
87
|
-
formatVersion: header.specVersion,
|
|
88
|
-
mimeType: decodeTileType(header.tileType),
|
|
89
|
-
tileType: header.tileType,
|
|
90
|
-
minZoom: header.minZoom,
|
|
91
|
-
maxZoom: header.maxZoom,
|
|
92
|
-
boundingBox: [[header.minLon, header.minLat], [header.maxLon, header.maxLat]],
|
|
93
|
-
center: [header.centerLon, header.centerLat],
|
|
94
|
-
centerZoom: header.centerZoom,
|
|
95
|
-
etag: header.etag
|
|
96
|
-
});
|
|
97
|
-
if (tilejsonMetadata) {
|
|
98
|
-
try {
|
|
99
|
-
var _TileJSONLoader$parse;
|
|
100
|
-
metadata.tileJSON = ((_TileJSONLoader$parse = _mvt.TileJSONLoader.parseTextSync) === null || _TileJSONLoader$parse === void 0 ? void 0 : _TileJSONLoader$parse.call(_mvt.TileJSONLoader, JSON.stringify(tilejsonMetadata))) || undefined;
|
|
101
|
-
} catch (error) {
|
|
102
|
-
metadata.tilejsonMetadata = tilejsonMetadata;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
if (options !== null && options !== void 0 && options.includeFormatHeader) {
|
|
106
|
-
metadata.formatHeader = header;
|
|
107
|
-
}
|
|
108
|
-
return metadata;
|
|
109
|
-
}
|
|
110
|
-
function decodeTileType(tileType) {
|
|
111
|
-
switch (tileType) {
|
|
112
|
-
case _pmtiles.TileType.Mvt:
|
|
113
|
-
return 'application/vnd.mapbox-vector-tile';
|
|
114
|
-
case _pmtiles.TileType.Png:
|
|
115
|
-
return 'image/png';
|
|
116
|
-
case _pmtiles.TileType.Jpeg:
|
|
117
|
-
return 'image/jpeg';
|
|
118
|
-
case _pmtiles.TileType.Webp:
|
|
119
|
-
return 'image/webp';
|
|
120
|
-
case _pmtiles.TileType.Avif:
|
|
121
|
-
return 'image/avif';
|
|
122
|
-
default:
|
|
123
|
-
return 'application/octet-stream';
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
//# sourceMappingURL=parse-pmtiles.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parse-pmtiles.js","names":["_pmtiles","require","_mvt","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","loadPMTilesHeader","_x","_loadPMTilesHeader","_asyncToGenerator2","_regenerator","mark","_callee","pmTiles","header","metadata","tilejsonMetadata","wrap","_callee$","_context","prev","next","PMTiles","getHeader","sent","getMetadata","_typeof2","Array","isArray","abrupt","parsePMTilesHeader","stop","loadPMTile","_x2","_x3","_loadPMTile","_callee2","options","_options$tileZxy","z","x","y","tile","_callee2$","_context2","tileZxy","Error","_slicedToArray2","getZxy","data","partialMetadata","name","attribution","attributions","format","formatVersion","specVersion","mimeType","decodeTileType","tileType","minZoom","maxZoom","boundingBox","minLon","minLat","maxLon","maxLat","center","centerLon","centerLat","centerZoom","etag","_TileJSONLoader$parse","tileJSON","TileJSONLoader","parseTextSync","call","JSON","stringify","undefined","error","includeFormatHeader","formatHeader","TileType","Mvt","Png","Jpeg","Webp","Avif"],"sources":["../../../src/lib/parse-pmtiles.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport {Source, PMTiles, Header, TileType} from 'pmtiles';\nimport type {TileJSON} from '@loaders.gl/mvt';\nimport {TileJSONLoader} from '@loaders.gl/mvt';\n\n/** Metadata describing a PMTiles file */\nexport type PMTilesMetadata = {\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 format: 'pmtiles';\n /** Version of pm tiles format used by this tileset */\n formatVersion: number;\n /** PMTiles format specific header */\n formatHeader?: Header;\n /** MIME type for tile contents. Unknown tile types will return 'application/octet-stream */\n mimeType:\n | 'application/vnd.mapbox-vector-tile'\n | 'image/png'\n | 'image/jpeg'\n | 'image/webp'\n | 'image/avif'\n | 'application/octet-stream';\n /** The original numeric tile type constant specified in the PMTiles tileset */\n tileType: TileType;\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 tileJSON?: TileJSON;\n /** Current assumption is that this is a tileJSON style metadata generated by e.g. tippecanoe */\n tilejsonMetadata?: Record<string, unknown>;\n};\n\nexport type ParsePMTilesOptions = {\n tileZxy?: [number, number, number];\n};\n\nexport async function loadPMTilesHeader(source: Source): Promise<PMTilesMetadata> {\n const pmTiles = new PMTiles(source);\n const header = await pmTiles.getHeader();\n const metadata = await pmTiles.getMetadata();\n const tilejsonMetadata =\n metadata && typeof metadata === 'object' && !Array.isArray(metadata)\n ? (metadata as Record<string, unknown>)\n : null;\n return parsePMTilesHeader(header, tilejsonMetadata);\n}\n\nexport async function loadPMTile(\n source: Source,\n options: ParsePMTilesOptions\n): Promise<ArrayBuffer | undefined> {\n const pmTiles = new PMTiles(source);\n if (!options.tileZxy) {\n throw new Error('tile zxy missing');\n }\n const [z, x, y] = options.tileZxy;\n const tile = await pmTiles.getZxy(z, x, y);\n return tile?.data;\n}\n\nexport function parsePMTilesHeader(\n header: Header,\n tilejsonMetadata: Record<string, unknown> | null,\n options?: {includeFormatHeader?: boolean}\n): PMTilesMetadata {\n const partialMetadata: Partial<PMTilesMetadata> = {};\n\n if (typeof tilejsonMetadata?.name === 'string') {\n partialMetadata.name = tilejsonMetadata.name;\n }\n\n if (typeof tilejsonMetadata?.attribution === 'string') {\n partialMetadata.attributions = [tilejsonMetadata.attribution];\n }\n\n const metadata: PMTilesMetadata = {\n ...partialMetadata,\n format: 'pmtiles',\n formatVersion: header.specVersion,\n mimeType: decodeTileType(header.tileType),\n tileType: 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 (tilejsonMetadata) {\n try {\n metadata.tileJSON =\n TileJSONLoader.parseTextSync?.(JSON.stringify(tilejsonMetadata)) || undefined;\n } catch (error) {\n // console.warn('PMTiles invalid tilejson metadata', error);\n metadata.tilejsonMetadata = tilejsonMetadata;\n }\n }\n\n if (options?.includeFormatHeader) {\n metadata.formatHeader = header;\n }\n\n return metadata;\n}\n\n/** Extract a MIME type for tiles from vector tile header */\nfunction decodeTileType(\n tileType: 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":"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"}
|
package/dist/es5/lib/sources.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sources.js","names":[],"sources":["../../../src/lib/sources.ts"],"sourcesContent":["/*\nimport {fetchFile} from '@loaders.gl/core';\n\nimport {Source as PMTilesSource, RangeResponse} from 'pmtiles';\n\n/** @note \"source\" here is a PMTiles library type, referring to *\nexport function makeSource(data: string | Blob, fetch?) {\n if (typeof data === 'string') {\n return new FetchSource(data, fetch);\n }\n if (data instanceof Blob) {\n const url = '';\n return new BlobSource(data, url);\n }\n}\n\nexport class BlobSource implements PMTilesSource {\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 return this.blob.url || '';\n }\n\n async getBytes(offset: number, length: number, signal?: AbortSignal): Promise<RangeResponse> {\n const data = await this.blob.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\nexport class FetchSource implements PMTilesSource {\n url: string;\n fetch;\n\n constructor(url: string, fetch = fetchFile) {\n this.url = url;\n this.fetch = fetch;\n }\n\n // TODO - how is this used?\n getKey() {\n return this.url;\n }\n\n async getBytes(offset: number, length: number, signal?: AbortSignal): Promise<RangeResponse> {\n let controller;\n if (!signal) {\n // ToDO why is it so important to abort in case 200?\n // TODO check this works or assert 206\n controller = new AbortController();\n signal = controller.signal;\n }\n\n let response = await fetch(this.url, {\n signal,\n headers: {Range: `bytes=${offset}-${offset + length - 1}`}\n });\n\n switch (response.status) {\n case 206: // Partial Content success\n // This is the expected success code for a range request\n break;\n\n case 200:\n // some well-behaved backends, e.g. DigitalOcean CDN, respond with 200 instead of 206\n // but we also need to detect no support for Byte Serving which is returning the whole file\n const content_length = response.headers.get('Content-Length');\n if (!content_length || Number(content_length) > length) {\n if (controller) {\n controller.abort();\n }\n throw Error(\n 'content-length header missing or exceeding request. Server must support HTTP Byte Serving.'\n );\n }\n\n case 416: // \"Range Not Satisfiable\"\n // some HTTP servers don't accept ranges beyond the end of the resource.\n // Retry with the exact length\n // TODO: can return 416 with offset > 0 if content changed, which will have a blank etag.\n // See https://github.com/protomaps/PMTiles/issues/90\n if (offset === 0) {\n const content_range = response.headers.get('Content-Range');\n if (!content_range || !content_range.startsWith('bytes *')) {\n throw Error('Missing content-length on 416 response');\n }\n const actual_length = Number(content_range.substr(8));\n response = await fetch(this.url, {\n signal,\n headers: {Range: `bytes=0-${actual_length - 1}`}\n });\n }\n break;\n\n default:\n if (response.status >= 300) {\n throw Error(`Bad response code: ${response.status}`);\n }\n }\n\n const data = await response.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\n/*\nclass TestNodeFileSource implements Source {\n buffer: ArrayBuffer;\n path: string;\n key: string;\n etag?: string;\n\n constructor(path: string, key: string) {\n this.path = path;\n this.buffer = fs.readFileSync(path);\n this.key = key;\n }\n\n getKey() {\n return this.key;\n }\n\n replaceData(path: string) {\n this.path = path;\n this.buffer = fs.readFileSync(path);\n }\n\n async getBytes(offset: number, length: number): Promise<RangeResponse> {\n const slice = new Uint8Array(this.buffer.slice(offset, offset + length))\n .buffer;\n return { data: slice, etag: this.etag };\n }\n}\n*/\n"],"mappings":""}
|
|
@@ -1,289 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.PMTilesSource = exports.BlobSource = void 0;
|
|
8
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
-
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
10
|
-
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
11
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
12
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
13
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
14
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
15
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
16
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
17
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
18
|
-
var _loaderUtils = require("@loaders.gl/loader-utils");
|
|
19
|
-
var _images = require("@loaders.gl/images");
|
|
20
|
-
var _mvt = require("@loaders.gl/mvt");
|
|
21
|
-
var _pmtiles = require("pmtiles");
|
|
22
|
-
var _parsePmtiles = require("./lib/parse-pmtiles");
|
|
23
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
24
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
25
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
26
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
27
|
-
var BlobSource = function () {
|
|
28
|
-
function BlobSource(blob, key) {
|
|
29
|
-
(0, _classCallCheck2.default)(this, BlobSource);
|
|
30
|
-
(0, _defineProperty2.default)(this, "blob", void 0);
|
|
31
|
-
(0, _defineProperty2.default)(this, "key", void 0);
|
|
32
|
-
this.blob = blob;
|
|
33
|
-
this.key = key;
|
|
34
|
-
}
|
|
35
|
-
(0, _createClass2.default)(BlobSource, [{
|
|
36
|
-
key: "getKey",
|
|
37
|
-
value: function getKey() {
|
|
38
|
-
return this.blob.url || '';
|
|
39
|
-
}
|
|
40
|
-
}, {
|
|
41
|
-
key: "getBytes",
|
|
42
|
-
value: function () {
|
|
43
|
-
var _getBytes = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(offset, length, signal) {
|
|
44
|
-
var slice, data;
|
|
45
|
-
return _regenerator.default.wrap(function _callee$(_context) {
|
|
46
|
-
while (1) switch (_context.prev = _context.next) {
|
|
47
|
-
case 0:
|
|
48
|
-
slice = this.blob.slice(offset, offset + length);
|
|
49
|
-
_context.next = 3;
|
|
50
|
-
return slice.arrayBuffer();
|
|
51
|
-
case 3:
|
|
52
|
-
data = _context.sent;
|
|
53
|
-
return _context.abrupt("return", {
|
|
54
|
-
data: data
|
|
55
|
-
});
|
|
56
|
-
case 5:
|
|
57
|
-
case "end":
|
|
58
|
-
return _context.stop();
|
|
59
|
-
}
|
|
60
|
-
}, _callee, this);
|
|
61
|
-
}));
|
|
62
|
-
function getBytes(_x, _x2, _x3) {
|
|
63
|
-
return _getBytes.apply(this, arguments);
|
|
64
|
-
}
|
|
65
|
-
return getBytes;
|
|
66
|
-
}()
|
|
67
|
-
}]);
|
|
68
|
-
return BlobSource;
|
|
69
|
-
}();
|
|
70
|
-
exports.BlobSource = BlobSource;
|
|
71
|
-
var PMTilesSource = function (_DataSource) {
|
|
72
|
-
(0, _inherits2.default)(PMTilesSource, _DataSource);
|
|
73
|
-
var _super = _createSuper(PMTilesSource);
|
|
74
|
-
function PMTilesSource(props) {
|
|
75
|
-
var _this;
|
|
76
|
-
(0, _classCallCheck2.default)(this, PMTilesSource);
|
|
77
|
-
_this = _super.call(this, props);
|
|
78
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "props", void 0);
|
|
79
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "pmtiles", void 0);
|
|
80
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "metadata", void 0);
|
|
81
|
-
_this.props = props;
|
|
82
|
-
var url = typeof props.url === 'string' ? (0, _loaderUtils.resolvePath)(props.url) : new BlobSource(props.url, 'pmtiles');
|
|
83
|
-
_this.pmtiles = new _pmtiles.PMTiles(url);
|
|
84
|
-
_this.getTileData = _this.getTileData.bind((0, _assertThisInitialized2.default)(_this));
|
|
85
|
-
_this.metadata = _this.getMetadata();
|
|
86
|
-
return _this;
|
|
87
|
-
}
|
|
88
|
-
(0, _createClass2.default)(PMTilesSource, [{
|
|
89
|
-
key: "getMetadata",
|
|
90
|
-
value: function () {
|
|
91
|
-
var _getMetadata = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2() {
|
|
92
|
-
var pmtilesHeader, pmtilesMetadata, metadata;
|
|
93
|
-
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
94
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
95
|
-
case 0:
|
|
96
|
-
_context2.next = 2;
|
|
97
|
-
return this.pmtiles.getHeader();
|
|
98
|
-
case 2:
|
|
99
|
-
pmtilesHeader = _context2.sent;
|
|
100
|
-
_context2.next = 5;
|
|
101
|
-
return this.pmtiles.getMetadata();
|
|
102
|
-
case 5:
|
|
103
|
-
pmtilesMetadata = _context2.sent;
|
|
104
|
-
metadata = (0, _parsePmtiles.parsePMTilesHeader)(pmtilesHeader, pmtilesMetadata);
|
|
105
|
-
if (this.props.attributions) {
|
|
106
|
-
metadata.attributions = [].concat((0, _toConsumableArray2.default)(this.props.attributions), (0, _toConsumableArray2.default)(metadata.attributions || []));
|
|
107
|
-
}
|
|
108
|
-
return _context2.abrupt("return", metadata);
|
|
109
|
-
case 9:
|
|
110
|
-
case "end":
|
|
111
|
-
return _context2.stop();
|
|
112
|
-
}
|
|
113
|
-
}, _callee2, this);
|
|
114
|
-
}));
|
|
115
|
-
function getMetadata() {
|
|
116
|
-
return _getMetadata.apply(this, arguments);
|
|
117
|
-
}
|
|
118
|
-
return getMetadata;
|
|
119
|
-
}()
|
|
120
|
-
}, {
|
|
121
|
-
key: "getTile",
|
|
122
|
-
value: function () {
|
|
123
|
-
var _getTile = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(tileParams) {
|
|
124
|
-
var x, y, z, rangeResponse, arrayBuffer;
|
|
125
|
-
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
126
|
-
while (1) switch (_context3.prev = _context3.next) {
|
|
127
|
-
case 0:
|
|
128
|
-
x = tileParams.x, y = tileParams.y, z = tileParams.zoom;
|
|
129
|
-
_context3.next = 3;
|
|
130
|
-
return this.pmtiles.getZxy(z, x, y);
|
|
131
|
-
case 3:
|
|
132
|
-
rangeResponse = _context3.sent;
|
|
133
|
-
arrayBuffer = rangeResponse === null || rangeResponse === void 0 ? void 0 : rangeResponse.data;
|
|
134
|
-
if (arrayBuffer) {
|
|
135
|
-
_context3.next = 7;
|
|
136
|
-
break;
|
|
137
|
-
}
|
|
138
|
-
return _context3.abrupt("return", null);
|
|
139
|
-
case 7:
|
|
140
|
-
return _context3.abrupt("return", arrayBuffer);
|
|
141
|
-
case 8:
|
|
142
|
-
case "end":
|
|
143
|
-
return _context3.stop();
|
|
144
|
-
}
|
|
145
|
-
}, _callee3, this);
|
|
146
|
-
}));
|
|
147
|
-
function getTile(_x4) {
|
|
148
|
-
return _getTile.apply(this, arguments);
|
|
149
|
-
}
|
|
150
|
-
return getTile;
|
|
151
|
-
}()
|
|
152
|
-
}, {
|
|
153
|
-
key: "getTileData",
|
|
154
|
-
value: function () {
|
|
155
|
-
var _getTileData = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee4(tileParams) {
|
|
156
|
-
var _tileParams$index, x, y, z, metadata;
|
|
157
|
-
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
158
|
-
while (1) switch (_context4.prev = _context4.next) {
|
|
159
|
-
case 0:
|
|
160
|
-
_tileParams$index = tileParams.index, x = _tileParams$index.x, y = _tileParams$index.y, z = _tileParams$index.z;
|
|
161
|
-
_context4.next = 3;
|
|
162
|
-
return this.metadata;
|
|
163
|
-
case 3:
|
|
164
|
-
metadata = _context4.sent;
|
|
165
|
-
_context4.t0 = metadata.mimeType;
|
|
166
|
-
_context4.next = _context4.t0 === 'application/vnd.mapbox-vector-tile' ? 7 : 10;
|
|
167
|
-
break;
|
|
168
|
-
case 7:
|
|
169
|
-
_context4.next = 9;
|
|
170
|
-
return this.getVectorTile({
|
|
171
|
-
x: x,
|
|
172
|
-
y: y,
|
|
173
|
-
zoom: z,
|
|
174
|
-
layers: []
|
|
175
|
-
});
|
|
176
|
-
case 9:
|
|
177
|
-
return _context4.abrupt("return", _context4.sent);
|
|
178
|
-
case 10:
|
|
179
|
-
_context4.next = 12;
|
|
180
|
-
return this.getImageTile({
|
|
181
|
-
x: x,
|
|
182
|
-
y: y,
|
|
183
|
-
zoom: z,
|
|
184
|
-
layers: []
|
|
185
|
-
});
|
|
186
|
-
case 12:
|
|
187
|
-
return _context4.abrupt("return", _context4.sent);
|
|
188
|
-
case 13:
|
|
189
|
-
case "end":
|
|
190
|
-
return _context4.stop();
|
|
191
|
-
}
|
|
192
|
-
}, _callee4, this);
|
|
193
|
-
}));
|
|
194
|
-
function getTileData(_x5) {
|
|
195
|
-
return _getTileData.apply(this, arguments);
|
|
196
|
-
}
|
|
197
|
-
return getTileData;
|
|
198
|
-
}()
|
|
199
|
-
}, {
|
|
200
|
-
key: "getImageTile",
|
|
201
|
-
value: function () {
|
|
202
|
-
var _getImageTile = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee5(tileParams) {
|
|
203
|
-
var arrayBuffer;
|
|
204
|
-
return _regenerator.default.wrap(function _callee5$(_context5) {
|
|
205
|
-
while (1) switch (_context5.prev = _context5.next) {
|
|
206
|
-
case 0:
|
|
207
|
-
_context5.next = 2;
|
|
208
|
-
return this.getTile(tileParams);
|
|
209
|
-
case 2:
|
|
210
|
-
arrayBuffer = _context5.sent;
|
|
211
|
-
if (!arrayBuffer) {
|
|
212
|
-
_context5.next = 9;
|
|
213
|
-
break;
|
|
214
|
-
}
|
|
215
|
-
_context5.next = 6;
|
|
216
|
-
return _images.ImageLoader.parse(arrayBuffer, this.loadOptions);
|
|
217
|
-
case 6:
|
|
218
|
-
_context5.t0 = _context5.sent;
|
|
219
|
-
_context5.next = 10;
|
|
220
|
-
break;
|
|
221
|
-
case 9:
|
|
222
|
-
_context5.t0 = null;
|
|
223
|
-
case 10:
|
|
224
|
-
return _context5.abrupt("return", _context5.t0);
|
|
225
|
-
case 11:
|
|
226
|
-
case "end":
|
|
227
|
-
return _context5.stop();
|
|
228
|
-
}
|
|
229
|
-
}, _callee5, this);
|
|
230
|
-
}));
|
|
231
|
-
function getImageTile(_x6) {
|
|
232
|
-
return _getImageTile.apply(this, arguments);
|
|
233
|
-
}
|
|
234
|
-
return getImageTile;
|
|
235
|
-
}()
|
|
236
|
-
}, {
|
|
237
|
-
key: "getVectorTile",
|
|
238
|
-
value: function () {
|
|
239
|
-
var _getVectorTile = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee6(tileParams) {
|
|
240
|
-
var _this$loadOptions;
|
|
241
|
-
var arrayBuffer, loadOptions;
|
|
242
|
-
return _regenerator.default.wrap(function _callee6$(_context6) {
|
|
243
|
-
while (1) switch (_context6.prev = _context6.next) {
|
|
244
|
-
case 0:
|
|
245
|
-
_context6.next = 2;
|
|
246
|
-
return this.getTile(tileParams);
|
|
247
|
-
case 2:
|
|
248
|
-
arrayBuffer = _context6.sent;
|
|
249
|
-
loadOptions = _objectSpread({
|
|
250
|
-
shape: 'geojson-table',
|
|
251
|
-
mvt: _objectSpread({
|
|
252
|
-
coordinates: 'wgs84',
|
|
253
|
-
tileIndex: {
|
|
254
|
-
x: tileParams.x,
|
|
255
|
-
y: tileParams.y,
|
|
256
|
-
z: tileParams.zoom
|
|
257
|
-
}
|
|
258
|
-
}, (_this$loadOptions = this.loadOptions) === null || _this$loadOptions === void 0 ? void 0 : _this$loadOptions.mvt)
|
|
259
|
-
}, this.loadOptions);
|
|
260
|
-
if (!arrayBuffer) {
|
|
261
|
-
_context6.next = 10;
|
|
262
|
-
break;
|
|
263
|
-
}
|
|
264
|
-
_context6.next = 7;
|
|
265
|
-
return _mvt.MVTLoader.parse(arrayBuffer, loadOptions);
|
|
266
|
-
case 7:
|
|
267
|
-
_context6.t0 = _context6.sent;
|
|
268
|
-
_context6.next = 11;
|
|
269
|
-
break;
|
|
270
|
-
case 10:
|
|
271
|
-
_context6.t0 = null;
|
|
272
|
-
case 11:
|
|
273
|
-
return _context6.abrupt("return", _context6.t0);
|
|
274
|
-
case 12:
|
|
275
|
-
case "end":
|
|
276
|
-
return _context6.stop();
|
|
277
|
-
}
|
|
278
|
-
}, _callee6, this);
|
|
279
|
-
}));
|
|
280
|
-
function getVectorTile(_x7) {
|
|
281
|
-
return _getVectorTile.apply(this, arguments);
|
|
282
|
-
}
|
|
283
|
-
return getVectorTile;
|
|
284
|
-
}()
|
|
285
|
-
}]);
|
|
286
|
-
return PMTilesSource;
|
|
287
|
-
}(_loaderUtils.DataSource);
|
|
288
|
-
exports.PMTilesSource = PMTilesSource;
|
|
289
|
-
//# sourceMappingURL=pmtiles-source.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pmtiles-source.js","names":["_loaderUtils","require","_images","_mvt","_pmtiles","_parsePmtiles","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","Reflect","construct","_possibleConstructorReturn2","sham","Proxy","Boolean","prototype","valueOf","call","e","BlobSource","blob","_classCallCheck2","_createClass2","value","getKey","url","_getBytes","_asyncToGenerator2","_regenerator","mark","_callee","offset","signal","slice","data","wrap","_callee$","_context","prev","next","arrayBuffer","sent","abrupt","stop","getBytes","_x","_x2","_x3","exports","PMTilesSource","_DataSource","_inherits2","_super","props","_this","_assertThisInitialized2","resolvePath","pmtiles","PMTiles","getTileData","bind","metadata","getMetadata","_getMetadata","_callee2","pmtilesHeader","pmtilesMetadata","_callee2$","_context2","getHeader","parsePMTilesHeader","attributions","concat","_toConsumableArray2","_getTile","_callee3","tileParams","x","y","z","rangeResponse","_callee3$","_context3","zoom","getZxy","getTile","_x4","_getTileData","_callee4","_tileParams$index","_callee4$","_context4","index","t0","mimeType","getVectorTile","layers","getImageTile","_x5","_getImageTile","_callee5","_callee5$","_context5","ImageLoader","parse","loadOptions","_x6","_getVectorTile","_callee6","_this$loadOptions","_callee6$","_context6","shape","mvt","coordinates","tileIndex","MVTLoader","_x7","DataSource"],"sources":["../../src/pmtiles-source.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {GetTileParameters, 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 {PMTiles, Source, RangeResponse} from 'pmtiles';\n\nimport type {PMTilesMetadata} from './lib/parse-pmtiles';\nimport {parsePMTilesHeader} from './lib/parse-pmtiles';\nimport {TileLoadParameters} from 'modules/loader-utils/src/lib/sources/tile-source';\n\n// export const PMTilesService: Service = {\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// };\n\n/**\n * WIP - Loader for pmtiles metadata\n * @note loads metadata only. To load individual tiles, use PMTilesSource\nexport const PMTilesLoader: LoaderWithParser<PMTilesMetadata, never, PMTilesLoaderOptions> = {\n name: 'PMTiles',\n id: 'pmtiles',\n module: 'pmtiles',\n version: VERSION,\n worker: true,\n extensions: ['pmtiles'],\n mimeTypes: ['application/octet-stream'],\n options: {\n pmtiles: {}\n },\n parse: async (arrayBuffer, options) => {\n throw new Error('not implemented');\n }\n};\n */\n\nexport type PMTilesSourceProps = DataSourceProps & {\n url: string | Blob;\n attributions?: string[];\n};\n\nexport class BlobSource implements 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(offset: number, length: number, signal?: AbortSignal): Promise<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/**\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 props: PMTilesSourceProps;\n 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.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 = parsePMTilesHeader(pmtilesHeader, pmtilesMetadata);\n if (this.props.attributions) {\n metadata.attributions = [...this.props.attributions, ...(metadata.attributions || [])];\n }\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.mimeType) {\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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"}
|
package/dist/esm/bundle.js
DELETED
package/dist/esm/bundle.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bundle.js","names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"sources":["../../src/bundle.ts"],"sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"mappings":"AACA,MAAMA,aAAa,GAAGC,OAAO,CAAC,SAAS,CAAC;AACxCC,UAAU,CAACC,OAAO,GAAGD,UAAU,CAACC,OAAO,IAAI,CAAC,CAAC;AAC7CC,MAAM,CAACC,OAAO,GAAGC,MAAM,CAACC,MAAM,CAACL,UAAU,CAACC,OAAO,EAAEH,aAAa,CAAC"}
|
package/dist/esm/index.js
DELETED
package/dist/esm/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["PMTilesSource"],"sources":["../../src/index.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nexport type {PMTilesMetadata} from './lib/parse-pmtiles';\nexport type {PMTilesSourceProps} from './pmtiles-source';\nexport {PMTilesSource} from './pmtiles-source';\n"],"mappings":"AAIA,SAAQA,aAAa,QAAO,kBAAkB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parse-pmtiles.js","names":["PMTiles","TileType","TileJSONLoader","loadPMTilesHeader","source","pmTiles","header","getHeader","metadata","getMetadata","tilejsonMetadata","Array","isArray","parsePMTilesHeader","loadPMTile","options","tileZxy","Error","z","x","y","tile","getZxy","data","partialMetadata","name","attribution","attributions","format","formatVersion","specVersion","mimeType","decodeTileType","tileType","minZoom","maxZoom","boundingBox","minLon","minLat","maxLon","maxLat","center","centerLon","centerLat","centerZoom","etag","_TileJSONLoader$parse","tileJSON","parseTextSync","call","JSON","stringify","undefined","error","includeFormatHeader","formatHeader","Mvt","Png","Jpeg","Webp","Avif"],"sources":["../../../src/lib/parse-pmtiles.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport {Source, PMTiles, Header, TileType} from 'pmtiles';\nimport type {TileJSON} from '@loaders.gl/mvt';\nimport {TileJSONLoader} from '@loaders.gl/mvt';\n\n/** Metadata describing a PMTiles file */\nexport type PMTilesMetadata = {\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 format: 'pmtiles';\n /** Version of pm tiles format used by this tileset */\n formatVersion: number;\n /** PMTiles format specific header */\n formatHeader?: Header;\n /** MIME type for tile contents. Unknown tile types will return 'application/octet-stream */\n mimeType:\n | 'application/vnd.mapbox-vector-tile'\n | 'image/png'\n | 'image/jpeg'\n | 'image/webp'\n | 'image/avif'\n | 'application/octet-stream';\n /** The original numeric tile type constant specified in the PMTiles tileset */\n tileType: TileType;\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 tileJSON?: TileJSON;\n /** Current assumption is that this is a tileJSON style metadata generated by e.g. tippecanoe */\n tilejsonMetadata?: Record<string, unknown>;\n};\n\nexport type ParsePMTilesOptions = {\n tileZxy?: [number, number, number];\n};\n\nexport async function loadPMTilesHeader(source: Source): Promise<PMTilesMetadata> {\n const pmTiles = new PMTiles(source);\n const header = await pmTiles.getHeader();\n const metadata = await pmTiles.getMetadata();\n const tilejsonMetadata =\n metadata && typeof metadata === 'object' && !Array.isArray(metadata)\n ? (metadata as Record<string, unknown>)\n : null;\n return parsePMTilesHeader(header, tilejsonMetadata);\n}\n\nexport async function loadPMTile(\n source: Source,\n options: ParsePMTilesOptions\n): Promise<ArrayBuffer | undefined> {\n const pmTiles = new PMTiles(source);\n if (!options.tileZxy) {\n throw new Error('tile zxy missing');\n }\n const [z, x, y] = options.tileZxy;\n const tile = await pmTiles.getZxy(z, x, y);\n return tile?.data;\n}\n\nexport function parsePMTilesHeader(\n header: Header,\n tilejsonMetadata: Record<string, unknown> | null,\n options?: {includeFormatHeader?: boolean}\n): PMTilesMetadata {\n const partialMetadata: Partial<PMTilesMetadata> = {};\n\n if (typeof tilejsonMetadata?.name === 'string') {\n partialMetadata.name = tilejsonMetadata.name;\n }\n\n if (typeof tilejsonMetadata?.attribution === 'string') {\n partialMetadata.attributions = [tilejsonMetadata.attribution];\n }\n\n const metadata: PMTilesMetadata = {\n ...partialMetadata,\n format: 'pmtiles',\n formatVersion: header.specVersion,\n mimeType: decodeTileType(header.tileType),\n tileType: 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 (tilejsonMetadata) {\n try {\n metadata.tileJSON =\n TileJSONLoader.parseTextSync?.(JSON.stringify(tilejsonMetadata)) || undefined;\n } catch (error) {\n // console.warn('PMTiles invalid tilejson metadata', error);\n metadata.tilejsonMetadata = tilejsonMetadata;\n }\n }\n\n if (options?.includeFormatHeader) {\n metadata.formatHeader = header;\n }\n\n return metadata;\n}\n\n/** Extract a MIME type for tiles from vector tile header */\nfunction decodeTileType(\n tileType: 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":"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"}
|
package/dist/esm/lib/sources.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sources.js","names":[],"sources":["../../../src/lib/sources.ts"],"sourcesContent":["/*\nimport {fetchFile} from '@loaders.gl/core';\n\nimport {Source as PMTilesSource, RangeResponse} from 'pmtiles';\n\n/** @note \"source\" here is a PMTiles library type, referring to *\nexport function makeSource(data: string | Blob, fetch?) {\n if (typeof data === 'string') {\n return new FetchSource(data, fetch);\n }\n if (data instanceof Blob) {\n const url = '';\n return new BlobSource(data, url);\n }\n}\n\nexport class BlobSource implements PMTilesSource {\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 return this.blob.url || '';\n }\n\n async getBytes(offset: number, length: number, signal?: AbortSignal): Promise<RangeResponse> {\n const data = await this.blob.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\nexport class FetchSource implements PMTilesSource {\n url: string;\n fetch;\n\n constructor(url: string, fetch = fetchFile) {\n this.url = url;\n this.fetch = fetch;\n }\n\n // TODO - how is this used?\n getKey() {\n return this.url;\n }\n\n async getBytes(offset: number, length: number, signal?: AbortSignal): Promise<RangeResponse> {\n let controller;\n if (!signal) {\n // ToDO why is it so important to abort in case 200?\n // TODO check this works or assert 206\n controller = new AbortController();\n signal = controller.signal;\n }\n\n let response = await fetch(this.url, {\n signal,\n headers: {Range: `bytes=${offset}-${offset + length - 1}`}\n });\n\n switch (response.status) {\n case 206: // Partial Content success\n // This is the expected success code for a range request\n break;\n\n case 200:\n // some well-behaved backends, e.g. DigitalOcean CDN, respond with 200 instead of 206\n // but we also need to detect no support for Byte Serving which is returning the whole file\n const content_length = response.headers.get('Content-Length');\n if (!content_length || Number(content_length) > length) {\n if (controller) {\n controller.abort();\n }\n throw Error(\n 'content-length header missing or exceeding request. Server must support HTTP Byte Serving.'\n );\n }\n\n case 416: // \"Range Not Satisfiable\"\n // some HTTP servers don't accept ranges beyond the end of the resource.\n // Retry with the exact length\n // TODO: can return 416 with offset > 0 if content changed, which will have a blank etag.\n // See https://github.com/protomaps/PMTiles/issues/90\n if (offset === 0) {\n const content_range = response.headers.get('Content-Range');\n if (!content_range || !content_range.startsWith('bytes *')) {\n throw Error('Missing content-length on 416 response');\n }\n const actual_length = Number(content_range.substr(8));\n response = await fetch(this.url, {\n signal,\n headers: {Range: `bytes=0-${actual_length - 1}`}\n });\n }\n break;\n\n default:\n if (response.status >= 300) {\n throw Error(`Bad response code: ${response.status}`);\n }\n }\n\n const data = await response.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\n/*\nclass TestNodeFileSource implements Source {\n buffer: ArrayBuffer;\n path: string;\n key: string;\n etag?: string;\n\n constructor(path: string, key: string) {\n this.path = path;\n this.buffer = fs.readFileSync(path);\n this.key = key;\n }\n\n getKey() {\n return this.key;\n }\n\n replaceData(path: string) {\n this.path = path;\n this.buffer = fs.readFileSync(path);\n }\n\n async getBytes(offset: number, length: number): Promise<RangeResponse> {\n const slice = new Uint8Array(this.buffer.slice(offset, offset + length))\n .buffer;\n return { data: slice, etag: this.etag };\n }\n}\n*/\n"],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pmtiles-source.js","names":["DataSource","resolvePath","ImageLoader","MVTLoader","PMTiles","parsePMTilesHeader","BlobSource","constructor","blob","key","_defineProperty","getKey","url","getBytes","offset","length","signal","slice","data","arrayBuffer","PMTilesSource","props","pmtiles","getTileData","bind","metadata","getMetadata","pmtilesHeader","getHeader","pmtilesMetadata","attributions","getTile","tileParams","x","y","zoom","z","rangeResponse","getZxy","index","mimeType","getVectorTile","layers","getImageTile","parse","loadOptions","_this$loadOptions","shape","mvt","coordinates","tileIndex"],"sources":["../../src/pmtiles-source.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {GetTileParameters, 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 {PMTiles, Source, RangeResponse} from 'pmtiles';\n\nimport type {PMTilesMetadata} from './lib/parse-pmtiles';\nimport {parsePMTilesHeader} from './lib/parse-pmtiles';\nimport {TileLoadParameters} from 'modules/loader-utils/src/lib/sources/tile-source';\n\n// export const PMTilesService: Service = {\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// };\n\n/**\n * WIP - Loader for pmtiles metadata\n * @note loads metadata only. To load individual tiles, use PMTilesSource\nexport const PMTilesLoader: LoaderWithParser<PMTilesMetadata, never, PMTilesLoaderOptions> = {\n name: 'PMTiles',\n id: 'pmtiles',\n module: 'pmtiles',\n version: VERSION,\n worker: true,\n extensions: ['pmtiles'],\n mimeTypes: ['application/octet-stream'],\n options: {\n pmtiles: {}\n },\n parse: async (arrayBuffer, options) => {\n throw new Error('not implemented');\n }\n};\n */\n\nexport type PMTilesSourceProps = DataSourceProps & {\n url: string | Blob;\n attributions?: string[];\n};\n\nexport class BlobSource implements 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(offset: number, length: number, signal?: AbortSignal): Promise<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/**\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 props: PMTilesSourceProps;\n 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.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 = parsePMTilesHeader(pmtilesHeader, pmtilesMetadata);\n if (this.props.attributions) {\n metadata.attributions = [...this.props.attributions, ...(metadata.attributions || [])];\n }\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.mimeType) {\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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"}
|
package/dist/lib/sources.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
//# sourceMappingURL=sources.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sources.d.ts","sourceRoot":"","sources":["../../src/lib/sources.ts"],"names":[],"mappings":""}
|
package/src/bundle.ts
DELETED