@basemaps/lambda-tiler 6.30.0 → 6.32.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 +46 -0
- package/build/__tests__/config.data.d.ts +6 -1
- package/build/__tests__/config.data.d.ts.map +1 -1
- package/build/__tests__/config.data.js +33 -2
- package/build/__tests__/config.data.js.map +1 -1
- package/build/__tests__/index.test.js +3 -13
- package/build/__tests__/index.test.js.map +1 -1
- package/build/__tests__/wmts.capability.test.js +88 -6
- package/build/__tests__/wmts.capability.test.js.map +1 -1
- package/build/__tests__/xyz.util.d.ts +7 -9
- package/build/__tests__/xyz.util.d.ts.map +1 -1
- package/build/__tests__/xyz.util.js +14 -20
- package/build/__tests__/xyz.util.js.map +1 -1
- package/build/index.d.ts +0 -2
- package/build/index.d.ts.map +1 -1
- package/build/index.js +57 -26
- package/build/index.js.map +1 -1
- package/build/routes/__tests__/attribution.test.js +350 -400
- package/build/routes/__tests__/attribution.test.js.map +1 -1
- package/build/routes/__tests__/fonts.test.js +11 -5
- package/build/routes/__tests__/fonts.test.js.map +1 -1
- package/build/routes/__tests__/health.test.js +16 -13
- package/build/routes/__tests__/health.test.js.map +1 -1
- package/build/routes/__tests__/sprites.test.js +6 -0
- package/build/routes/__tests__/sprites.test.js.map +1 -1
- package/build/routes/__tests__/tile.json.test.d.ts +2 -0
- package/build/routes/__tests__/tile.json.test.d.ts.map +1 -0
- package/build/routes/__tests__/tile.json.test.js +124 -0
- package/build/routes/__tests__/tile.json.test.js.map +1 -0
- package/build/routes/__tests__/tile.style.json.test.d.ts +2 -0
- package/build/routes/__tests__/tile.style.json.test.d.ts.map +1 -0
- package/build/routes/__tests__/tile.style.json.test.js +95 -0
- package/build/routes/__tests__/tile.style.json.test.js.map +1 -0
- package/build/routes/__tests__/wmts.test.js +5 -44
- package/build/routes/__tests__/wmts.test.js.map +1 -1
- package/build/{__tests__ → routes/__tests__}/xyz.test.d.ts +0 -0
- package/build/routes/__tests__/xyz.test.d.ts.map +1 -0
- package/build/routes/__tests__/xyz.test.js +99 -0
- package/build/routes/__tests__/xyz.test.js.map +1 -0
- package/build/routes/attribution.d.ts +7 -5
- package/build/routes/attribution.d.ts.map +1 -1
- package/build/routes/attribution.js +49 -91
- package/build/routes/attribution.js.map +1 -1
- package/build/routes/fonts.d.ts +1 -1
- package/build/routes/fonts.d.ts.map +1 -1
- package/build/routes/fonts.js +30 -15
- package/build/routes/fonts.js.map +1 -1
- package/build/routes/health.d.ts +3 -3
- package/build/routes/health.d.ts.map +1 -1
- package/build/routes/health.js +15 -13
- package/build/routes/health.js.map +1 -1
- package/build/routes/imagery.d.ts.map +1 -1
- package/build/routes/imagery.js +11 -10
- package/build/routes/imagery.js.map +1 -1
- package/build/routes/ping.d.ts +3 -0
- package/build/routes/ping.d.ts.map +1 -0
- package/build/routes/ping.js +7 -0
- package/build/routes/ping.js.map +1 -0
- package/build/routes/sprites.d.ts.map +1 -1
- package/build/routes/sprites.js +16 -10
- package/build/routes/sprites.js.map +1 -1
- package/build/routes/tile.json.d.ts +7 -1
- package/build/routes/tile.json.d.ts.map +1 -1
- package/build/routes/tile.json.js +18 -21
- package/build/routes/tile.json.js.map +1 -1
- package/build/routes/tile.style.json.d.ts +6 -1
- package/build/routes/tile.style.json.d.ts.map +1 -1
- package/build/routes/tile.style.json.js +10 -13
- package/build/routes/tile.style.json.js.map +1 -1
- package/build/routes/tile.wmts.d.ts +9 -3
- package/build/routes/tile.wmts.d.ts.map +1 -1
- package/build/routes/tile.wmts.js +26 -35
- package/build/routes/tile.wmts.js.map +1 -1
- package/build/routes/tile.xyz.d.ts +14 -4
- package/build/routes/tile.xyz.d.ts.map +1 -1
- package/build/routes/tile.xyz.js +21 -17
- package/build/routes/tile.xyz.js.map +1 -1
- package/build/routes/tile.xyz.raster.d.ts +11 -0
- package/build/routes/tile.xyz.raster.d.ts.map +1 -0
- package/build/routes/tile.xyz.raster.js +90 -0
- package/build/routes/tile.xyz.raster.js.map +1 -0
- package/build/routes/tile.xyz.vector.d.ts +8 -0
- package/build/routes/tile.xyz.vector.d.ts.map +1 -0
- package/build/routes/tile.xyz.vector.js +46 -0
- package/build/routes/tile.xyz.vector.js.map +1 -0
- package/build/routes/version.d.ts +3 -0
- package/build/routes/version.d.ts.map +1 -0
- package/build/routes/version.js +9 -0
- package/build/routes/version.js.map +1 -0
- package/build/util/__test__/validate.test.d.ts +2 -0
- package/build/util/__test__/validate.test.d.ts.map +1 -0
- package/build/util/__test__/validate.test.js +66 -0
- package/build/util/__test__/validate.test.js.map +1 -0
- package/build/{cotar.cache.d.ts → util/cotar.serve.d.ts} +3 -8
- package/build/util/cotar.serve.d.ts.map +1 -0
- package/build/util/cotar.serve.js +41 -0
- package/build/util/cotar.serve.js.map +1 -0
- package/build/util/etag.d.ts +6 -0
- package/build/util/etag.d.ts.map +1 -0
- package/build/util/etag.js +20 -0
- package/build/util/etag.js.map +1 -0
- package/build/util/response.d.ts +4 -0
- package/build/util/response.d.ts.map +1 -0
- package/build/util/response.js +4 -0
- package/build/util/response.js.map +1 -0
- package/build/util/source.cache.d.ts +28 -0
- package/build/util/source.cache.d.ts.map +1 -0
- package/build/util/source.cache.js +53 -0
- package/build/util/source.cache.js.map +1 -0
- package/build/{source.tracer.d.ts → util/source.tracer.d.ts} +1 -0
- package/build/util/source.tracer.d.ts.map +1 -0
- package/build/{source.tracer.js → util/source.tracer.js} +3 -0
- package/build/util/source.tracer.js.map +1 -0
- package/build/util/swapping.lru.d.ts +21 -0
- package/build/util/swapping.lru.d.ts.map +1 -0
- package/build/util/swapping.lru.js +56 -0
- package/build/util/swapping.lru.js.map +1 -0
- package/build/util/validate.d.ts +46 -0
- package/build/util/validate.d.ts.map +1 -0
- package/build/util/validate.js +107 -0
- package/build/util/validate.js.map +1 -0
- package/build/wmts.capability.d.ts +1 -1
- package/build/wmts.capability.d.ts.map +1 -1
- package/build/wmts.capability.js +24 -8
- package/build/wmts.capability.js.map +1 -1
- package/dist/index.js +78 -76
- package/dist/node_modules/.package-lock.json +1 -1
- package/dist/package-lock.json +2 -2
- package/dist/package.json +1 -1
- package/package.json +10 -10
- package/src/__tests__/config.data.ts +41 -3
- package/src/__tests__/index.test.ts +3 -19
- package/src/__tests__/wmts.capability.test.ts +109 -6
- package/src/__tests__/xyz.util.ts +18 -21
- package/src/index.ts +66 -29
- package/src/routes/__tests__/attribution.test.ts +356 -403
- package/src/routes/__tests__/fonts.test.ts +11 -5
- package/src/routes/__tests__/health.test.ts +17 -13
- package/src/routes/__tests__/sprites.test.ts +6 -1
- package/src/routes/__tests__/tile.json.test.ts +145 -0
- package/src/routes/__tests__/tile.style.json.test.ts +105 -0
- package/src/routes/__tests__/wmts.test.ts +5 -55
- package/src/routes/__tests__/xyz.test.ts +119 -0
- package/src/routes/attribution.ts +59 -111
- package/src/routes/fonts.ts +29 -15
- package/src/routes/health.ts +17 -16
- package/src/routes/imagery.ts +10 -9
- package/src/routes/ping.ts +8 -0
- package/src/routes/sprites.ts +16 -10
- package/src/routes/tile.json.ts +24 -18
- package/src/routes/tile.style.json.ts +15 -12
- package/src/routes/tile.wmts.ts +30 -31
- package/src/routes/tile.xyz.raster.ts +106 -0
- package/src/routes/tile.xyz.ts +31 -16
- package/src/routes/tile.xyz.vector.ts +47 -0
- package/src/routes/version.ts +8 -0
- package/src/util/__test__/validate.test.ts +74 -0
- package/src/util/cotar.serve.ts +46 -0
- package/src/util/etag.ts +20 -0
- package/src/util/response.ts +4 -0
- package/src/util/source.cache.ts +71 -0
- package/src/{source.tracer.ts → util/source.tracer.ts} +4 -0
- package/src/util/swapping.lru.ts +63 -0
- package/src/util/validate.ts +126 -0
- package/src/wmts.capability.ts +30 -13
- package/tsconfig.tsbuildinfo +1 -1
- package/build/__tests__/route.test.d.ts +0 -2
- package/build/__tests__/route.test.d.ts.map +0 -1
- package/build/__tests__/route.test.js +0 -21
- package/build/__tests__/route.test.js.map +0 -1
- package/build/__tests__/tiff.cache.test.d.ts +0 -2
- package/build/__tests__/tiff.cache.test.d.ts.map +0 -1
- package/build/__tests__/tiff.cache.test.js +0 -59
- package/build/__tests__/tiff.cache.test.js.map +0 -1
- package/build/__tests__/tile.cache.key.test.d.ts +0 -2
- package/build/__tests__/tile.cache.key.test.d.ts.map +0 -1
- package/build/__tests__/tile.cache.key.test.js +0 -49
- package/build/__tests__/tile.cache.key.test.js.map +0 -1
- package/build/__tests__/tile.set.cache.test.d.ts +0 -2
- package/build/__tests__/tile.set.cache.test.d.ts.map +0 -1
- package/build/__tests__/tile.set.cache.test.js +0 -72
- package/build/__tests__/tile.set.cache.test.js.map +0 -1
- package/build/__tests__/tile.set.test.d.ts +0 -2
- package/build/__tests__/tile.set.test.d.ts.map +0 -1
- package/build/__tests__/tile.set.test.js +0 -12
- package/build/__tests__/tile.set.test.js.map +0 -1
- package/build/__tests__/xyz.test.d.ts.map +0 -1
- package/build/__tests__/xyz.test.js +0 -275
- package/build/__tests__/xyz.test.js.map +0 -1
- package/build/api.key.d.ts +0 -2
- package/build/api.key.d.ts.map +0 -1
- package/build/api.key.js +0 -24
- package/build/api.key.js.map +0 -1
- package/build/cli/dump.d.ts +0 -2
- package/build/cli/dump.d.ts.map +0 -1
- package/build/cli/dump.js +0 -48
- package/build/cli/dump.js.map +0 -1
- package/build/cli/tile.set.local.d.ts +0 -12
- package/build/cli/tile.set.local.d.ts.map +0 -1
- package/build/cli/tile.set.local.js +0 -40
- package/build/cli/tile.set.local.js.map +0 -1
- package/build/cotar.cache.d.ts.map +0 -1
- package/build/cotar.cache.js +0 -50
- package/build/cotar.cache.js.map +0 -1
- package/build/router.d.ts +0 -15
- package/build/router.d.ts.map +0 -1
- package/build/router.js +0 -50
- package/build/router.js.map +0 -1
- package/build/routes/api.d.ts +0 -4
- package/build/routes/api.d.ts.map +0 -1
- package/build/routes/api.js +0 -14
- package/build/routes/api.js.map +0 -1
- package/build/routes/esri/rest.d.ts +0 -10
- package/build/routes/esri/rest.d.ts.map +0 -1
- package/build/routes/esri/rest.js +0 -88
- package/build/routes/esri/rest.js.map +0 -1
- package/build/routes/response.d.ts +0 -4
- package/build/routes/response.d.ts.map +0 -1
- package/build/routes/response.js +0 -4
- package/build/routes/response.js.map +0 -1
- package/build/routes/tile.d.ts +0 -3
- package/build/routes/tile.d.ts.map +0 -1
- package/build/routes/tile.etag.d.ts +0 -11
- package/build/routes/tile.etag.d.ts.map +0 -1
- package/build/routes/tile.etag.js +0 -30
- package/build/routes/tile.etag.js.map +0 -1
- package/build/routes/tile.js +0 -28
- package/build/routes/tile.js.map +0 -1
- package/build/source.tracer.d.ts.map +0 -1
- package/build/source.tracer.js.map +0 -1
- package/build/tiff.cache.d.ts +0 -17
- package/build/tiff.cache.d.ts.map +0 -1
- package/build/tiff.cache.js +0 -46
- package/build/tiff.cache.js.map +0 -1
- package/build/tile.set.cache.d.ts +0 -20
- package/build/tile.set.cache.d.ts.map +0 -1
- package/build/tile.set.cache.js +0 -72
- package/build/tile.set.cache.js.map +0 -1
- package/build/tile.set.d.ts +0 -4
- package/build/tile.set.d.ts.map +0 -1
- package/build/tile.set.js +0 -2
- package/build/tile.set.js.map +0 -1
- package/build/tile.set.raster.d.ts +0 -49
- package/build/tile.set.raster.d.ts.map +0 -1
- package/build/tile.set.raster.js +0 -189
- package/build/tile.set.raster.js.map +0 -1
- package/build/tile.set.vector.d.ts +0 -18
- package/build/tile.set.vector.d.ts.map +0 -1
- package/build/tile.set.vector.js +0 -54
- package/build/tile.set.vector.js.map +0 -1
- package/build/validate.d.ts +0 -16
- package/build/validate.d.ts.map +0 -1
- package/build/validate.js +0 -32
- package/build/validate.js.map +0 -1
- package/src/__tests__/route.test.ts +0 -24
- package/src/__tests__/tiff.cache.test.ts +0 -73
- package/src/__tests__/tile.cache.key.test.ts +0 -56
- package/src/__tests__/tile.set.cache.test.ts +0 -80
- package/src/__tests__/tile.set.test.ts +0 -12
- package/src/__tests__/xyz.test.ts +0 -318
- package/src/api.key.ts +0 -23
- package/src/cli/dump.ts +0 -61
- package/src/cli/tile.set.local.ts +0 -51
- package/src/cotar.cache.ts +0 -54
- package/src/router.ts +0 -58
- package/src/routes/api.ts +0 -15
- package/src/routes/esri/rest.ts +0 -90
- package/src/routes/response.ts +0 -4
- package/src/routes/tile.etag.ts +0 -36
- package/src/routes/tile.ts +0 -23
- package/src/tiff.cache.ts +0 -51
- package/src/tile.set.cache.ts +0 -84
- package/src/tile.set.raster.ts +0 -230
- package/src/tile.set.ts +0 -4
- package/src/tile.set.vector.ts +0 -61
- package/src/validate.ts +0 -32
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imagery.d.ts","sourceRoot":"","sources":["../../src/routes/imagery.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AASnF,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAKhD;AAED,UAAU,UAAU;IAClB,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CACjD;AAED;;;;;;;;;GASG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,iBAAiB,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"imagery.d.ts","sourceRoot":"","sources":["../../src/routes/imagery.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AASnF,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAKhD;AAED,UAAU,UAAU;IAClB,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CACjD;AAED;;;;;;;;;GASG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,iBAAiB,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA0BhG"}
|
package/build/routes/imagery.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Config } from '@basemaps/config';
|
|
2
2
|
import { fsa } from '@basemaps/shared';
|
|
3
3
|
import { HttpHeader, LambdaHttpResponse } from '@linzjs/lambda';
|
|
4
|
-
import { createHash } from 'crypto';
|
|
5
4
|
import { promisify } from 'util';
|
|
6
5
|
import { gzip } from 'zlib';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
6
|
+
import { isGzip } from '../util/cotar.serve.js';
|
|
7
|
+
import { Etag } from '../util/etag.js';
|
|
8
|
+
import { NotFound, NotModified } from '../util/response.js';
|
|
9
9
|
const gzipP = promisify(gzip);
|
|
10
10
|
export function isAllowedFile(f) {
|
|
11
11
|
if (f == null)
|
|
@@ -29,26 +29,27 @@ export function isAllowedFile(f) {
|
|
|
29
29
|
export async function imageryGet(req) {
|
|
30
30
|
const requestedFile = req.params.fileName;
|
|
31
31
|
if (!isAllowedFile(requestedFile))
|
|
32
|
-
return
|
|
32
|
+
return NotFound();
|
|
33
33
|
const imagery = await Config.Imagery.get(Config.Imagery.id(req.params.imageryId));
|
|
34
34
|
if (imagery == null)
|
|
35
|
-
return
|
|
35
|
+
return NotFound();
|
|
36
36
|
const targetPath = fsa.join(imagery.uri, requestedFile);
|
|
37
37
|
try {
|
|
38
38
|
const buf = await fsa.read(targetPath);
|
|
39
|
-
const cacheKey =
|
|
40
|
-
if (
|
|
41
|
-
return NotModified;
|
|
39
|
+
const cacheKey = Etag.key(buf);
|
|
40
|
+
if (Etag.isNotModified(req, cacheKey))
|
|
41
|
+
return NotModified();
|
|
42
42
|
const response = new LambdaHttpResponse(200, 'ok');
|
|
43
43
|
response.header(HttpHeader.ETag, cacheKey);
|
|
44
44
|
response.header(HttpHeader.ContentEncoding, 'gzip');
|
|
45
|
-
response.
|
|
45
|
+
response.header(HttpHeader.CacheControl, 'public, max-age=604800, stale-while-revalidate=86400');
|
|
46
|
+
response.buffer(isGzip(buf) ? buf : await gzipP(buf), 'application/json');
|
|
46
47
|
req.set('bytes', buf.byteLength);
|
|
47
48
|
return response;
|
|
48
49
|
}
|
|
49
50
|
catch (e) {
|
|
50
51
|
req.log.warn({ targetPath }, 'ImageryMetadata:Failed');
|
|
51
|
-
return
|
|
52
|
+
return NotFound();
|
|
52
53
|
}
|
|
53
54
|
}
|
|
54
55
|
//# sourceMappingURL=imagery.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imagery.js","sourceRoot":"","sources":["../../src/routes/imagery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAqB,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACnF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"imagery.js","sourceRoot":"","sources":["../../src/routes/imagery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAqB,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACnF,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAE5D,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAE9B,MAAM,UAAU,aAAa,CAAC,CAAS;IACrC,IAAI,CAAC,IAAI,IAAI;QAAE,OAAO,KAAK,CAAC;IAC5B,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,OAAO,KAAK,CAAC;AACf,CAAC;AAMD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAkC;IACjE,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC1C,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC;QAAE,OAAO,QAAQ,EAAE,CAAC;IAErD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IAClF,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,QAAQ,EAAE,CAAC;IAEvC,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAExD,IAAI;QACF,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEvC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC;YAAE,OAAO,WAAW,EAAE,CAAC;QAE5D,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACnD,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC3C,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QACpD,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,EAAE,sDAAsD,CAAC,CAAC;QACjG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,kBAAkB,CAAC,CAAC;QAC1E,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;QACjC,OAAO,QAAQ,CAAC;KACjB;IAAC,OAAO,CAAC,EAAE;QACV,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,wBAAwB,CAAC,CAAC;QACvD,OAAO,QAAQ,EAAE,CAAC;KACnB;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ping.d.ts","sourceRoot":"","sources":["../../src/routes/ping.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAc,MAAM,gBAAgB,CAAC;AAKhE,wBAAsB,OAAO,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAE3D"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { LambdaHttpResponse, HttpHeader } from '@linzjs/lambda';
|
|
2
|
+
const OkResponse = new LambdaHttpResponse(200, 'ok');
|
|
3
|
+
OkResponse.header(HttpHeader.CacheControl, 'no-store');
|
|
4
|
+
export async function pingGet() {
|
|
5
|
+
return OkResponse;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=ping.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ping.js","sourceRoot":"","sources":["../../src/routes/ping.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEhE,MAAM,UAAU,GAAG,IAAI,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACrD,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AAEvD,MAAM,CAAC,KAAK,UAAU,OAAO;IAC3B,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sprites.d.ts","sourceRoot":"","sources":["../../src/routes/sprites.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"sprites.d.ts","sourceRoot":"","sources":["../../src/routes/sprites.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAKnF,UAAU,SAAS;IACjB,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAMD,wBAAsB,SAAS,CAAC,GAAG,EAAE,iBAAiB,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA4B9F"}
|
package/build/routes/sprites.js
CHANGED
|
@@ -1,35 +1,41 @@
|
|
|
1
1
|
import { Env } from '@basemaps/shared';
|
|
2
2
|
import { fsa } from '@chunkd/fs';
|
|
3
3
|
import path from 'path';
|
|
4
|
-
import { LambdaHttpResponse } from '@linzjs/lambda';
|
|
5
|
-
import { NotFound } from '
|
|
6
|
-
import { isGzip, serveFromCotar } from '../cotar.
|
|
4
|
+
import { HttpHeader, LambdaHttpResponse } from '@linzjs/lambda';
|
|
5
|
+
import { NotFound, NotModified } from '../util/response.js';
|
|
6
|
+
import { isGzip, serveFromCotar } from '../util/cotar.serve.js';
|
|
7
|
+
import { Etag } from '../util/etag.js';
|
|
7
8
|
const Extensions = new Map();
|
|
8
9
|
Extensions.set('.png', 'image/png');
|
|
9
10
|
Extensions.set('.json', 'application/json');
|
|
10
11
|
export async function spriteGet(req) {
|
|
11
12
|
const assetLocation = Env.get(Env.AssetLocation);
|
|
12
13
|
if (assetLocation == null)
|
|
13
|
-
return NotFound;
|
|
14
|
+
return NotFound();
|
|
14
15
|
const extension = path.extname(req.params.spriteName);
|
|
15
16
|
const mimeType = Extensions.get(extension);
|
|
16
17
|
if (mimeType == null)
|
|
17
|
-
return NotFound;
|
|
18
|
+
return NotFound();
|
|
18
19
|
const targetFile = fsa.join('sprites', req.params.spriteName);
|
|
19
20
|
if (assetLocation.endsWith('.tar.co'))
|
|
20
|
-
return serveFromCotar(assetLocation, targetFile, mimeType);
|
|
21
|
+
return serveFromCotar(req, assetLocation, targetFile, mimeType);
|
|
21
22
|
try {
|
|
22
23
|
const filePath = fsa.join(assetLocation, targetFile);
|
|
23
24
|
req.set('target', filePath);
|
|
24
25
|
const buf = await fsa.read(filePath);
|
|
25
|
-
const
|
|
26
|
+
const cacheKey = Etag.key(buf);
|
|
27
|
+
if (Etag.isNotModified(req, cacheKey))
|
|
28
|
+
return NotModified();
|
|
29
|
+
const response = LambdaHttpResponse.ok().buffer(buf, mimeType);
|
|
30
|
+
response.header(HttpHeader.ETag, cacheKey);
|
|
31
|
+
response.header(HttpHeader.CacheControl, 'public, max-age=604800, stale-while-revalidate=86400');
|
|
26
32
|
if (isGzip(buf))
|
|
27
|
-
|
|
28
|
-
return
|
|
33
|
+
response.header(HttpHeader.ContentEncoding, 'gzip');
|
|
34
|
+
return response;
|
|
29
35
|
}
|
|
30
36
|
catch (e) {
|
|
31
37
|
if (e.code === 404)
|
|
32
|
-
return NotFound;
|
|
38
|
+
return NotFound();
|
|
33
39
|
throw e;
|
|
34
40
|
}
|
|
35
41
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sprites.js","sourceRoot":"","sources":["../../src/routes/sprites.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAqB,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"sprites.js","sourceRoot":"","sources":["../../src/routes/sprites.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,UAAU,EAAqB,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACnF,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAQvC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;AAC7B,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AACpC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;AAE5C,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAiC;IAC/D,MAAM,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACjD,IAAI,aAAa,IAAI,IAAI;QAAE,OAAO,QAAQ,EAAE,CAAC;IAE7C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3C,IAAI,QAAQ,IAAI,IAAI;QAAE,OAAO,QAAQ,EAAE,CAAC;IAExC,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC9D,IAAI,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,cAAc,CAAC,GAAG,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAEvG,IAAI;QACF,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;QACrD,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAE5B,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC;YAAE,OAAO,WAAW,EAAE,CAAC;QAE5D,MAAM,QAAQ,GAAG,kBAAkB,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC/D,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC3C,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,EAAE,sDAAsD,CAAC,CAAC;QACjG,IAAI,MAAM,CAAC,GAAG,CAAC;YAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QACrE,OAAO,QAAQ,CAAC;KACjB;IAAC,OAAO,CAAM,EAAE;QACf,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG;YAAE,OAAO,QAAQ,EAAE,CAAC;QACtC,MAAM,CAAC,CAAC;KACT;AACH,CAAC"}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
1
|
import { LambdaHttpRequest, LambdaHttpResponse } from '@linzjs/lambda';
|
|
2
|
-
export
|
|
2
|
+
export interface TileJsonGet {
|
|
3
|
+
Params: {
|
|
4
|
+
tileSet: string;
|
|
5
|
+
tileMatrix: string;
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
export declare function tileJsonGet(req: LambdaHttpRequest<TileJsonGet>): Promise<LambdaHttpResponse>;
|
|
3
9
|
//# sourceMappingURL=tile.json.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tile.json.d.ts","sourceRoot":"","sources":["../../src/routes/tile.json.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"tile.json.d.ts","sourceRoot":"","sources":["../../src/routes/tile.json.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAInF,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,wBAAsB,WAAW,CAAC,GAAG,EAAE,iBAAiB,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAkClG"}
|
|
@@ -1,32 +1,29 @@
|
|
|
1
1
|
import { GoogleTms, TileMatrixSet } from '@basemaps/geo';
|
|
2
|
-
import {
|
|
2
|
+
import { Config, Env } from '@basemaps/shared';
|
|
3
3
|
import { HttpHeader, LambdaHttpResponse } from '@linzjs/lambda';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const { version, rest, name } = Router.action(req);
|
|
10
|
-
if (rest.length !== 3)
|
|
11
|
-
return NotFound;
|
|
12
|
-
const tileMatrix = extractTileMatrixSet(rest[1]);
|
|
4
|
+
import { NotFound } from '../util/response.js';
|
|
5
|
+
import { Validate } from '../util/validate.js';
|
|
6
|
+
export async function tileJsonGet(req) {
|
|
7
|
+
var _a, _b, _c, _d;
|
|
8
|
+
const tileMatrix = Validate.getTileMatrixSet(req.params.tileMatrix);
|
|
13
9
|
if (tileMatrix == null)
|
|
14
|
-
return NotFound;
|
|
10
|
+
return NotFound();
|
|
11
|
+
const apiKey = Validate.apiKey(req);
|
|
15
12
|
req.timer.start('tileset:load');
|
|
16
|
-
const tileSet = await
|
|
13
|
+
const tileSet = await Config.TileSet.get(Config.TileSet.id(req.params.tileSet));
|
|
17
14
|
req.timer.end('tileset:load');
|
|
18
15
|
if (tileSet == null)
|
|
19
|
-
return NotFound;
|
|
20
|
-
const
|
|
21
|
-
const host = (
|
|
22
|
-
const tileUrl = [host,
|
|
23
|
-
`.${
|
|
16
|
+
return NotFound();
|
|
17
|
+
const format = (_a = Validate.getRequestedFormats(req)) !== null && _a !== void 0 ? _a : [tileSet.format];
|
|
18
|
+
const host = (_b = Env.get(Env.PublicUrlBase)) !== null && _b !== void 0 ? _b : '';
|
|
19
|
+
const tileUrl = [host, 'v1', 'tiles', tileSet.name, tileMatrix.identifier, '{z}', '{x}', '{y}'].join('/') +
|
|
20
|
+
`.${format[0]}?api=${apiKey}`;
|
|
24
21
|
const tileJson = { tiles: [tileUrl], tilejson: '3.0.0' };
|
|
25
|
-
const maxZoom = TileMatrixSet.convertZoomLevel((
|
|
26
|
-
const minZoom = TileMatrixSet.convertZoomLevel((
|
|
27
|
-
if (tileSet.
|
|
22
|
+
const maxZoom = TileMatrixSet.convertZoomLevel((_c = tileSet.maxZoom) !== null && _c !== void 0 ? _c : 30, GoogleTms, tileMatrix, true);
|
|
23
|
+
const minZoom = TileMatrixSet.convertZoomLevel((_d = tileSet.minZoom) !== null && _d !== void 0 ? _d : 0, GoogleTms, tileMatrix, true);
|
|
24
|
+
if (tileSet.maxZoom)
|
|
28
25
|
tileJson.maxzoom = maxZoom;
|
|
29
|
-
if (tileSet.
|
|
26
|
+
if (tileSet.minZoom)
|
|
30
27
|
tileJson.minzoom = minZoom;
|
|
31
28
|
const json = JSON.stringify(tileJson);
|
|
32
29
|
const data = Buffer.from(json);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tile.json.js","sourceRoot":"","sources":["../../src/routes/tile.json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAY,aAAa,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"tile.json.js","sourceRoot":"","sources":["../../src/routes/tile.json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAY,aAAa,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAqB,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACnF,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAS/C,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAmC;;IACnE,MAAM,UAAU,GAAG,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACpE,IAAI,UAAU,IAAI,IAAI;QAAE,OAAO,QAAQ,EAAE,CAAC;IAE1C,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAEpC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAChF,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC9B,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,QAAQ,EAAE,CAAC;IAEvC,MAAM,MAAM,GAAG,MAAA,QAAQ,CAAC,mBAAmB,CAAC,GAAG,CAAC,mCAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAErE,MAAM,IAAI,GAAG,MAAA,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,mCAAI,EAAE,CAAC;IAE9C,MAAM,OAAO,GACX,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACzF,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,MAAM,EAAE,CAAC;IAEhC,MAAM,QAAQ,GAAa,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IACnE,MAAM,OAAO,GAAG,aAAa,CAAC,gBAAgB,CAAC,MAAA,OAAO,CAAC,OAAO,mCAAI,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IACnG,MAAM,OAAO,GAAG,aAAa,CAAC,gBAAgB,CAAC,MAAA,OAAO,CAAC,OAAO,mCAAI,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IAElG,IAAI,OAAO,CAAC,OAAO;QAAE,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;IAChD,IAAI,OAAO,CAAC,OAAO;QAAE,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;IAEhD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE/B,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACnD,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IACrD,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;IAC1C,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAClC,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -14,5 +14,10 @@ export declare function convertRelativeUrl(url?: string, apiKey?: string): strin
|
|
|
14
14
|
* @returns new stylejson
|
|
15
15
|
*/
|
|
16
16
|
export declare function convertStyleJson(style: StyleJson, apiKey: string): StyleJson;
|
|
17
|
-
export
|
|
17
|
+
export interface StyleGet {
|
|
18
|
+
Params: {
|
|
19
|
+
styleName: string;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export declare function styleJsonGet(req: LambdaHttpRequest<StyleGet>): Promise<LambdaHttpResponse>;
|
|
18
23
|
//# sourceMappingURL=tile.style.json.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tile.style.json.d.ts","sourceRoot":"","sources":["../../src/routes/tile.style.json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGtD,OAAO,EAAc,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"tile.style.json.d.ts","sourceRoot":"","sources":["../../src/routes/tile.style.json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGtD,OAAO,EAAc,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAMnF;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAOxE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAuB5E;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,iBAAiB,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAsBhG"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { Config, Env } from '@basemaps/shared';
|
|
2
2
|
import { fsa } from '@chunkd/fs';
|
|
3
3
|
import { HttpHeader, LambdaHttpResponse } from '@linzjs/lambda';
|
|
4
|
-
import { createHash } from 'crypto';
|
|
5
4
|
import { URL } from 'url';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
5
|
+
import { NotFound, NotModified } from '../util/response.js';
|
|
6
|
+
import { Validate } from '../util/validate.js';
|
|
7
|
+
import { Etag } from '../util/etag.js';
|
|
9
8
|
/**
|
|
10
9
|
* Convert relative URLS into a full hostname url
|
|
11
10
|
* @param url possible url to update
|
|
@@ -55,22 +54,20 @@ export function convertStyleJson(style, apiKey) {
|
|
|
55
54
|
sprite: convertRelativeUrl(style.sprite),
|
|
56
55
|
};
|
|
57
56
|
}
|
|
58
|
-
export async function
|
|
59
|
-
const apiKey =
|
|
60
|
-
|
|
61
|
-
return new LambdaHttpResponse(400, 'Invalid API Key.');
|
|
62
|
-
const styleName = fileName.split('.json')[0];
|
|
57
|
+
export async function styleJsonGet(req) {
|
|
58
|
+
const apiKey = Validate.apiKey(req);
|
|
59
|
+
const styleName = req.params.styleName;
|
|
63
60
|
// Get style Config from db
|
|
64
61
|
const dbId = Config.Style.id(styleName);
|
|
65
62
|
const styleConfig = await Config.Style.get(dbId);
|
|
66
63
|
if (styleConfig == null)
|
|
67
|
-
return NotFound;
|
|
64
|
+
return NotFound();
|
|
68
65
|
// Prepare sources and add linz source
|
|
69
66
|
const style = convertStyleJson(styleConfig.style, apiKey);
|
|
70
67
|
const data = Buffer.from(JSON.stringify(style));
|
|
71
|
-
const cacheKey =
|
|
72
|
-
if (
|
|
73
|
-
return NotModified;
|
|
68
|
+
const cacheKey = Etag.key(data);
|
|
69
|
+
if (Etag.isNotModified(req, cacheKey))
|
|
70
|
+
return NotModified();
|
|
74
71
|
const response = new LambdaHttpResponse(200, 'ok');
|
|
75
72
|
response.header(HttpHeader.ETag, cacheKey);
|
|
76
73
|
response.header(HttpHeader.CacheControl, 'no-store');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tile.style.json.js","sourceRoot":"","sources":["../../src/routes/tile.style.json.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,UAAU,EAAqB,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACnF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"tile.style.json.js","sourceRoot":"","sources":["../../src/routes/tile.style.json.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TileMatrixSet } from '@basemaps/geo';
|
|
2
2
|
import { LambdaHttpRequest, LambdaHttpResponse } from '@linzjs/lambda';
|
|
3
|
-
export
|
|
3
|
+
export interface WmtsCapabilitiesGet {
|
|
4
|
+
Params: {
|
|
5
|
+
tileSet?: string;
|
|
6
|
+
tileMatrix?: string;
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
export declare function getWmtsTileMatrix(tileMatrixParam?: string): TileMatrixSet[] | null;
|
|
4
10
|
/**
|
|
5
11
|
* Serve a WMTS request
|
|
6
12
|
*
|
|
7
13
|
* /v1/tiles/:tileSet/:tileMatrixSet/WMTSCapabilities.xml
|
|
8
14
|
* @example `/v1/tiles/aerial/NZTM2000Quad/WMTSCapabilities.xml`
|
|
9
15
|
*/
|
|
10
|
-
export declare function
|
|
16
|
+
export declare function wmtsCapabilitiesGet(req: LambdaHttpRequest<WmtsCapabilitiesGet>): Promise<LambdaHttpResponse>;
|
|
11
17
|
//# sourceMappingURL=tile.wmts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tile.wmts.d.ts","sourceRoot":"","sources":["../../src/routes/tile.wmts.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"tile.wmts.d.ts","sourceRoot":"","sources":["../../src/routes/tile.wmts.ts"],"names":[],"mappings":"AACA,OAAO,EAA8B,aAAa,EAAE,MAAM,eAAe,CAAC;AAE1E,OAAO,EAAc,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAOnF,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE;QACN,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,wBAAgB,iBAAiB,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,aAAa,EAAE,GAAG,IAAI,CAKlF;AACD;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA8ClH"}
|
|
@@ -1,27 +1,19 @@
|
|
|
1
1
|
import { Config, TileSetType } from '@basemaps/config';
|
|
2
2
|
import { GoogleTms, Nztm2000QuadTms } from '@basemaps/geo';
|
|
3
|
-
import { Env
|
|
4
|
-
import { getImageFormat } from '@basemaps/tiler';
|
|
3
|
+
import { Env } from '@basemaps/shared';
|
|
5
4
|
import { HttpHeader, LambdaHttpResponse } from '@linzjs/lambda';
|
|
6
5
|
import { createHash } from 'crypto';
|
|
7
|
-
import {
|
|
6
|
+
import { NotFound, NotModified } from '../util/response.js';
|
|
7
|
+
import { Validate } from '../util/validate.js';
|
|
8
8
|
import { WmtsCapabilities } from '../wmts.capability.js';
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
const parsed = getImageFormat(fmt);
|
|
18
|
-
if (parsed == null)
|
|
19
|
-
continue;
|
|
20
|
-
output.add(parsed);
|
|
21
|
-
}
|
|
22
|
-
if (output.size === 0)
|
|
23
|
-
return;
|
|
24
|
-
return [...output.values()];
|
|
9
|
+
import { Etag } from '../util/etag.js';
|
|
10
|
+
export function getWmtsTileMatrix(tileMatrixParam) {
|
|
11
|
+
if (tileMatrixParam == null)
|
|
12
|
+
return [GoogleTms, Nztm2000QuadTms];
|
|
13
|
+
const tileMatrix = Validate.getTileMatrixSet(tileMatrixParam);
|
|
14
|
+
if (tileMatrix == null)
|
|
15
|
+
return null;
|
|
16
|
+
return [tileMatrix];
|
|
25
17
|
}
|
|
26
18
|
/**
|
|
27
19
|
* Serve a WMTS request
|
|
@@ -29,43 +21,42 @@ export function getImageFormats(req) {
|
|
|
29
21
|
* /v1/tiles/:tileSet/:tileMatrixSet/WMTSCapabilities.xml
|
|
30
22
|
* @example `/v1/tiles/aerial/NZTM2000Quad/WMTSCapabilities.xml`
|
|
31
23
|
*/
|
|
32
|
-
export async function
|
|
24
|
+
export async function wmtsCapabilitiesGet(req) {
|
|
33
25
|
var _a, _b;
|
|
34
|
-
const
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
26
|
+
const apiKey = Validate.apiKey(req);
|
|
27
|
+
const tileSetName = (_a = req.params.tileSet) !== null && _a !== void 0 ? _a : 'aerial';
|
|
28
|
+
const tileMatrix = getWmtsTileMatrix(req.params.tileMatrix);
|
|
29
|
+
if (tileMatrix == null)
|
|
30
|
+
return NotFound();
|
|
31
|
+
const host = (_b = Env.get(Env.PublicUrlBase)) !== null && _b !== void 0 ? _b : '';
|
|
39
32
|
req.timer.start('tileset:load');
|
|
40
|
-
const tileSet = await Config.TileSet.get(Config.TileSet.id(
|
|
33
|
+
const tileSet = await Config.TileSet.get(Config.TileSet.id(tileSetName !== null && tileSetName !== void 0 ? tileSetName : 'aerial'));
|
|
41
34
|
req.timer.end('tileset:load');
|
|
42
35
|
if (tileSet == null || tileSet.type !== TileSetType.Raster)
|
|
43
|
-
return NotFound;
|
|
36
|
+
return NotFound();
|
|
44
37
|
const provider = await Config.Provider.get(Config.Provider.id('linz'));
|
|
45
|
-
const tileMatrix = wmtsData.tileMatrix == null ? [GoogleTms, Nztm2000QuadTms] : [wmtsData.tileMatrix];
|
|
46
38
|
req.timer.start('imagery:load');
|
|
47
39
|
const imagery = await Config.getAllImagery(tileSet.layers, tileMatrix.map((tms) => tms.projection));
|
|
48
40
|
req.timer.end('imagery:load');
|
|
49
|
-
const apiKey = Router.apiKey(req);
|
|
50
41
|
const xml = new WmtsCapabilities({
|
|
51
42
|
httpBase: host,
|
|
52
43
|
provider: provider !== null && provider !== void 0 ? provider : undefined,
|
|
53
44
|
tileSet,
|
|
54
45
|
tileMatrix,
|
|
55
|
-
isIndividualLayers:
|
|
46
|
+
isIndividualLayers: req.params.tileMatrix == null,
|
|
56
47
|
imagery,
|
|
57
48
|
apiKey,
|
|
58
|
-
formats:
|
|
49
|
+
formats: Validate.getRequestedFormats(req),
|
|
59
50
|
}).toXml();
|
|
60
51
|
if (xml == null)
|
|
61
|
-
return NotFound;
|
|
52
|
+
return NotFound();
|
|
62
53
|
const data = Buffer.from(xml);
|
|
63
54
|
const cacheKey = createHash('sha256').update(data).digest('base64');
|
|
64
|
-
if (
|
|
65
|
-
return NotModified;
|
|
55
|
+
if (Etag.isNotModified(req, cacheKey))
|
|
56
|
+
return NotModified();
|
|
66
57
|
const response = new LambdaHttpResponse(200, 'ok');
|
|
67
58
|
response.header(HttpHeader.ETag, cacheKey);
|
|
68
|
-
response.header(HttpHeader.CacheControl, '
|
|
59
|
+
response.header(HttpHeader.CacheControl, 'no-store');
|
|
69
60
|
response.buffer(data, 'text/xml');
|
|
70
61
|
req.set('bytes', data.byteLength);
|
|
71
62
|
return response;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tile.wmts.js","sourceRoot":"","sources":["../../src/routes/tile.wmts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"tile.wmts.js","sourceRoot":"","sources":["../../src/routes/tile.wmts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,23 @@
|
|
|
1
1
|
import { LambdaHttpRequest, LambdaHttpResponse } from '@linzjs/lambda';
|
|
2
|
+
export interface TileXyzGet {
|
|
3
|
+
Params: {
|
|
4
|
+
tileSet: string;
|
|
5
|
+
tileMatrix: string;
|
|
6
|
+
z: string;
|
|
7
|
+
x: string;
|
|
8
|
+
y: string;
|
|
9
|
+
tileType: string;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
2
12
|
/**
|
|
3
13
|
* Serve a tile
|
|
4
14
|
*
|
|
5
15
|
* /v1/tiles/:tileSet/:tileMatrixSet/:z/:x/:y.:tileType
|
|
6
16
|
*
|
|
7
17
|
* @example
|
|
8
|
-
* Vector Tile `/v1/tiles/topographic/
|
|
9
|
-
* Raster Tile `/v1/tiles/aerial/
|
|
10
|
-
*
|
|
18
|
+
* Vector Tile `/v1/tiles/topographic/WebMercatorQuad/2/1/1.pbf`
|
|
19
|
+
* Raster Tile `/v1/tiles/aerial/WebMercatorQuad/6/0/38.webp`
|
|
20
|
+
*
|
|
11
21
|
*/
|
|
12
|
-
export declare function
|
|
22
|
+
export declare function tileXyzGet(req: LambdaHttpRequest<TileXyzGet>): Promise<LambdaHttpResponse>;
|
|
13
23
|
//# sourceMappingURL=tile.xyz.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tile.xyz.d.ts","sourceRoot":"","sources":["../../src/routes/tile.xyz.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAMvE;;;;;;;;;GASG;AACH,wBAAsB,
|
|
1
|
+
{"version":3,"file":"tile.xyz.d.ts","sourceRoot":"","sources":["../../src/routes/tile.xyz.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAMvE,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED;;;;;;;;;GASG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,iBAAiB,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAgBhG"}
|
package/build/routes/tile.xyz.js
CHANGED
|
@@ -1,29 +1,33 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
1
|
+
import { Config, TileSetType } from '@basemaps/config';
|
|
2
|
+
import { LambdaHttpResponse } from '@linzjs/lambda';
|
|
3
|
+
import { NotFound } from '../util/response.js';
|
|
4
|
+
import { Validate } from '../util/validate.js';
|
|
5
|
+
import { TileXyzRaster } from './tile.xyz.raster.js';
|
|
6
|
+
import { tileXyzVector } from './tile.xyz.vector.js';
|
|
6
7
|
/**
|
|
7
8
|
* Serve a tile
|
|
8
9
|
*
|
|
9
10
|
* /v1/tiles/:tileSet/:tileMatrixSet/:z/:x/:y.:tileType
|
|
10
11
|
*
|
|
11
12
|
* @example
|
|
12
|
-
* Vector Tile `/v1/tiles/topographic/
|
|
13
|
-
* Raster Tile `/v1/tiles/aerial/
|
|
14
|
-
*
|
|
13
|
+
* Vector Tile `/v1/tiles/topographic/WebMercatorQuad/2/1/1.pbf`
|
|
14
|
+
* Raster Tile `/v1/tiles/aerial/WebMercatorQuad/6/0/38.webp`
|
|
15
|
+
*
|
|
15
16
|
*/
|
|
16
|
-
export async function
|
|
17
|
-
const
|
|
18
|
-
const xyzData = tileXyzFromPath(action.rest);
|
|
19
|
-
if (xyzData == null)
|
|
20
|
-
return NotFound;
|
|
21
|
-
ValidateTilePath.validate(req, xyzData);
|
|
17
|
+
export async function tileXyzGet(req) {
|
|
18
|
+
const xyzData = Validate.xyz(req);
|
|
22
19
|
req.timer.start('tileset:load');
|
|
23
|
-
const tileSet = await
|
|
20
|
+
const tileSet = await Config.TileSet.get(Config.TileSet.id(xyzData.tileSet));
|
|
24
21
|
req.timer.end('tileset:load');
|
|
25
22
|
if (tileSet == null)
|
|
26
|
-
return NotFound;
|
|
27
|
-
|
|
23
|
+
return NotFound();
|
|
24
|
+
switch (tileSet.type) {
|
|
25
|
+
case TileSetType.Vector:
|
|
26
|
+
return tileXyzVector.tile(req, tileSet, xyzData);
|
|
27
|
+
case TileSetType.Raster:
|
|
28
|
+
return TileXyzRaster.tile(req, tileSet, xyzData);
|
|
29
|
+
default:
|
|
30
|
+
return new LambdaHttpResponse(400, 'Invalid tileset');
|
|
31
|
+
}
|
|
28
32
|
}
|
|
29
33
|
//# sourceMappingURL=tile.xyz.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tile.xyz.js","sourceRoot":"","sources":["../../src/routes/tile.xyz.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"tile.xyz.js","sourceRoot":"","sources":["../../src/routes/tile.xyz.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAqB,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAarD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAkC;IACjE,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAElC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7E,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC9B,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,QAAQ,EAAE,CAAC;IAEvC,QAAQ,OAAO,CAAC,IAAI,EAAE;QACpB,KAAK,WAAW,CAAC,MAAM;YACrB,OAAO,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACnD,KAAK,WAAW,CAAC,MAAM;YACrB,OAAO,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACnD;YACE,OAAO,IAAI,kBAAkB,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;KACzD;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ConfigTileSetRaster } from '@basemaps/config';
|
|
2
|
+
import { TileMakerSharp } from '@basemaps/tiler-sharp';
|
|
3
|
+
import { LambdaHttpRequest, LambdaHttpResponse } from '@linzjs/lambda';
|
|
4
|
+
import { TileXyz } from '../util/validate.js';
|
|
5
|
+
export declare function getTiffName(name: string): string;
|
|
6
|
+
export declare const TileComposer: TileMakerSharp;
|
|
7
|
+
export declare const TileXyzRaster: {
|
|
8
|
+
getTiffsForTile(req: LambdaHttpRequest, tileSet: ConfigTileSetRaster, xyz: TileXyz): Promise<string[]>;
|
|
9
|
+
tile(req: LambdaHttpRequest, tileSet: ConfigTileSetRaster, xyz: TileXyz): Promise<LambdaHttpResponse>;
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=tile.xyz.raster.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tile.xyz.raster.d.ts","sourceRoot":"","sources":["../../src/routes/tile.xyz.raster.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAI/D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAc,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAKnF,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAI9C,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIhD;AAED,eAAO,MAAM,YAAY,gBAA0B,CAAC;AAKpD,eAAO,MAAM,aAAa;yBACG,iBAAiB,WAAW,mBAAmB,OAAO,OAAO,GAAG,QAAQ,MAAM,EAAE,CAAC;cAqC5F,iBAAiB,WAAW,mBAAmB,OAAO,OAAO,GAAG,QAAQ,kBAAkB,CAAC;CAyC5G,CAAC"}
|