@basemaps/lambda-tiler 8.13.0 → 8.13.2

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 CHANGED
@@ -3,6 +3,38 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [8.13.2](https://github.com/linz/basemaps/compare/lambda-tiler-v8.13.1...lambda-tiler-v8.13.2) (2026-05-17)
7
+
8
+
9
+ ### Dependencies
10
+
11
+ * The following workspace dependencies were updated
12
+ * dependencies
13
+ * @basemaps/config bumped from ^8.13.1 to ^8.13.2
14
+ * @basemaps/config-loader bumped from ^8.12.4 to ^8.12.5
15
+ * @basemaps/geo bumped from ^8.9.0 to ^8.9.1
16
+ * @basemaps/shared bumped from ^8.9.8 to ^8.9.9
17
+ * @basemaps/tiler bumped from ^8.12.2 to ^8.12.3
18
+ * @basemaps/tiler-sharp bumped from ^8.11.5 to ^8.11.6
19
+ * devDependencies
20
+ * @basemaps/attribution bumped from ^8.9.0 to ^8.9.1
21
+
22
+ ## [8.13.1](https://github.com/linz/basemaps/compare/lambda-tiler-v8.13.0...lambda-tiler-v8.13.1) (2026-02-26)
23
+
24
+
25
+ ### Bug Fixes
26
+
27
+ * lower memory usage when rendering from large amounts of tiffs BM-1535 ([#3605](https://github.com/linz/basemaps/issues/3605)) ([9dc711d](https://github.com/linz/basemaps/commit/9dc711daf77a904ddb3b1d9b1083e01d0ef37818))
28
+
29
+
30
+ ### Dependencies
31
+
32
+ * The following workspace dependencies were updated
33
+ * dependencies
34
+ * @basemaps/config-loader bumped from ^8.12.3 to ^8.12.4
35
+ * @basemaps/shared bumped from ^8.9.7 to ^8.9.8
36
+ * @basemaps/tiler-sharp bumped from ^8.11.4 to ^8.11.5
37
+
6
38
  ## [8.13.0](https://github.com/linz/basemaps/compare/lambda-tiler-v8.12.2...lambda-tiler-v8.13.0) (2026-02-15)
7
39
 
8
40
 
@@ -1,7 +1,7 @@
1
1
  import { ConfigProviderMemory } from '@basemaps/config';
2
2
  import { initConfigFromUrls } from '@basemaps/config-loader';
3
3
  import { TileMatrixSets } from '@basemaps/geo';
4
- import { fsa, LogConfig, setDefaultConfig } from '@basemaps/shared';
4
+ import { fsa, FsaLocalCache, LogConfig, setDefaultConfig } from '@basemaps/shared';
5
5
  import { LambdaUrlRequest } from '@linzjs/lambda';
6
6
  import { extname } from 'path';
7
7
  import { TileXyzRaster } from '../routes/tile.xyz.raster.js';
@@ -21,6 +21,7 @@ if (sourceRaw == null || tilePath == null) {
21
21
  `);
22
22
  process.exit(1);
23
23
  }
24
+ fsa.middleware.push(FsaLocalCache);
24
25
  const source = fsa.toUrl(sourceRaw);
25
26
  const tile = fromPath(tilePath);
26
27
  let tileMatrix = null;
@@ -38,13 +39,22 @@ function fromPath(s) {
38
39
  }
39
40
  return tile;
40
41
  }
42
+ async function loadConfig(url) {
43
+ if (url.pathname.endsWith('.json') || url.pathname.endsWith('.json.gz')) {
44
+ const cfg = ConfigProviderMemory.fromJson(await fsa.readJson(url), url);
45
+ LogConfig.get().info({ url: url.href }, 'ConfigLoaded');
46
+ const imagery = [...cfg.objects.values()].filter((f) => f.id.startsWith('im_'));
47
+ return { tileSet: cfg.imageryToTileSetByName(imagery[0]), imagery, cfg };
48
+ }
49
+ const cfg = new ConfigProviderMemory();
50
+ const { imagery } = await initConfigFromUrls(cfg, [url]);
51
+ return { tileSet: cfg.imageryToTileSetByName(imagery[0]), imagery, cfg };
52
+ }
41
53
  async function main() {
42
54
  const log = LogConfig.get();
43
- log.level = 'trace';
44
- const provider = new ConfigProviderMemory();
45
- setDefaultConfig(provider);
46
- const { imagery } = await initConfigFromUrls(provider, [source]);
47
- const tileSet = provider.imageryToTileSetByName(imagery[0]);
55
+ log.level = process.argv.includes('--verbose') ? 'trace' : 'debug';
56
+ const { tileSet, imagery, cfg } = await loadConfig(source);
57
+ setDefaultConfig(cfg);
48
58
  log.info({ tileSet: tileSet.name, layers: tileSet.layers.length }, 'TileSet:Loaded');
49
59
  for (const im of imagery) {
50
60
  log.info({ url: im.uri, title: im.title, tileMatrix: im.tileMatrix, files: im.files.length }, 'Imagery:Loaded');
@@ -1 +1 @@
1
- {"version":3,"file":"render.tile.js","sourceRoot":"","sources":["../../src/cli/render.tile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.tile.js","sourceRoot":"","sources":["../../src/cli/render.tile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,oBAAoB,EAAuB,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAuB,cAAc,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAqB,gBAAgB,EAAY,MAAM,gBAAgB,CAAC;AAE/E,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEjC,IAAI,SAAS,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;IAC1C,sCAAsC;IACtC,OAAO,CAAC,GAAG,CAAC;;;;;;;;GAQX,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAEnC,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACpC,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAChC,IAAI,UAAU,GAAyB,IAAI,CAAC;AAE5C,gEAAgE;AAChE,SAAS,QAAQ,CAAC,CAAS;IACzB,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACrD,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,KAAK,CAAC,KAAK,EAAE,CAAC;IACrC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;IAEvE,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,CAAC,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,GAAQ;IAER,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACxE,MAAM,GAAG,GAAG,oBAAoB,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QACxE,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,cAAc,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAoB,CAAC;QACnG,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAC3E,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,oBAAoB,EAAE,CAAC;IACvC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzD,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;AAC3E,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC;IAC5B,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAEnE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;IAC3D,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAEtB,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC;IAErF,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;QACzB,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC;QAChH,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;YACvB,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;YAChD,GAAG,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,EAAE,wBAAwB,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,IAAI,UAAU,IAAI,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE,EAAc,EAAE,EAAa,EAAE,GAAG,CAAsB,CAAC;IAE3G,OAAO,CAAC,UAAU,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC3D,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE;QACrD,IAAI;QACJ,UAAU;QACV,OAAO,EAAE,OAAO,CAAC,EAAE;QACnB,QAAQ,EAAE,IAAI,CAAC,SAAS;QACxB,QAAQ;KACT,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAEpD,MAAM,QAAQ,GAAG,YAAY,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,YAAY,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;IAC3F,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IACtE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;AACvE,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;IACjB,SAAS,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;AAClD,CAAC,CAAC,CAAC"}
package/build/index.js CHANGED
@@ -43,10 +43,10 @@ handler.router.hook('request', (req) => {
43
43
  FsaLog.reset();
44
44
  randomTrace(req);
45
45
  req.set('name', 'LambdaTiler');
46
+ req.log.debug({ ...req.logContext }, 'Lambda:Start');
46
47
  });
47
48
  handler.router.hook('response', (req, res) => {
48
49
  req.set('fetchCount', FsaLog.count);
49
- req.set('fetches', FsaLog.requests);
50
50
  req.set('cacheSize', FsaCache.size);
51
51
  // Force access-control-allow-origin to everything
52
52
  res.header('access-control-allow-origin', '*');
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,14 @@
1
1
  import assert from 'node:assert';
2
2
  import { afterEach, before, beforeEach, describe, it } from 'node:test';
3
3
  import { ConfigProviderMemory } from '@basemaps/config';
4
- import { LogConfig } from '@basemaps/shared';
5
- import { LambdaAlbRequest, LambdaHttpResponse } from '@linzjs/lambda';
4
+ import { LambdaHttpResponse } from '@linzjs/lambda';
6
5
  import sinon from 'sinon';
7
6
  import { FakeData } from '../../__tests__/config.data.js';
7
+ import { mockRequest } from '../../__tests__/xyz.util.js';
8
8
  import { ConfigLoader } from '../../util/config.loader.js';
9
9
  import { getTestBuffer, healthGet, TestTiles, VectorTileProvider } from '../health.js';
10
10
  import { TileXyzRaster } from '../tile.xyz.raster.js';
11
11
  import { tileXyzVector } from '../tile.xyz.vector.js';
12
- const ctx = new LambdaAlbRequest({
13
- requestContext: null,
14
- httpMethod: 'get',
15
- path: '/v1/tiles/health',
16
- body: null,
17
- isBase64Encoded: false,
18
- }, {}, LogConfig.get());
19
12
  // Function to create a vector tile with specific properties for testing
20
13
  function createTestTile(testFeatures) {
21
14
  const layers = {};
@@ -48,13 +41,13 @@ describe('/v1/health', () => {
48
41
  config.objects.clear();
49
42
  sandbox.restore();
50
43
  });
51
- it('Should return bad response', () => {
44
+ it('Should return bad response', async () => {
52
45
  // Given ... a bad get tile response
53
46
  const BadResponse = new LambdaHttpResponse(500, 'Can not get Tile Set.');
54
47
  sandbox.stub(TileXyzRaster, 'tile').resolves(BadResponse);
55
48
  sandbox.stub(tileXyzVector, 'tile').resolves(BadResponse);
56
49
  // When ...Then ...
57
- assert.rejects(() => healthGet(ctx), BadResponse);
50
+ await assert.rejects(() => healthGet(mockRequest('/v1/tiles/health')), BadResponse);
58
51
  });
59
52
  const Response1 = new LambdaHttpResponse(200, 'ok');
60
53
  const Response2 = new LambdaHttpResponse(200, 'ok');
@@ -76,18 +69,18 @@ describe('/v1/health', () => {
76
69
  callbackVectorTile.onCall(0).resolves(testVectorTile1);
77
70
  callbackVectorTile.onCall(1).resolves(testVectorTile2);
78
71
  // When ...
79
- const res = await healthGet(ctx);
72
+ const res = await healthGet(mockRequest('/v1/tiles/health'));
80
73
  // Then ...
81
74
  assert.equal(res.status, 200);
82
75
  assert.equal(res.statusDescription, 'ok');
83
76
  });
84
- it('Should return mis-match tile response', () => {
77
+ it('Should return mis-match tile response', async () => {
85
78
  // Given ... a bad get tile response for second get tile
86
79
  const callback = sandbox.stub(TileXyzRaster, 'tile');
87
80
  callback.onCall(0).resolves(Response2);
88
81
  // When ... Then ...
89
82
  const BadResponse = new LambdaHttpResponse(500, 'TileSet does not match.');
90
- assert.rejects(() => healthGet(ctx), BadResponse);
83
+ await assert.rejects(() => healthGet(mockRequest('/v1/tiles/health')), BadResponse);
91
84
  });
92
85
  });
93
86
  //# sourceMappingURL=health.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"health.test.js","sourceRoot":"","sources":["../../../src/routes/__tests__/health.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"health.test.js","sourceRoot":"","sources":["../../../src/routes/__tests__/health.test.ts"],"names":[],"mappings":"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"}
@@ -6,4 +6,5 @@ export declare class ConfigLoader {
6
6
  /** Lookup the config path from a request and return a standardized location */
7
7
  static extract(req: LambdaHttpRequest): string | null;
8
8
  static load(req: LambdaHttpRequest): Promise<BasemapsConfigProvider>;
9
+ static _load(req: LambdaHttpRequest): Promise<BasemapsConfigProvider>;
9
10
  }
@@ -19,9 +19,9 @@ export class ConfigLoader {
19
19
  const cb = await config.ConfigBundle.get('cb_latest');
20
20
  if (cb == null)
21
21
  return config;
22
- req?.timer.start('config:load');
23
- return CachedConfig.get(fsa.toUrl(cb.path)).then((cfg) => {
24
- req?.timer.end('config:load');
22
+ const configUrl = fsa.toUrl(cb.path);
23
+ return CachedConfig.get(configUrl).then((cfg) => {
24
+ req?.set('config', configUrl.href);
25
25
  if (cfg == null)
26
26
  throw new LambdaHttpResponse(500, 'Unable to find latest configuration');
27
27
  if (cfg.assets == null)
@@ -39,9 +39,15 @@ export class ConfigLoader {
39
39
  return rawLocation;
40
40
  }
41
41
  static async load(req) {
42
+ req.timer.start('config:load');
43
+ const config = await this._load(req);
44
+ req.timer.end('config:load');
45
+ return config;
46
+ }
47
+ static async _load(req) {
42
48
  const rawLocation = req.query.get('config');
43
49
  if (rawLocation == null)
44
- return this.getDefaultConfig();
50
+ return this.getDefaultConfig(req);
45
51
  const configLocation = isBase58(rawLocation) ? Buffer.from(base58.decode(rawLocation)).toString() : rawLocation;
46
52
  const configUrl = fsa.toUrl(configLocation);
47
53
  if (configUrl == null)
@@ -52,10 +58,8 @@ export class ConfigLoader {
52
58
  if (!SafeBuckets.has(configUrl.hostname)) {
53
59
  throw new LambdaHttpResponse(400, `Bucket: "${configUrl.hostname}" is not a allowed bucket location`);
54
60
  }
55
- req.set('config', configUrl.href);
56
- req.timer.start('config:load');
57
61
  return CachedConfig.get(configUrl).then((f) => {
58
- req.timer.end('config:load');
62
+ req.set('config', configUrl.href);
59
63
  if (f == null)
60
64
  throw new LambdaHttpResponse(400, `Invalid config location at ${configLocation}`);
61
65
  return f;
@@ -1 +1 @@
1
- {"version":3,"file":"config.loader.js","sourceRoot":"","sources":["../../src/util/config.loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAA0B,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,GAAG,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,+CAA+C;AAC/C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;IAC1B,wBAAwB;IACxB,yBAAyB;IACzB,eAAe;IACf,uBAAuB;IACvB,uBAAuB;CACxB,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAErG,MAAM,OAAO,YAAY;IACvB,0BAA0B;IAC1B,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAuB;QACnD,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;QAElC,gGAAgG;QAChG,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACtD,IAAI,EAAE,IAAI,IAAI;YAAE,OAAO,MAAM,CAAC;QAE9B,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAEhC,OAAO,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACvD,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC9B,IAAI,GAAG,IAAI,IAAI;gBAAE,MAAM,IAAI,kBAAkB,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;YAC1F,IAAI,GAAG,CAAC,MAAM,IAAI,IAAI;gBAAE,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;YAC/C,OAAO,GAAG,CAAC;QACb,CAAC,CAAC,CAAC;IACL,CAAC;IAED,+EAA+E;IAC/E,MAAM,CAAC,OAAO,CAAC,GAAsB;QACnC,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,WAAW,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QACrC,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAC9E,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAsB;QACtC,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,WAAW,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExD,MAAM,cAAc,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;QAChH,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAE5C,IAAI,SAAS,IAAI,IAAI;YAAE,MAAM,IAAI,kBAAkB,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;QACpF,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,kBAAkB,CAAC,GAAG,EAAE,2CAA2C,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrG,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,kBAAkB,CAAC,GAAG,EAAE,YAAY,SAAS,CAAC,QAAQ,oCAAoC,CAAC,CAAC;QACxG,CAAC;QAED,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QAClC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC/B,OAAO,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YAC5C,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC7B,IAAI,CAAC,IAAI,IAAI;gBAAE,MAAM,IAAI,kBAAkB,CAAC,GAAG,EAAE,8BAA8B,cAAc,EAAE,CAAC,CAAC;YACjG,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"config.loader.js","sourceRoot":"","sources":["../../src/util/config.loader.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@basemaps/lambda-tiler",
3
- "version": "8.13.0",
3
+ "version": "8.13.2",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/linz/basemaps.git",
@@ -22,12 +22,12 @@
22
22
  "types": "./build/index.d.ts",
23
23
  "license": "MIT",
24
24
  "dependencies": {
25
- "@basemaps/config": "^8.13.1",
26
- "@basemaps/config-loader": "^8.12.3",
27
- "@basemaps/geo": "^8.9.0",
28
- "@basemaps/shared": "^8.9.7",
29
- "@basemaps/tiler": "^8.12.2",
30
- "@basemaps/tiler-sharp": "^8.11.4",
25
+ "@basemaps/config": "^8.13.2",
26
+ "@basemaps/config-loader": "^8.12.5",
27
+ "@basemaps/geo": "^8.9.1",
28
+ "@basemaps/shared": "^8.9.9",
29
+ "@basemaps/tiler": "^8.12.3",
30
+ "@basemaps/tiler-sharp": "^8.11.6",
31
31
  "@linzjs/geojson": "^8.0.0",
32
32
  "@linzjs/lambda": "^4.2.0",
33
33
  "@mapbox/vector-tile": "^2.0.3",
@@ -50,11 +50,11 @@
50
50
  "bundle": "./bundle.sh"
51
51
  },
52
52
  "devDependencies": {
53
- "@basemaps/attribution": "^8.9.0",
53
+ "@basemaps/attribution": "^8.9.1",
54
54
  "@chunkd/fs": "^11.2.0",
55
55
  "@types/aws-lambda": "^8.10.75",
56
56
  "@types/pixelmatch": "^5.0.0",
57
57
  "pretty-json-log": "^1.0.0"
58
58
  },
59
- "gitHead": "e9bb0101152463385db641a64975365b4f19b18e"
59
+ "gitHead": "0ed5769fbfc070ca14c95a498a80eff05128203f"
60
60
  }
@@ -1,7 +1,7 @@
1
- import { ConfigProviderMemory } from '@basemaps/config';
1
+ import { ConfigImagery, ConfigProviderMemory, ConfigTileSetRaster } from '@basemaps/config';
2
2
  import { initConfigFromUrls } from '@basemaps/config-loader';
3
3
  import { Tile, TileMatrixSet, TileMatrixSets } from '@basemaps/geo';
4
- import { fsa, LogConfig, setDefaultConfig } from '@basemaps/shared';
4
+ import { fsa, FsaLocalCache, LogConfig, setDefaultConfig } from '@basemaps/shared';
5
5
  import { LambdaHttpRequest, LambdaUrlRequest, UrlEvent } from '@linzjs/lambda';
6
6
  import { Context } from 'aws-lambda';
7
7
  import { extname } from 'path';
@@ -25,6 +25,9 @@ if (sourceRaw == null || tilePath == null) {
25
25
  `);
26
26
  process.exit(1);
27
27
  }
28
+
29
+ fsa.middleware.push(FsaLocalCache);
30
+
28
31
  const source = fsa.toUrl(sourceRaw);
29
32
  const tile = fromPath(tilePath);
30
33
  let tileMatrix: TileMatrixSet | null = null;
@@ -43,14 +46,27 @@ function fromPath(s: string): Tile & { extension: string } {
43
46
  return tile;
44
47
  }
45
48
 
49
+ async function loadConfig(
50
+ url: URL,
51
+ ): Promise<{ tileSet: ConfigTileSetRaster; imagery: ConfigImagery[]; cfg: ConfigProviderMemory }> {
52
+ if (url.pathname.endsWith('.json') || url.pathname.endsWith('.json.gz')) {
53
+ const cfg = ConfigProviderMemory.fromJson(await fsa.readJson(url), url);
54
+ LogConfig.get().info({ url: url.href }, 'ConfigLoaded');
55
+ const imagery = [...cfg.objects.values()].filter((f) => f.id.startsWith('im_')) as ConfigImagery[];
56
+ return { tileSet: cfg.imageryToTileSetByName(imagery[0]), imagery, cfg };
57
+ }
58
+
59
+ const cfg = new ConfigProviderMemory();
60
+ const { imagery } = await initConfigFromUrls(cfg, [url]);
61
+ return { tileSet: cfg.imageryToTileSetByName(imagery[0]), imagery, cfg };
62
+ }
63
+
46
64
  async function main(): Promise<void> {
47
65
  const log = LogConfig.get();
48
- log.level = 'trace';
49
- const provider = new ConfigProviderMemory();
50
- setDefaultConfig(provider);
51
- const { imagery } = await initConfigFromUrls(provider, [source]);
66
+ log.level = process.argv.includes('--verbose') ? 'trace' : 'debug';
52
67
 
53
- const tileSet = provider.imageryToTileSetByName(imagery[0]);
68
+ const { tileSet, imagery, cfg } = await loadConfig(source);
69
+ setDefaultConfig(cfg);
54
70
 
55
71
  log.info({ tileSet: tileSet.name, layers: tileSet.layers.length }, 'TileSet:Loaded');
56
72
 
package/src/index.ts CHANGED
@@ -48,11 +48,12 @@ handler.router.hook('request', (req) => {
48
48
  randomTrace(req);
49
49
 
50
50
  req.set('name', 'LambdaTiler');
51
+
52
+ req.log.debug({ ...req.logContext }, 'Lambda:Start');
51
53
  });
52
54
 
53
55
  handler.router.hook('response', (req, res) => {
54
56
  req.set('fetchCount', FsaLog.count);
55
- req.set('fetches', FsaLog.requests);
56
57
  req.set('cacheSize', FsaCache.size);
57
58
  // Force access-control-allow-origin to everything
58
59
  res.header('access-control-allow-origin', '*');
@@ -2,30 +2,17 @@ import assert from 'node:assert';
2
2
  import { afterEach, before, beforeEach, describe, it } from 'node:test';
3
3
 
4
4
  import { ConfigProviderMemory } from '@basemaps/config';
5
- import { LogConfig } from '@basemaps/shared';
6
- import { LambdaAlbRequest, LambdaHttpRequest, LambdaHttpResponse } from '@linzjs/lambda';
5
+ import { LambdaHttpResponse } from '@linzjs/lambda';
7
6
  import { VectorTile, VectorTileFeature, VectorTileLayer } from '@mapbox/vector-tile';
8
- import { ALBEventRequestContext, Context } from 'aws-lambda';
9
7
  import sinon from 'sinon';
10
8
 
11
9
  import { FakeData } from '../../__tests__/config.data.js';
10
+ import { mockRequest } from '../../__tests__/xyz.util.js';
12
11
  import { ConfigLoader } from '../../util/config.loader.js';
13
12
  import { getTestBuffer, healthGet, TestFeature, TestTiles, VectorTileProvider } from '../health.js';
14
13
  import { TileXyzRaster } from '../tile.xyz.raster.js';
15
14
  import { tileXyzVector } from '../tile.xyz.vector.js';
16
15
 
17
- const ctx: LambdaHttpRequest = new LambdaAlbRequest(
18
- {
19
- requestContext: null as unknown as ALBEventRequestContext,
20
- httpMethod: 'get',
21
- path: '/v1/tiles/health',
22
- body: null,
23
- isBase64Encoded: false,
24
- },
25
- {} as Context,
26
- LogConfig.get(),
27
- );
28
-
29
16
  // Function to create a vector tile with specific properties for testing
30
17
  function createTestTile(testFeatures: TestFeature[]): VectorTile {
31
18
  const layers: Record<string, VectorTileLayer> = {};
@@ -65,14 +52,14 @@ describe('/v1/health', () => {
65
52
  sandbox.restore();
66
53
  });
67
54
 
68
- it('Should return bad response', () => {
55
+ it('Should return bad response', async () => {
69
56
  // Given ... a bad get tile response
70
57
  const BadResponse = new LambdaHttpResponse(500, 'Can not get Tile Set.');
71
58
  sandbox.stub(TileXyzRaster, 'tile').resolves(BadResponse);
72
59
  sandbox.stub(tileXyzVector, 'tile').resolves(BadResponse);
73
60
 
74
61
  // When ...Then ...
75
- assert.rejects(() => healthGet(ctx), BadResponse);
62
+ await assert.rejects(() => healthGet(mockRequest('/v1/tiles/health')), BadResponse);
76
63
  });
77
64
 
78
65
  const Response1 = new LambdaHttpResponse(200, 'ok');
@@ -99,20 +86,20 @@ describe('/v1/health', () => {
99
86
  callbackVectorTile.onCall(1).resolves(testVectorTile2);
100
87
 
101
88
  // When ...
102
- const res = await healthGet(ctx);
89
+ const res = await healthGet(mockRequest('/v1/tiles/health'));
103
90
 
104
91
  // Then ...
105
92
  assert.equal(res.status, 200);
106
93
  assert.equal(res.statusDescription, 'ok');
107
94
  });
108
95
 
109
- it('Should return mis-match tile response', () => {
96
+ it('Should return mis-match tile response', async () => {
110
97
  // Given ... a bad get tile response for second get tile
111
98
  const callback = sandbox.stub(TileXyzRaster, 'tile');
112
99
  callback.onCall(0).resolves(Response2);
113
100
 
114
101
  // When ... Then ...
115
102
  const BadResponse = new LambdaHttpResponse(500, 'TileSet does not match.');
116
- assert.rejects(() => healthGet(ctx), BadResponse);
103
+ await assert.rejects(() => healthGet(mockRequest('/v1/tiles/health')), BadResponse);
117
104
  });
118
105
  });
@@ -25,10 +25,10 @@ export class ConfigLoader {
25
25
  const cb = await config.ConfigBundle.get('cb_latest');
26
26
  if (cb == null) return config;
27
27
 
28
- req?.timer.start('config:load');
28
+ const configUrl = fsa.toUrl(cb.path);
29
+ return CachedConfig.get(configUrl).then((cfg) => {
30
+ req?.set('config', configUrl.href);
29
31
 
30
- return CachedConfig.get(fsa.toUrl(cb.path)).then((cfg) => {
31
- req?.timer.end('config:load');
32
32
  if (cfg == null) throw new LambdaHttpResponse(500, 'Unable to find latest configuration');
33
33
  if (cfg.assets == null) cfg.assets = cb.assets;
34
34
  return cfg;
@@ -44,8 +44,15 @@ export class ConfigLoader {
44
44
  }
45
45
 
46
46
  static async load(req: LambdaHttpRequest): Promise<BasemapsConfigProvider> {
47
+ req.timer.start('config:load');
48
+ const config = await this._load(req);
49
+ req.timer.end('config:load');
50
+ return config;
51
+ }
52
+
53
+ static async _load(req: LambdaHttpRequest): Promise<BasemapsConfigProvider> {
47
54
  const rawLocation = req.query.get('config');
48
- if (rawLocation == null) return this.getDefaultConfig();
55
+ if (rawLocation == null) return this.getDefaultConfig(req);
49
56
 
50
57
  const configLocation = isBase58(rawLocation) ? Buffer.from(base58.decode(rawLocation)).toString() : rawLocation;
51
58
  const configUrl = fsa.toUrl(configLocation);
@@ -58,10 +65,9 @@ export class ConfigLoader {
58
65
  throw new LambdaHttpResponse(400, `Bucket: "${configUrl.hostname}" is not a allowed bucket location`);
59
66
  }
60
67
 
61
- req.set('config', configUrl.href);
62
- req.timer.start('config:load');
63
68
  return CachedConfig.get(configUrl).then((f) => {
64
- req.timer.end('config:load');
69
+ req.set('config', configUrl.href);
70
+
65
71
  if (f == null) throw new LambdaHttpResponse(400, `Invalid config location at ${configLocation}`);
66
72
  return f;
67
73
  });