@basemaps/lambda-tiler 7.0.0 → 7.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +40 -0
- package/build/__tests__/config.data.d.ts +0 -1
- package/build/__tests__/config.data.js +2 -6
- package/build/__tests__/config.data.js.map +1 -1
- package/build/__tests__/index.test.d.ts +0 -1
- package/build/__tests__/index.test.js +28 -27
- package/build/__tests__/index.test.js.map +1 -1
- package/build/__tests__/tile.style.json.test.d.ts +0 -1
- package/build/__tests__/tile.style.json.test.js +38 -37
- package/build/__tests__/tile.style.json.test.js.map +1 -1
- package/build/__tests__/wmts.capability.test.d.ts +0 -1
- package/build/__tests__/wmts.capability.test.js +111 -122
- package/build/__tests__/wmts.capability.test.js.map +1 -1
- package/build/__tests__/xyz.util.d.ts +0 -1
- package/build/cli/render.preview.d.ts +0 -1
- package/build/cli/render.preview.js +13 -9
- package/build/cli/render.preview.js.map +1 -1
- package/build/cli/render.tile.d.ts +0 -1
- package/build/cli/render.tile.js +25 -17
- package/build/cli/render.tile.js.map +1 -1
- package/build/index.d.ts +0 -1
- package/build/index.js +24 -20
- package/build/index.js.map +1 -1
- package/build/routes/__tests__/attribution.test.d.ts +0 -1
- package/build/routes/__tests__/attribution.test.js +38 -37
- package/build/routes/__tests__/attribution.test.js.map +1 -1
- package/build/routes/__tests__/fonts.test.d.ts +0 -1
- package/build/routes/__tests__/fonts.test.js +61 -63
- package/build/routes/__tests__/fonts.test.js.map +1 -1
- package/build/routes/__tests__/health.test.d.ts +0 -1
- package/build/routes/__tests__/health.test.js +16 -16
- package/build/routes/__tests__/health.test.js.map +1 -1
- package/build/routes/__tests__/imagery.test.d.ts +0 -1
- package/build/routes/__tests__/imagery.test.js +10 -9
- package/build/routes/__tests__/imagery.test.js.map +1 -1
- package/build/routes/__tests__/memory.fs.d.ts +2 -3
- package/build/routes/__tests__/preview.index.test.d.ts +0 -1
- package/build/routes/__tests__/preview.index.test.js +88 -42
- package/build/routes/__tests__/preview.index.test.js.map +1 -1
- package/build/routes/__tests__/sprites.test.d.ts +0 -1
- package/build/routes/__tests__/sprites.test.js +34 -34
- package/build/routes/__tests__/sprites.test.js.map +1 -1
- package/build/routes/__tests__/tile.json.test.d.ts +0 -1
- package/build/routes/__tests__/tile.json.test.js +45 -51
- package/build/routes/__tests__/tile.json.test.js.map +1 -1
- package/build/routes/__tests__/tile.style.json.test.d.ts +0 -1
- package/build/routes/__tests__/tile.style.json.test.js +49 -50
- package/build/routes/__tests__/tile.style.json.test.js.map +1 -1
- package/build/routes/__tests__/wmts.test.d.ts +0 -1
- package/build/routes/__tests__/wmts.test.js +27 -20
- package/build/routes/__tests__/wmts.test.js.map +1 -1
- package/build/routes/__tests__/xyz.test.d.ts +0 -1
- package/build/routes/__tests__/xyz.test.js +97 -49
- package/build/routes/__tests__/xyz.test.js.map +1 -1
- package/build/routes/attribution.d.ts +1 -1
- package/build/routes/attribution.js +4 -5
- package/build/routes/attribution.js.map +1 -1
- package/build/routes/config.d.ts +0 -1
- package/build/routes/config.js +1 -2
- package/build/routes/config.js.map +1 -1
- package/build/routes/fonts.d.ts +0 -1
- package/build/routes/fonts.js +2 -3
- package/build/routes/fonts.js.map +1 -1
- package/build/routes/health.d.ts +1 -2
- package/build/routes/health.js +5 -15
- package/build/routes/health.js.map +1 -1
- package/build/routes/imagery.d.ts +0 -1
- package/build/routes/imagery.js +1 -1
- package/build/routes/imagery.js.map +1 -1
- package/build/routes/ping.d.ts +0 -1
- package/build/routes/ping.js +1 -1
- package/build/routes/ping.js.map +1 -1
- package/build/routes/preview.d.ts +6 -5
- package/build/routes/preview.index.d.ts +0 -1
- package/build/routes/preview.index.js +6 -5
- package/build/routes/preview.index.js.map +1 -1
- package/build/routes/preview.js +35 -10
- package/build/routes/preview.js.map +1 -1
- package/build/routes/sprites.d.ts +0 -1
- package/build/routes/sprites.js +2 -4
- package/build/routes/sprites.js.map +1 -1
- package/build/routes/tile.json.d.ts +0 -1
- package/build/routes/tile.json.js +10 -5
- package/build/routes/tile.json.js.map +1 -1
- package/build/routes/tile.style.json.d.ts +1 -1
- package/build/routes/tile.style.json.js +79 -16
- package/build/routes/tile.style.json.js.map +1 -1
- package/build/routes/tile.wmts.d.ts +0 -1
- package/build/routes/tile.wmts.js +8 -9
- package/build/routes/tile.wmts.js.map +1 -1
- package/build/routes/tile.xyz.d.ts +0 -1
- package/build/routes/tile.xyz.js.map +1 -1
- package/build/routes/tile.xyz.raster.d.ts +7 -8
- package/build/routes/tile.xyz.raster.js +22 -15
- package/build/routes/tile.xyz.raster.js.map +1 -1
- package/build/routes/tile.xyz.vector.d.ts +0 -1
- package/build/routes/tile.xyz.vector.js +4 -3
- package/build/routes/tile.xyz.vector.js.map +1 -1
- package/build/routes/version.d.ts +0 -1
- package/build/routes/version.js +3 -4
- package/build/routes/version.js.map +1 -1
- package/build/util/__test__/config.loader.test.d.ts +0 -1
- package/build/util/__test__/config.loader.test.js +35 -34
- package/build/util/__test__/config.loader.test.js.map +1 -1
- package/build/util/__test__/filter.test.d.ts +0 -1
- package/build/util/__test__/filter.test.js +17 -16
- package/build/util/__test__/filter.test.js.map +1 -1
- package/build/util/__test__/validate.test.d.ts +0 -1
- package/build/util/__test__/validate.test.js +26 -43
- package/build/util/__test__/validate.test.js.map +1 -1
- package/build/util/assets.provider.d.ts +5 -5
- package/build/util/assets.provider.js +8 -8
- package/build/util/assets.provider.js.map +1 -1
- package/build/util/config.cache.d.ts +2 -2
- package/build/util/config.cache.js +14 -3
- package/build/util/config.cache.js.map +1 -1
- package/build/util/config.loader.d.ts +0 -1
- package/build/util/config.loader.js +11 -12
- package/build/util/config.loader.js.map +1 -1
- package/build/util/cotar.serve.d.ts +3 -3
- package/build/util/cotar.serve.js +2 -2
- package/build/util/cotar.serve.js.map +1 -1
- package/build/util/etag.d.ts +0 -1
- package/build/util/etag.js.map +1 -1
- package/build/util/filter.d.ts +0 -1
- package/build/util/filter.js +4 -5
- package/build/util/filter.js.map +1 -1
- package/build/util/response.d.ts +0 -1
- package/build/util/source.cache.d.ts +8 -9
- package/build/util/source.cache.js +27 -24
- package/build/util/source.cache.js.map +1 -1
- package/build/util/swapping.lru.d.ts +0 -1
- package/build/util/swapping.lru.js +48 -7
- package/build/util/swapping.lru.js.map +1 -1
- package/build/util/validate.d.ts +17 -5
- package/build/util/validate.js +51 -15
- package/build/util/validate.js.map +1 -1
- package/build/wmts.capability.d.ts +1 -2
- package/build/wmts.capability.js +81 -12
- package/build/wmts.capability.js.map +1 -1
- package/bundle.sh +2 -2
- package/package.json +16 -18
- package/scripts/create.deployment.package.mjs +4 -11
- package/src/__tests__/config.data.ts +2 -6
- package/src/__tests__/index.test.ts +29 -27
- package/src/__tests__/tile.style.json.test.ts +40 -37
- package/src/__tests__/wmts.capability.test.ts +139 -120
- package/src/cli/render.preview.ts +14 -9
- package/src/cli/render.tile.ts +27 -18
- package/src/index.ts +28 -23
- package/src/routes/__tests__/attribution.test.ts +40 -37
- package/src/routes/__tests__/fonts.test.ts +68 -64
- package/src/routes/__tests__/health.test.ts +18 -17
- package/src/routes/__tests__/imagery.test.ts +11 -9
- package/src/routes/__tests__/preview.index.test.ts +114 -40
- package/src/routes/__tests__/sprites.test.ts +39 -34
- package/src/routes/__tests__/tile.json.test.ts +41 -39
- package/src/routes/__tests__/tile.style.json.test.ts +49 -46
- package/src/routes/__tests__/wmts.test.ts +28 -20
- package/src/routes/__tests__/xyz.test.ts +134 -55
- package/src/routes/attribution.ts +2 -2
- package/src/routes/config.ts +1 -0
- package/src/routes/fonts.ts +3 -3
- package/src/routes/health.ts +7 -13
- package/src/routes/imagery.ts +2 -1
- package/src/routes/ping.ts +1 -1
- package/src/routes/preview.index.ts +9 -5
- package/src/routes/preview.ts +44 -15
- package/src/routes/sprites.ts +4 -5
- package/src/routes/tile.json.ts +9 -2
- package/src/routes/tile.style.json.ts +89 -13
- package/src/routes/tile.wmts.ts +4 -3
- package/src/routes/tile.xyz.raster.ts +30 -23
- package/src/routes/tile.xyz.ts +1 -0
- package/src/routes/tile.xyz.vector.ts +5 -3
- package/src/routes/version.ts +3 -3
- package/src/util/__test__/config.loader.test.ts +38 -34
- package/src/util/__test__/filter.test.ts +19 -16
- package/src/util/__test__/validate.test.ts +28 -43
- package/src/util/assets.provider.ts +10 -9
- package/src/util/config.cache.ts +4 -3
- package/src/util/config.loader.ts +13 -13
- package/src/util/cotar.serve.ts +3 -2
- package/src/util/source.cache.ts +15 -26
- package/src/util/validate.ts +61 -14
- package/src/wmts.capability.ts +3 -3
- package/tsconfig.json +1 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/build/__tests__/config.data.d.ts.map +0 -1
- package/build/__tests__/index.test.d.ts.map +0 -1
- package/build/__tests__/tile.style.json.test.d.ts.map +0 -1
- package/build/__tests__/wmts.capability.test.d.ts.map +0 -1
- package/build/__tests__/xyz.util.d.ts.map +0 -1
- package/build/cli/render.preview.d.ts.map +0 -1
- package/build/cli/render.tile.d.ts.map +0 -1
- package/build/index.d.ts.map +0 -1
- package/build/routes/__tests__/attribution.test.d.ts.map +0 -1
- package/build/routes/__tests__/fonts.test.d.ts.map +0 -1
- package/build/routes/__tests__/health.test.d.ts.map +0 -1
- package/build/routes/__tests__/imagery.test.d.ts.map +0 -1
- package/build/routes/__tests__/memory.fs.d.ts.map +0 -1
- package/build/routes/__tests__/preview.index.test.d.ts.map +0 -1
- package/build/routes/__tests__/sprites.test.d.ts.map +0 -1
- package/build/routes/__tests__/tile.json.test.d.ts.map +0 -1
- package/build/routes/__tests__/tile.style.json.test.d.ts.map +0 -1
- package/build/routes/__tests__/wmts.test.d.ts.map +0 -1
- package/build/routes/__tests__/xyz.test.d.ts.map +0 -1
- package/build/routes/attribution.d.ts.map +0 -1
- package/build/routes/config.d.ts.map +0 -1
- package/build/routes/fonts.d.ts.map +0 -1
- package/build/routes/health.d.ts.map +0 -1
- package/build/routes/imagery.d.ts.map +0 -1
- package/build/routes/ping.d.ts.map +0 -1
- package/build/routes/preview.d.ts.map +0 -1
- package/build/routes/preview.index.d.ts.map +0 -1
- package/build/routes/sprites.d.ts.map +0 -1
- package/build/routes/tile.json.d.ts.map +0 -1
- package/build/routes/tile.style.json.d.ts.map +0 -1
- package/build/routes/tile.wmts.d.ts.map +0 -1
- package/build/routes/tile.xyz.d.ts.map +0 -1
- package/build/routes/tile.xyz.raster.d.ts.map +0 -1
- package/build/routes/tile.xyz.vector.d.ts.map +0 -1
- package/build/routes/version.d.ts.map +0 -1
- package/build/util/__test__/config.loader.test.d.ts.map +0 -1
- package/build/util/__test__/filter.test.d.ts.map +0 -1
- package/build/util/__test__/validate.test.d.ts.map +0 -1
- package/build/util/assets.provider.d.ts.map +0 -1
- package/build/util/config.cache.d.ts.map +0 -1
- package/build/util/config.loader.d.ts.map +0 -1
- package/build/util/cotar.serve.d.ts.map +0 -1
- package/build/util/etag.d.ts.map +0 -1
- package/build/util/filter.d.ts.map +0 -1
- package/build/util/response.d.ts.map +0 -1
- package/build/util/source.cache.d.ts.map +0 -1
- package/build/util/source.tracer.d.ts +0 -18
- package/build/util/source.tracer.d.ts.map +0 -1
- package/build/util/source.tracer.js +0 -26
- package/build/util/source.tracer.js.map +0 -1
- package/build/util/swapping.lru.d.ts.map +0 -1
- package/build/util/validate.d.ts.map +0 -1
- package/build/wmts.capability.d.ts.map +0 -1
- package/src/util/source.tracer.ts +0 -38
package/src/util/validate.ts
CHANGED
|
@@ -1,14 +1,22 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ConfigTileSetRaster, ConfigTileSetRasterOutput } from '@basemaps/config';
|
|
2
|
+
import { ImageFormat, LatLon, Projection, TileMatrixSet, TileMatrixSets } from '@basemaps/geo';
|
|
2
3
|
import { Const, isValidApiKey, truncateApiKey } from '@basemaps/shared';
|
|
3
4
|
import { getImageFormat } from '@basemaps/tiler';
|
|
4
5
|
import { LambdaHttpRequest, LambdaHttpResponse } from '@linzjs/lambda';
|
|
5
|
-
|
|
6
|
+
|
|
7
|
+
import { TileXyzGet } from '../routes/tile.xyz.js';
|
|
6
8
|
|
|
7
9
|
export interface TileXyz {
|
|
10
|
+
/** Tile XYZ location */
|
|
8
11
|
tile: { x: number; y: number; z: number };
|
|
12
|
+
/** Name of the tile set to use */
|
|
9
13
|
tileSet: string;
|
|
14
|
+
/** TileMatrix that is requested */
|
|
10
15
|
tileMatrix: TileMatrixSet;
|
|
11
|
-
|
|
16
|
+
/** Output tile format */
|
|
17
|
+
tileType: string;
|
|
18
|
+
/** Optional processing pipeline to use */
|
|
19
|
+
pipeline?: string | null;
|
|
12
20
|
}
|
|
13
21
|
|
|
14
22
|
export interface TileMatrixRequest {
|
|
@@ -18,6 +26,7 @@ export interface TileMatrixRequest {
|
|
|
18
26
|
export const Validate = {
|
|
19
27
|
/**
|
|
20
28
|
* Validate that the api key exists and is valid
|
|
29
|
+
*
|
|
21
30
|
* @throws if api key is not valid
|
|
22
31
|
*/
|
|
23
32
|
apiKey(req: LambdaHttpRequest): string {
|
|
@@ -49,13 +58,6 @@ export const Validate = {
|
|
|
49
58
|
return [...output.values()];
|
|
50
59
|
},
|
|
51
60
|
|
|
52
|
-
getTileFormat(tileType: string): ImageFormat | VectorFormat | null {
|
|
53
|
-
const ext = getImageFormat(tileType);
|
|
54
|
-
if (ext) return ext;
|
|
55
|
-
if (tileType === VectorFormat.MapboxVectorTiles) return VectorFormat.MapboxVectorTiles;
|
|
56
|
-
return null;
|
|
57
|
-
},
|
|
58
|
-
|
|
59
61
|
/** Validate that a lat and lon are between -90/90 and -180/180 */
|
|
60
62
|
getLocation(lonIn: string, latIn: string): LatLon | null {
|
|
61
63
|
const lat = parseFloat(latIn);
|
|
@@ -89,9 +91,9 @@ export const Validate = {
|
|
|
89
91
|
req.set('tileMatrix', tileMatrix.identifier);
|
|
90
92
|
req.set('projection', tileMatrix.projection.code);
|
|
91
93
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
req.set('extension', tileType);
|
|
94
|
+
if (req.params.tileType == null) throw new LambdaHttpResponse(404, 'Tile extension not found');
|
|
95
|
+
|
|
96
|
+
req.set('extension', req.params.tileType);
|
|
95
97
|
|
|
96
98
|
if (isNaN(z) || z > tileMatrix.maxZoom || z < 0) throw new LambdaHttpResponse(404, `Zoom not found: ${z}`);
|
|
97
99
|
|
|
@@ -99,7 +101,16 @@ export const Validate = {
|
|
|
99
101
|
if (isNaN(x) || x < 0 || x > zoom.matrixWidth) throw new LambdaHttpResponse(404, `X not found: ${x}`);
|
|
100
102
|
if (isNaN(y) || y < 0 || y > zoom.matrixHeight) throw new LambdaHttpResponse(404, `Y not found: ${y}`);
|
|
101
103
|
|
|
102
|
-
const
|
|
104
|
+
const pipeline = req.query.get('pipeline');
|
|
105
|
+
if (pipeline) req.set('pipeline', pipeline);
|
|
106
|
+
|
|
107
|
+
const xyzData = {
|
|
108
|
+
tile: { x, y, z },
|
|
109
|
+
tileSet: req.params.tileSet,
|
|
110
|
+
tileMatrix,
|
|
111
|
+
tileType: req.params.tileType,
|
|
112
|
+
pipeline: req.query.get('pipeline'),
|
|
113
|
+
};
|
|
103
114
|
req.set('xyz', xyzData.tile);
|
|
104
115
|
|
|
105
116
|
const latLon = Projection.tileCenterToLatLon(tileMatrix, xyzData.tile);
|
|
@@ -107,4 +118,40 @@ export const Validate = {
|
|
|
107
118
|
|
|
108
119
|
return xyzData;
|
|
109
120
|
},
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Lookup the raster configuration pipeline for a output tile type
|
|
124
|
+
*
|
|
125
|
+
* Defaults to standard image format output if no outputs are defined on the tileset
|
|
126
|
+
*/
|
|
127
|
+
pipeline(tileSet: ConfigTileSetRaster, tileType: string, pipeline?: string | null): ConfigTileSetRasterOutput | null {
|
|
128
|
+
if (pipeline != null && pipeline !== 'rgba') {
|
|
129
|
+
if (tileSet.outputs == null) throw new LambdaHttpResponse(404, 'TileSet has no pipelines');
|
|
130
|
+
const output = tileSet.outputs.find((f) => f.name === pipeline);
|
|
131
|
+
if (output == null) throw new LambdaHttpResponse(404, `TileSet has no pipeline named "${pipeline}"`);
|
|
132
|
+
|
|
133
|
+
const validFormats = output.format ?? ['webp', 'png', 'jpeg', 'avif'];
|
|
134
|
+
if (!validFormats.includes(tileType as ImageFormat)) {
|
|
135
|
+
throw new LambdaHttpResponse(400, `TileSet pipeline "${pipeline}" cannot be output as ${tileType}`);
|
|
136
|
+
}
|
|
137
|
+
return output;
|
|
138
|
+
}
|
|
139
|
+
// If the tileset has pipelines defined the user MUST specify which one
|
|
140
|
+
if (tileSet.outputs) {
|
|
141
|
+
throw new LambdaHttpResponse(404, 'TileSet needs pipeline: ' + tileSet.outputs.map((f) => f.name));
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
// Generate a default RGBA configuration
|
|
145
|
+
const img = getImageFormat(tileType ?? 'webp');
|
|
146
|
+
if (img == null) return null;
|
|
147
|
+
return {
|
|
148
|
+
title: `RGBA ${tileType}`,
|
|
149
|
+
name: 'rgba',
|
|
150
|
+
output: {
|
|
151
|
+
type: [img],
|
|
152
|
+
lossless: img === 'png' ? true : false,
|
|
153
|
+
background: tileSet.background,
|
|
154
|
+
},
|
|
155
|
+
} as ConfigTileSetRasterOutput;
|
|
156
|
+
},
|
|
110
157
|
};
|
package/src/wmts.capability.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { ConfigImagery, ConfigLayer, ConfigTileSet, standardizeLayerName } from '@basemaps/config';
|
|
2
|
-
import { Bounds, GoogleTms, ImageFormat, Projection, TileMatrixSet, WmtsProvider } from '@basemaps/geo';
|
|
2
|
+
import { BoundingBox, Bounds, GoogleTms, ImageFormat, Projection, TileMatrixSet, WmtsProvider } from '@basemaps/geo';
|
|
3
3
|
import { toQueryString, V, VNodeElement } from '@basemaps/shared';
|
|
4
4
|
import { ImageFormatOrder } from '@basemaps/tiler';
|
|
5
|
-
import { BoundingBox } from '@cogeotiff/core';
|
|
6
5
|
import { BBox } from '@linzjs/geojson';
|
|
7
6
|
|
|
8
7
|
const CapabilitiesAttrs = {
|
|
@@ -245,7 +244,7 @@ export class WmtsCapabilities extends WmtsBuilder {
|
|
|
245
244
|
minZoom = 0;
|
|
246
245
|
maxZoom = 32;
|
|
247
246
|
/** Wmts tileSet layer and imagery layers information */
|
|
248
|
-
tileSet
|
|
247
|
+
tileSet?: ConfigTileSet;
|
|
249
248
|
configLayers?: ConfigLayer[];
|
|
250
249
|
|
|
251
250
|
/** Wmts Provider information */
|
|
@@ -370,6 +369,7 @@ export class WmtsCapabilities extends WmtsBuilder {
|
|
|
370
369
|
}
|
|
371
370
|
|
|
372
371
|
toVNode(): VNodeElement {
|
|
372
|
+
if (this.tileSet == null) throw new Error('No Tileset provided');
|
|
373
373
|
// Prepare provider vNode if exists
|
|
374
374
|
const provider = this.toProviderVNode(this.provider);
|
|
375
375
|
|