@basemaps/lambda-tiler 7.0.0 → 7.1.0
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 +29 -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 +17 -13
- 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 +26 -22
- 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/build/cli/render.tile.js
CHANGED
|
@@ -1,31 +1,34 @@
|
|
|
1
1
|
import { ConfigProviderMemory } from '@basemaps/config';
|
|
2
|
-
import { initConfigFromUrls } from '@basemaps/config
|
|
3
|
-
import {
|
|
4
|
-
import { LogConfig, setDefaultConfig } from '@basemaps/shared';
|
|
5
|
-
import { fsa } from '@chunkd/fs';
|
|
2
|
+
import { initConfigFromUrls } from '@basemaps/config-loader';
|
|
3
|
+
import { TileMatrixSets } from '@basemaps/geo';
|
|
4
|
+
import { fsa, LogConfig, setDefaultConfig } from '@basemaps/shared';
|
|
6
5
|
import { LambdaUrlRequest } from '@linzjs/lambda';
|
|
7
|
-
import {
|
|
6
|
+
import { extname } from 'path';
|
|
8
7
|
import { TileXyzRaster } from '../routes/tile.xyz.raster.js';
|
|
9
|
-
|
|
10
|
-
const
|
|
11
|
-
const
|
|
8
|
+
// Render configuration
|
|
9
|
+
const source = fsa.toUrl(`/home/blacha/data/elevation/christchurch_2020-2021/`);
|
|
10
|
+
const tile = fromPath('/14/7898/8615.webp');
|
|
11
|
+
const pipeline = 'color-ramp';
|
|
12
12
|
let tileMatrix = null;
|
|
13
|
-
/** Convert a tile path /:z/:x/:y.png into a tile */
|
|
13
|
+
/** Convert a tile path /:z/:x/:y.png into a tile & extension */
|
|
14
14
|
function fromPath(s) {
|
|
15
|
+
const ext = extname(s).slice(1);
|
|
15
16
|
const parts = s.split('.')[0].split('/').map(Number);
|
|
16
17
|
if (s.startsWith('/'))
|
|
17
18
|
parts.shift();
|
|
18
19
|
if (parts.length !== 3)
|
|
19
20
|
throw new Error(`Invalid tile path ${s}`);
|
|
20
|
-
return { z: parts[0], x: parts[1], y: parts[2] };
|
|
21
|
+
return { z: parts[0], x: parts[1], y: parts[2], extension: ext };
|
|
21
22
|
}
|
|
22
23
|
async function main() {
|
|
23
24
|
const log = LogConfig.get();
|
|
25
|
+
log.level = 'trace';
|
|
24
26
|
const provider = new ConfigProviderMemory();
|
|
25
27
|
setDefaultConfig(provider);
|
|
26
|
-
const {
|
|
27
|
-
|
|
28
|
-
|
|
28
|
+
const { imagery, tileSets } = await initConfigFromUrls(provider, [source]);
|
|
29
|
+
const tileSet = tileSets.find((f) => f.layers.length > 0);
|
|
30
|
+
if (tileSet == null || tileSet.layers.length === 0)
|
|
31
|
+
throw new Error('No imagery found in path: ' + source);
|
|
29
32
|
log.info({ tileSet: tileSet.name, layers: tileSet.layers.length }, 'TileSet:Loaded');
|
|
30
33
|
for (const im of imagery) {
|
|
31
34
|
log.info({ url: im.uri, title: im.title, tileMatrix: im.tileMatrix, files: im.files.length }, 'Imagery:Loaded');
|
|
@@ -42,10 +45,15 @@ async function main() {
|
|
|
42
45
|
tile,
|
|
43
46
|
tileMatrix,
|
|
44
47
|
tileSet: tileSet.id,
|
|
45
|
-
tileType:
|
|
48
|
+
tileType: tile.extension,
|
|
49
|
+
pipeline,
|
|
46
50
|
});
|
|
47
|
-
|
|
48
|
-
|
|
51
|
+
const pipelineName = pipeline ? `-${pipeline}` : '';
|
|
52
|
+
const fileName = `./render/${tile.z}_${tile.x}_${tile.y}${pipelineName}.${tile.extension}`;
|
|
53
|
+
await fsa.write(fsa.toUrl(fileName), Buffer.from(res.body, 'base64'));
|
|
54
|
+
log.info({ path: fileName, ...request.timer.metrics }, 'Tile:Write');
|
|
49
55
|
}
|
|
50
|
-
main()
|
|
56
|
+
main().catch((e) => {
|
|
57
|
+
LogConfig.get().fatal({ err: e }, 'Cli:Failed');
|
|
58
|
+
});
|
|
51
59
|
//# sourceMappingURL=render.tile.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.tile.js","sourceRoot":"","sources":["../../src/cli/render.tile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"render.tile.js","sourceRoot":"","sources":["../../src/cli/render.tile.ts"],"names":[],"mappings":"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"}
|
package/build/index.d.ts
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
1
|
export declare const handler: import("@linzjs/lambda/build/src/function.js").LambdaHandlerAsync<import("@linzjs/lambda/build/src/http/request.http.js").HttpRequestEvent, import("@linzjs/lambda/build/src/http/request.http.js").HttpResponse> & import("@linzjs/lambda/build/src/function.js").HttpHandlerOptions;
|
|
2
|
-
//# sourceMappingURL=index.d.ts.map
|
package/build/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LogConfig } from '@basemaps/shared';
|
|
1
|
+
import { FsaCache, FsaLog, LogConfig } from '@basemaps/shared';
|
|
2
2
|
import { LambdaHttpResponse, lf } from '@linzjs/lambda';
|
|
3
3
|
import { tileAttributionGet } from './routes/attribution.js';
|
|
4
4
|
import { configImageryGet, configTileSetGet } from './routes/config.js';
|
|
@@ -15,32 +15,35 @@ import { wmtsCapabilitiesGet } from './routes/tile.wmts.js';
|
|
|
15
15
|
import { tileXyzGet } from './routes/tile.xyz.js';
|
|
16
16
|
import { versionGet } from './routes/version.js';
|
|
17
17
|
import { NotFound } from './util/response.js';
|
|
18
|
-
import { CoSources } from './util/source.cache.js';
|
|
19
|
-
import { St } from './util/source.tracer.js';
|
|
20
18
|
export const handler = lf.http(LogConfig.get());
|
|
21
19
|
/** If the request takes too long, respond with a 408 timeout when there is approx 1 second remaining */
|
|
22
20
|
handler.router.timeoutEarlyMs = 1000;
|
|
21
|
+
function randomTrace(req) {
|
|
22
|
+
// If the env is set to trace level always trace requests
|
|
23
|
+
if (process.env['TRACE']) {
|
|
24
|
+
req.log.level = 'trace';
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
// Set the logging level based off a percent
|
|
28
|
+
const rand = Math.random();
|
|
29
|
+
// 1% trace
|
|
30
|
+
if (rand < 0.01)
|
|
31
|
+
req.log.level = 'trace';
|
|
32
|
+
// 5% debug
|
|
33
|
+
else if (rand < 0.04)
|
|
34
|
+
req.log.level = 'debug';
|
|
35
|
+
// everything else info
|
|
36
|
+
else
|
|
37
|
+
req.log.level = 'info';
|
|
38
|
+
}
|
|
23
39
|
handler.router.hook('request', (req) => {
|
|
40
|
+
FsaLog.reset();
|
|
41
|
+
randomTrace(req);
|
|
24
42
|
req.set('name', 'LambdaTiler');
|
|
25
|
-
// Reset the request tracing before every request
|
|
26
|
-
St.reset();
|
|
27
43
|
});
|
|
28
44
|
handler.router.hook('response', (req, res) => {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
req.set('requests', St.requests.slice(0, 100)); // limit to 100 requests (some tiles need 100s of requests)
|
|
32
|
-
req.set('requestCount', St.requests.length);
|
|
33
|
-
}
|
|
34
|
-
// Log the source cache hit/miss ratio
|
|
35
|
-
req.set('sources', {
|
|
36
|
-
hits: CoSources.cache.hits,
|
|
37
|
-
misses: CoSources.cache.misses,
|
|
38
|
-
size: CoSources.cache.currentSize,
|
|
39
|
-
resets: CoSources.cache.resets,
|
|
40
|
-
clears: CoSources.cache.clears,
|
|
41
|
-
cacheA: CoSources.cache.cacheA.size,
|
|
42
|
-
cacheB: CoSources.cache.cacheB.size,
|
|
43
|
-
});
|
|
45
|
+
req.set('requestCount', FsaLog.requests.length);
|
|
46
|
+
req.set('cacheSize', FsaCache.size);
|
|
44
47
|
// Force access-control-allow-origin to everything
|
|
45
48
|
res.header('access-control-allow-origin', '*');
|
|
46
49
|
});
|
|
@@ -78,6 +81,7 @@ handler.router.get('/v1/tiles/:tileSet/:tileMatrix/tile.json', tileJsonGet);
|
|
|
78
81
|
handler.router.get('/v1/tiles/:tileSet/:tileMatrix/:z/:x/:y.:tileType', tileXyzGet);
|
|
79
82
|
// Preview
|
|
80
83
|
handler.router.get('/v1/preview/:tileSet/:tileMatrix/:z/:lon/:lat', tilePreviewGet);
|
|
84
|
+
handler.router.get('/v1/preview/:tileSet/:tileMatrix/:z/:lon/:lat/:outputType', tilePreviewGet);
|
|
81
85
|
handler.router.get('/v1/@:location', previewIndexGet);
|
|
82
86
|
handler.router.get('/@:location', previewIndexGet);
|
|
83
87
|
// Attribution
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
import { afterEach, beforeEach, describe, it } from 'node:test';
|
|
1
3
|
import { Attribution } from '@basemaps/attribution';
|
|
2
4
|
import { ConfigProviderMemory } from '@basemaps/config';
|
|
3
5
|
import { GoogleTms, Nztm2000QuadTms, Projection } from '@basemaps/geo';
|
|
4
6
|
import { LogConfig } from '@basemaps/shared';
|
|
5
7
|
import { HttpHeader } from '@linzjs/lambda';
|
|
6
|
-
import o from 'ospec';
|
|
7
8
|
import sinon from 'sinon';
|
|
8
|
-
import { handler } from '../../index.js';
|
|
9
|
-
import { ConfigLoader } from '../../util/config.loader.js';
|
|
10
9
|
import { FakeData, Imagery2193, Imagery3857, Provider, TileSetAerial } from '../../__tests__/config.data.js';
|
|
11
10
|
import { mockUrlRequest } from '../../__tests__/xyz.util.js';
|
|
11
|
+
import { handler } from '../../index.js';
|
|
12
|
+
import { ConfigLoader } from '../../util/config.loader.js';
|
|
12
13
|
import { createCoordinates } from '../attribution.js';
|
|
13
14
|
// const ExpectedJson = {
|
|
14
15
|
// id: 'aerial_WebMercatorQuad',
|
|
@@ -278,10 +279,10 @@ import { createCoordinates } from '../attribution.js';
|
|
|
278
279
|
// updatedAt: Date.now(),
|
|
279
280
|
// };
|
|
280
281
|
// }
|
|
281
|
-
|
|
282
|
+
describe('/v1/attribution', () => {
|
|
282
283
|
const config = new ConfigProviderMemory();
|
|
283
284
|
const sandbox = sinon.createSandbox();
|
|
284
|
-
|
|
285
|
+
beforeEach(() => {
|
|
285
286
|
LogConfig.get().level = 'silent';
|
|
286
287
|
sandbox.stub(ConfigLoader, 'getDefaultConfig').resolves(config);
|
|
287
288
|
config.objects.clear();
|
|
@@ -290,86 +291,86 @@ o.spec('/v1/attribution', () => {
|
|
|
290
291
|
config.put(Imagery3857);
|
|
291
292
|
config.put(Provider);
|
|
292
293
|
});
|
|
293
|
-
|
|
294
|
+
afterEach(() => {
|
|
294
295
|
sandbox.restore();
|
|
295
296
|
});
|
|
296
|
-
|
|
297
|
+
it('should notFound', async () => {
|
|
297
298
|
const request = mockUrlRequest(`/v1/attribution/aerial/1234/summary.json`);
|
|
298
299
|
const res = await handler.router.handle(request);
|
|
299
|
-
|
|
300
|
+
assert.equal(res.status, 404);
|
|
300
301
|
});
|
|
301
|
-
|
|
302
|
+
it('should 304 with etag match', async () => {
|
|
302
303
|
const request = mockUrlRequest(`/v1/attribution/aerial/EPSG:3857/summary.json`, 'get', {
|
|
303
|
-
[HttpHeader.IfNoneMatch]: '
|
|
304
|
+
[HttpHeader.IfNoneMatch]: 'AFV7dcchHkfyFvmmyXwpkxuAPb5BuVXLkLzzYgeB3mFy',
|
|
304
305
|
});
|
|
305
306
|
const res = await handler.router.handle(request);
|
|
306
307
|
if (res.status === 200)
|
|
307
|
-
|
|
308
|
+
assert.equal(res.header('etag'), 'AFV7dcchHkfyFvmmyXwpkxuAPb5BuVXLkLzzYgeB3mFy');
|
|
308
309
|
console.log(res.header('etag'));
|
|
309
|
-
|
|
310
|
+
assert.equal(res.status, 304);
|
|
310
311
|
});
|
|
311
|
-
|
|
312
|
+
it('should parse attribution', async () => {
|
|
312
313
|
const request = mockUrlRequest(`/v1/attribution/aerial/EPSG:3857/summary.json`);
|
|
313
314
|
const res = await handler.router.handle(request);
|
|
314
|
-
|
|
315
|
+
assert.equal(res.status, 200);
|
|
315
316
|
const json = JSON.parse(res.body);
|
|
316
317
|
const attr = Attribution.fromStac(json);
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
318
|
+
assert.equal(attr.attributions.length, 1);
|
|
319
|
+
assert.equal(attr.attributions[0].minZoom, 0);
|
|
320
|
+
assert.equal(attr.attributions[0].maxZoom, 32);
|
|
320
321
|
});
|
|
321
|
-
|
|
322
|
+
describe('ImageryRules', () => {
|
|
322
323
|
const fakeLayer = { [2193]: Imagery2193.id, name: 'image', minZoom: 9, maxZoom: 16, title: 'Image' };
|
|
323
324
|
const ts = FakeData.tileSetRaster('fake');
|
|
324
|
-
|
|
325
|
+
beforeEach(() => {
|
|
325
326
|
ts.layers = [fakeLayer];
|
|
326
327
|
config.put(Imagery2193);
|
|
327
328
|
config.put(ts);
|
|
328
329
|
});
|
|
329
|
-
|
|
330
|
+
it('should generate for NZTM', async () => {
|
|
330
331
|
const req = mockUrlRequest('/v1/tiles/fake/NZTM2000/attribution.json', '');
|
|
331
332
|
const res = await handler.router.handle(req);
|
|
332
|
-
|
|
333
|
+
assert.equal(res.status, 200);
|
|
333
334
|
const output = JSON.parse(res.body);
|
|
334
|
-
|
|
335
|
-
|
|
335
|
+
assert.equal(output.title, ts.title);
|
|
336
|
+
assert.deepEqual(output.collections[0].summaries['linz:zoom'], { min: 5, max: 11 });
|
|
336
337
|
});
|
|
337
|
-
|
|
338
|
+
it('should generate with correct zooms for NZTM2000Quad', async () => {
|
|
338
339
|
const req = mockUrlRequest('/v1/tiles/fake/NZTM2000Quad/attribution.json', '');
|
|
339
340
|
const res = await handler.router.handle(req);
|
|
340
|
-
|
|
341
|
+
assert.equal(res.status, 200);
|
|
341
342
|
const output = JSON.parse(res.body);
|
|
342
|
-
|
|
343
|
-
|
|
343
|
+
assert.equal(output.title, ts.title);
|
|
344
|
+
assert.deepEqual(output.collections[0].summaries['linz:zoom'], { min: 7, max: 14 });
|
|
344
345
|
});
|
|
345
|
-
|
|
346
|
+
it('should generate with correct zooms for gebco NZTM2000Quad', async () => {
|
|
346
347
|
const fakeGebco = { ...fakeLayer, minZoom: 0, maxZoom: 15 };
|
|
347
348
|
ts.layers = [fakeGebco];
|
|
348
349
|
const req = mockUrlRequest('/v1/tiles/fake/NZTM2000Quad/attribution.json', '');
|
|
349
350
|
const res = await handler.router.handle(req);
|
|
350
|
-
|
|
351
|
+
assert.equal(res.status, 200);
|
|
351
352
|
const output = JSON.parse(res.body);
|
|
352
|
-
|
|
353
|
-
|
|
353
|
+
assert.equal(output.title, ts.title);
|
|
354
|
+
assert.deepEqual(output.collections[0].summaries['linz:zoom'], { min: 0, max: 13 });
|
|
354
355
|
});
|
|
355
|
-
|
|
356
|
+
it('should generate with correct zooms for nz sentinel NZTM2000Quad', async () => {
|
|
356
357
|
const fakeGebco = { ...fakeLayer, minZoom: 0, maxZoom: 32 };
|
|
357
358
|
ts.layers = [fakeGebco];
|
|
358
359
|
const req = mockUrlRequest('/v1/tiles/fake/NZTM2000Quad/attribution.json', '');
|
|
359
360
|
const res = await handler.router.handle(req);
|
|
360
|
-
|
|
361
|
+
assert.equal(res.status, 200);
|
|
361
362
|
const output = JSON.parse(res.body);
|
|
362
|
-
|
|
363
|
-
|
|
363
|
+
assert.equal(output.title, ts.title);
|
|
364
|
+
assert.deepEqual(output.collections[0].summaries['linz:zoom'], { min: 0, max: Nztm2000QuadTms.maxZoom });
|
|
364
365
|
});
|
|
365
366
|
});
|
|
366
|
-
|
|
367
|
+
it('should create valid coordinates', async () => {
|
|
367
368
|
//bbox: BBox, files: NamedBounds[], proj: Projection
|
|
368
369
|
const bbox = [174.79248047, -38.21228805, 175.25939941, -37.99616268];
|
|
369
370
|
const proj = Projection.get(GoogleTms);
|
|
370
371
|
const coordinates = createCoordinates(bbox, Imagery3857.files, proj);
|
|
371
372
|
console.log(JSON.stringify(coordinates));
|
|
372
|
-
|
|
373
|
+
assert.deepEqual(coordinates, [
|
|
373
374
|
[
|
|
374
375
|
[
|
|
375
376
|
[174.79247149, -38.09998972],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attribution.test.js","sourceRoot":"","sources":["../../../src/routes/__tests__/attribution.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"attribution.test.js","sourceRoot":"","sources":["../../../src/routes/__tests__/attribution.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,95 +1,93 @@
|
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
import { afterEach, beforeEach, describe, it } from 'node:test';
|
|
1
3
|
import { base58, ConfigProviderMemory } from '@basemaps/config';
|
|
2
|
-
import {
|
|
3
|
-
import { fsa } from '@chunkd/fs';
|
|
4
|
-
import
|
|
5
|
-
import { createSandbox } from 'sinon';
|
|
4
|
+
import { setDefaultConfig } from '@basemaps/shared';
|
|
5
|
+
import { fsa, FsMemory } from '@chunkd/fs';
|
|
6
|
+
import { Api, mockRequest, mockUrlRequest } from '../../__tests__/xyz.util.js';
|
|
6
7
|
import { handler } from '../../index.js';
|
|
7
8
|
import { CachedConfig } from '../../util/config.cache.js';
|
|
8
|
-
import { ConfigLoader } from '../../util/config.loader.js';
|
|
9
9
|
import { CoSources } from '../../util/source.cache.js';
|
|
10
|
-
import { Api, mockRequest, mockUrlRequest } from '../../__tests__/xyz.util.js';
|
|
11
10
|
import { fontList } from '../fonts.js';
|
|
12
|
-
|
|
13
|
-
o.spec('/v1/fonts', () => {
|
|
11
|
+
describe('/v1/fonts', () => {
|
|
14
12
|
const memory = new FsMemory();
|
|
15
|
-
const sandbox = createSandbox();
|
|
16
13
|
const config = new ConfigProviderMemory();
|
|
17
|
-
|
|
14
|
+
beforeEach(() => {
|
|
15
|
+
config.objects.clear();
|
|
18
16
|
fsa.register('memory://', memory);
|
|
17
|
+
config.assets = 'memory://assets/';
|
|
18
|
+
setDefaultConfig(config);
|
|
19
19
|
});
|
|
20
|
-
|
|
21
|
-
config.assets = 'memory://';
|
|
22
|
-
sandbox.stub(ConfigLoader, 'getDefaultConfig').resolves(config);
|
|
23
|
-
});
|
|
24
|
-
o.afterEach(() => {
|
|
25
|
-
sandbox.restore();
|
|
20
|
+
afterEach(() => {
|
|
26
21
|
CachedConfig.cache.clear();
|
|
27
22
|
CoSources.cache.clear();
|
|
28
23
|
memory.files.clear();
|
|
29
24
|
});
|
|
30
|
-
|
|
25
|
+
it('should return 404 if no font found', async () => {
|
|
31
26
|
const res = await fontList(mockRequest('/v1/fonts.json'));
|
|
32
|
-
|
|
27
|
+
assert.equal(res.status, 404);
|
|
33
28
|
});
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
await fsa.write('memory://fonts/fonts.json', Buffer.from(JSON.stringify(['Roboto Black', 'Roboto Thin'])));
|
|
29
|
+
it('should return a list of fonts found', async () => {
|
|
30
|
+
await fsa.write(new URL('memory://assets/fonts/fonts.json'), Buffer.from(JSON.stringify(['Roboto Black', 'Roboto Thin'])));
|
|
37
31
|
const res = await fontList(mockRequest('/v1/fonts.json'));
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
32
|
+
assert.equal(res.status, 200);
|
|
33
|
+
assert.equal(res.header('content-type'), 'application/json');
|
|
34
|
+
assert.equal(res.header('content-encoding'), undefined);
|
|
35
|
+
assert.equal(res._body?.toString(), JSON.stringify(['Roboto Black', 'Roboto Thin']));
|
|
42
36
|
});
|
|
43
|
-
|
|
44
|
-
await fsa.write('memory://fonts/Roboto Thin/0-255.pbf', Buffer.from(''));
|
|
37
|
+
it('should get the correct font', async () => {
|
|
38
|
+
await fsa.write(new URL('memory://assets/fonts/Roboto Thin/0-255.pbf'), Buffer.from(''));
|
|
45
39
|
const res255 = await handler.router.handle(mockRequest('/v1/fonts/Roboto Thin/0-255.pbf'));
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
40
|
+
assert.equal(res255.status, 200);
|
|
41
|
+
assert.equal(res255.header('content-type'), 'application/x-protobuf');
|
|
42
|
+
assert.equal(res255.header('content-encoding'), undefined);
|
|
43
|
+
assert.notEqual(res255.header('etag'), undefined);
|
|
44
|
+
assert.equal(res255.header('cache-control'), 'public, max-age=604800, stale-while-revalidate=86400');
|
|
51
45
|
const res404 = await handler.router.handle(mockRequest('/v1/fonts/Roboto Thin/256-512.pbf'));
|
|
52
|
-
|
|
46
|
+
assert.equal(res404.status, 404);
|
|
53
47
|
});
|
|
54
|
-
|
|
55
|
-
await fsa.write('memory://fonts/🦄 🌈/0-255.pbf', Buffer.from(''));
|
|
48
|
+
it('should get the correct utf8 font', async () => {
|
|
49
|
+
await fsa.write(new URL('memory://assets/fonts/🦄 🌈/0-255.pbf'), Buffer.from(''));
|
|
56
50
|
const res255 = await handler.router.handle(mockRequest('/v1/fonts/🦄 🌈/0-255.pbf'));
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
51
|
+
assert.equal(res255.status, 200);
|
|
52
|
+
assert.equal(res255.header('content-type'), 'application/x-protobuf');
|
|
53
|
+
assert.equal(res255.header('content-encoding'), undefined);
|
|
54
|
+
assert.notEqual(res255.header('etag'), undefined);
|
|
55
|
+
assert.equal(res255.header('cache-control'), 'public, max-age=604800, stale-while-revalidate=86400');
|
|
62
56
|
});
|
|
63
|
-
|
|
64
|
-
|
|
57
|
+
it('should return 404 if no asset location set', async () => {
|
|
58
|
+
config.assets = undefined;
|
|
65
59
|
const res = await fontList(mockRequest('/v1/fonts.json'));
|
|
66
|
-
|
|
60
|
+
assert.equal(res.status, 404);
|
|
67
61
|
});
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
62
|
+
it('should get the correct utf8 font with default assets', async () => {
|
|
63
|
+
config.assets = undefined;
|
|
64
|
+
config.objects.set('cb_latest', {
|
|
65
|
+
id: 'cb_latest',
|
|
66
|
+
name: 'latest',
|
|
67
|
+
path: 'latest',
|
|
68
|
+
hash: 'hash',
|
|
69
|
+
assets: 'memory://new-location/',
|
|
70
|
+
});
|
|
71
|
+
await fsa.write(new URL('memory://new-location/fonts/Roboto Thin/0-255.pbf'), Buffer.from(''));
|
|
74
72
|
const res255 = await handler.router.handle(mockRequest('/v1/fonts/Roboto Thin/0-255.pbf'));
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
73
|
+
assert.equal(res255.status, 200, res255.statusDescription);
|
|
74
|
+
assert.equal(res255.header('content-type'), 'application/x-protobuf');
|
|
75
|
+
assert.equal(res255.header('content-encoding'), undefined);
|
|
76
|
+
assert.notEqual(res255.header('etag'), undefined);
|
|
77
|
+
assert.equal(res255.header('cache-control'), 'public, max-age=604800, stale-while-revalidate=86400');
|
|
80
78
|
});
|
|
81
|
-
|
|
79
|
+
it('should get the correct utf8 font with config assets', async () => {
|
|
82
80
|
const cfgBundle = new ConfigProviderMemory();
|
|
83
|
-
cfgBundle.assets = 'memory://config/assets';
|
|
84
|
-
await fsa.write('memory://linz-basemaps/bar.json', JSON.stringify(cfgBundle.toJson()));
|
|
85
|
-
await fsa.write('memory://config/assets/fonts/🦄 🌈/0-255.pbf', Buffer.from(''));
|
|
81
|
+
cfgBundle.assets = 'memory://config/assets/';
|
|
82
|
+
await fsa.write(new URL('memory://linz-basemaps/bar.json'), JSON.stringify(cfgBundle.toJson()));
|
|
83
|
+
await fsa.write(new URL('memory://config/assets/fonts/🦄 🌈/0-255.pbf'), Buffer.from(''));
|
|
86
84
|
const configLocation = base58.encode(Buffer.from('memory://linz-basemaps/bar.json'));
|
|
87
85
|
const res255 = await handler.router.handle(mockUrlRequest('/v1/fonts/🦄 🌈/0-255.pbf', `?config=${configLocation}`, Api.header));
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
86
|
+
assert.equal(res255.status, 200);
|
|
87
|
+
assert.equal(res255.header('content-type'), 'application/x-protobuf');
|
|
88
|
+
assert.equal(res255.header('content-encoding'), undefined);
|
|
89
|
+
assert.notEqual(res255.header('etag'), undefined);
|
|
90
|
+
assert.equal(res255.header('cache-control'), 'public, max-age=604800, stale-while-revalidate=86400');
|
|
93
91
|
});
|
|
94
92
|
});
|
|
95
93
|
//# sourceMappingURL=fonts.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fonts.test.js","sourceRoot":"","sources":["../../../src/routes/__tests__/fonts.test.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"fonts.test.js","sourceRoot":"","sources":["../../../src/routes/__tests__/fonts.test.ts"],"names":[],"mappings":"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"}
|