@basemaps/lambda-tiler 7.10.0 → 7.12.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 CHANGED
@@ -3,6 +3,34 @@
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
+ # [7.12.0](https://github.com/linz/basemaps/compare/v7.11.1...v7.12.0) (2024-11-14)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **lambda-tiler:** correctly log fetch requests ([#3359](https://github.com/linz/basemaps/issues/3359)) ([9fa3681](https://github.com/linz/basemaps/commit/9fa3681acc2ce25037c5d6e0326255aad9815b7d))
12
+
13
+
14
+ ### Features
15
+
16
+ * **lambda-tiler:** update imagery layer attributions to show licensor details BM-897 ([#3357](https://github.com/linz/basemaps/issues/3357)) ([e702c7e](https://github.com/linz/basemaps/commit/e702c7e53d28aaa8db9d624acab048f8ec3a2309))
17
+ * **server:** add redirect route to pre-zoomed tileset BM-1076 ([#3354](https://github.com/linz/basemaps/issues/3354)) ([5b207de](https://github.com/linz/basemaps/commit/5b207de92b76e0d445a41ef8e1e9b9b91e5363c6))
18
+
19
+
20
+
21
+
22
+
23
+ # [7.11.0](https://github.com/linz/basemaps/compare/v7.10.0...v7.11.0) (2024-09-29)
24
+
25
+
26
+ ### Features
27
+
28
+ * **landing:** store the maps bounds to provide a better bounding box intersection ([#3346](https://github.com/linz/basemaps/issues/3346)) ([a420f57](https://github.com/linz/basemaps/commit/a420f57b2d21354c3fbf1a1be2e01a66d5c38d76))
29
+
30
+
31
+
32
+
33
+
6
34
  # [7.10.0](https://github.com/linz/basemaps/compare/v7.9.0...v7.10.0) (2024-09-16)
7
35
 
8
36
 
package/build/index.js CHANGED
@@ -1,10 +1,11 @@
1
- import { FsaCache, FsaLog, LogConfig } from '@basemaps/shared';
1
+ import { FsaCache, FsaLog, LogConfig, LogStorage } 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';
5
5
  import { fontGet, fontList } from './routes/fonts.js';
6
6
  import { healthGet } from './routes/health.js';
7
7
  import { imageryGet } from './routes/imagery.js';
8
+ import { linkGet } from './routes/link.js';
8
9
  import { pingGet } from './routes/ping.js';
9
10
  import { previewIndexGet } from './routes/preview.index.js';
10
11
  import { tilePreviewGet } from './routes/preview.js';
@@ -29,20 +30,22 @@ function randomTrace(req) {
29
30
  // 1% trace
30
31
  if (rand < 0.01)
31
32
  req.log.level = 'trace';
32
- // 5% debug
33
- else if (rand < 0.04)
33
+ // 25% debug
34
+ else if (rand < 0.25)
34
35
  req.log.level = 'debug';
35
36
  // everything else info
36
37
  else
37
38
  req.log.level = 'info';
38
39
  }
39
40
  handler.router.hook('request', (req) => {
41
+ LogStorage.enterWith({ log: req.log });
40
42
  FsaLog.reset();
41
43
  randomTrace(req);
42
44
  req.set('name', 'LambdaTiler');
43
45
  });
44
46
  handler.router.hook('response', (req, res) => {
45
- req.set('requestCount', FsaLog.requests.length);
47
+ req.set('fetchCount', FsaLog.count);
48
+ req.set('fetches', FsaLog.requests);
46
49
  req.set('cacheSize', FsaCache.size);
47
50
  // Force access-control-allow-origin to everything
48
51
  res.header('access-control-allow-origin', '*');
@@ -84,6 +87,8 @@ handler.router.get('/v1/preview/:tileSet/:tileMatrix/:z/:lon/:lat', tilePreviewG
84
87
  handler.router.get('/v1/preview/:tileSet/:tileMatrix/:z/:lon/:lat/:outputType', tilePreviewGet);
85
88
  handler.router.get('/v1/@:location', previewIndexGet);
86
89
  handler.router.get('/@:location', previewIndexGet);
90
+ // Link
91
+ handler.router.get('/v1/link/:tileSet', linkGet);
87
92
  // Attribution
88
93
  handler.router.get('/v1/tiles/:tileSet/:tileMatrix/attribution.json', tileAttributionGet);
89
94
  handler.router.get('/v1/attribution/:tileSet/:tileMatrix/summary.json', tileAttributionGet);
@@ -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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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,82 @@
1
+ import { strictEqual } from 'node:assert';
2
+ import { afterEach, describe, it } from 'node:test';
3
+ import { ConfigProviderMemory } from '@basemaps/config';
4
+ import { Epsg } from '@basemaps/geo';
5
+ import { FakeData, Imagery3857 } from '../../__tests__/config.data.js';
6
+ import { mockRequest } from '../../__tests__/xyz.util.js';
7
+ import { handler } from '../../index.js';
8
+ import { ConfigLoader } from '../../util/config.loader.js';
9
+ describe('/v1/link/:tileSet', () => {
10
+ const FakeTileSetName = 'tileset';
11
+ const config = new ConfigProviderMemory();
12
+ afterEach(() => {
13
+ config.objects.clear();
14
+ });
15
+ /**
16
+ * 3xx status responses
17
+ */
18
+ // tileset found, is raster type, has one layer, has '3857' entry, imagery found > 302 response
19
+ it('success: redirect to pre-zoomed imagery', async (t) => {
20
+ t.mock.method(ConfigLoader, 'getDefaultConfig', () => Promise.resolve(config));
21
+ config.put(FakeData.tileSetRaster(FakeTileSetName));
22
+ config.put(Imagery3857);
23
+ const req = mockRequest(`/v1/link/${FakeTileSetName}`);
24
+ const res = await handler.router.handle(req);
25
+ strictEqual(res.status, 302);
26
+ strictEqual(res.statusDescription, 'Redirect to pre-zoomed imagery');
27
+ });
28
+ /**
29
+ * 4xx status responses
30
+ */
31
+ // tileset not found > 404 response
32
+ it('failure: tileset not found', async (t) => {
33
+ t.mock.method(ConfigLoader, 'getDefaultConfig', () => Promise.resolve(config));
34
+ const req = mockRequest(`/v1/link/${FakeTileSetName}`);
35
+ const res = await handler.router.handle(req);
36
+ strictEqual(res.status, 404);
37
+ strictEqual(res.statusDescription, 'Tileset not found');
38
+ });
39
+ // tileset found, not raster type > 400 response
40
+ it('failure: tileset must be raster type', async (t) => {
41
+ t.mock.method(ConfigLoader, 'getDefaultConfig', () => Promise.resolve(config));
42
+ config.put(FakeData.tileSetVector(FakeTileSetName));
43
+ const req = mockRequest(`/v1/link/${FakeTileSetName}`);
44
+ const res = await handler.router.handle(req);
45
+ strictEqual(res.status, 400);
46
+ strictEqual(res.statusDescription, 'Tileset must be raster type');
47
+ });
48
+ // tileset found, is raster type, has more than one layer > 400 response
49
+ it('failure: too many layers', async (t) => {
50
+ t.mock.method(ConfigLoader, 'getDefaultConfig', () => Promise.resolve(config));
51
+ const tileSet = FakeData.tileSetRaster(FakeTileSetName);
52
+ // add another layer
53
+ tileSet.layers.push(tileSet.layers[0]);
54
+ config.put(tileSet);
55
+ const req = mockRequest(`/v1/link/${FakeTileSetName}`);
56
+ const res = await handler.router.handle(req);
57
+ strictEqual(res.status, 400);
58
+ strictEqual(res.statusDescription, 'Too many layers');
59
+ });
60
+ // tileset found, is raster type, has one layer, no '3857' entry > 400 response
61
+ it("failure: no imagery for '3857' projection", async (t) => {
62
+ t.mock.method(ConfigLoader, 'getDefaultConfig', () => Promise.resolve(config));
63
+ const tileSet = FakeData.tileSetRaster(FakeTileSetName);
64
+ // delete '3857' entry
65
+ delete tileSet.layers[0][Epsg.Google.code];
66
+ config.put(tileSet);
67
+ const req = mockRequest(`/v1/link/${FakeTileSetName}`);
68
+ const res = await handler.router.handle(req);
69
+ strictEqual(res.status, 400);
70
+ strictEqual(res.statusDescription, "No imagery for '3857' projection");
71
+ });
72
+ // tileset found, is raster type, has one layer, has '3857' entry, imagery not found > 400 response
73
+ it('failure: imagery not found', async (t) => {
74
+ t.mock.method(ConfigLoader, 'getDefaultConfig', () => Promise.resolve(config));
75
+ config.put(FakeData.tileSetRaster(FakeTileSetName));
76
+ const req = mockRequest(`/v1/link/${FakeTileSetName}`);
77
+ const res = await handler.router.handle(req);
78
+ strictEqual(res.status, 400);
79
+ strictEqual(res.statusDescription, 'Imagery not found');
80
+ });
81
+ });
82
+ //# sourceMappingURL=link.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.test.js","sourceRoot":"","sources":["../../../src/routes/__tests__/link.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,172 @@
1
+ import assert, { strictEqual } from 'node:assert';
2
+ import { afterEach, before, describe, it } from 'node:test';
3
+ import { copyright, createLicensorAttribution } from '@basemaps/attribution/build/utils.js';
4
+ import { ConfigProviderMemory } from '@basemaps/config';
5
+ import { Env } from '@basemaps/shared';
6
+ import { FakeData, Imagery3857 } from '../../__tests__/config.data.js';
7
+ import { Api, mockRequest } from '../../__tests__/xyz.util.js';
8
+ import { handler } from '../../index.js';
9
+ import { ConfigLoader } from '../../util/config.loader.js';
10
+ const defaultAttribution = `${copyright} LINZ`;
11
+ describe('/v1/styles', () => {
12
+ const host = 'https://tiles.test';
13
+ const config = new ConfigProviderMemory();
14
+ const FakeTileSetName = 'tileset';
15
+ const FakeLicensor1 = {
16
+ name: 'L1',
17
+ roles: ['licensor'],
18
+ };
19
+ const FakeLicensor2 = {
20
+ name: 'L2',
21
+ roles: ['licensor'],
22
+ };
23
+ before(() => {
24
+ process.env[Env.PublicUrlBase] = host;
25
+ });
26
+ afterEach(() => {
27
+ config.objects.clear();
28
+ });
29
+ // tileset exists, imagery not found
30
+ it('default: imagery not found', async (t) => {
31
+ t.mock.method(ConfigLoader, 'getDefaultConfig', () => Promise.resolve(config));
32
+ // insert
33
+ config.put(FakeData.tileSetRaster(FakeTileSetName));
34
+ // request
35
+ const req = mockRequest(`/v1/styles/${FakeTileSetName}.json`, 'get', Api.header);
36
+ const res = await handler.router.handle(req);
37
+ strictEqual(res.status, 200);
38
+ // extract
39
+ const body = Buffer.from(res.body, 'base64').toString();
40
+ const json = JSON.parse(body);
41
+ const source = Object.values(json.sources)[0];
42
+ assert(source != null);
43
+ assert(source.attribution != null);
44
+ // verify
45
+ strictEqual(source.attribution, defaultAttribution);
46
+ });
47
+ // tileset exists, imagery found, more than one layer
48
+ it('default: too many layers', async (t) => {
49
+ t.mock.method(ConfigLoader, 'getDefaultConfig', () => Promise.resolve(config));
50
+ // insert
51
+ const tileset = FakeData.tileSetRaster(FakeTileSetName);
52
+ assert(tileset.layers[0] != null);
53
+ tileset.layers.push(tileset.layers[0]);
54
+ assert(tileset.layers.length > 1);
55
+ config.put(tileset);
56
+ config.put(Imagery3857);
57
+ // request
58
+ const req = mockRequest(`/v1/styles/${FakeTileSetName}.json`, 'get', Api.header);
59
+ const res = await handler.router.handle(req);
60
+ strictEqual(res.status, 200);
61
+ // extract
62
+ const body = Buffer.from(res.body, 'base64').toString();
63
+ const json = JSON.parse(body);
64
+ const source = Object.values(json.sources)[0];
65
+ assert(source != null);
66
+ assert(source.attribution != null);
67
+ // verify
68
+ strictEqual(source.attribution, defaultAttribution);
69
+ });
70
+ // tileset exists, imagery found, one layer, no providers
71
+ it('default: no providers', async (t) => {
72
+ t.mock.method(ConfigLoader, 'getDefaultConfig', () => Promise.resolve(config));
73
+ // insert
74
+ const tileset = FakeData.tileSetRaster(FakeTileSetName);
75
+ assert(tileset.layers[0] != null);
76
+ assert(tileset.layers.length === 1);
77
+ const imagery = Imagery3857;
78
+ assert(imagery.providers == null);
79
+ config.put(tileset);
80
+ config.put(imagery);
81
+ // request
82
+ const req = mockRequest(`/v1/styles/${FakeTileSetName}.json`, 'get', Api.header);
83
+ const res = await handler.router.handle(req);
84
+ strictEqual(res.status, 200);
85
+ // extract
86
+ const body = Buffer.from(res.body, 'base64').toString();
87
+ const json = JSON.parse(body);
88
+ const source = Object.values(json.sources)[0];
89
+ assert(source != null);
90
+ assert(source.attribution != null);
91
+ // verify
92
+ strictEqual(source.attribution, defaultAttribution);
93
+ });
94
+ // tileset exists, imagery found, one layer, has providers, no licensors
95
+ it('default: no licensors', async (t) => {
96
+ t.mock.method(ConfigLoader, 'getDefaultConfig', () => Promise.resolve(config));
97
+ // insert
98
+ const tileset = FakeData.tileSetRaster(FakeTileSetName);
99
+ assert(tileset.layers[0] != null);
100
+ assert(tileset.layers.length === 1);
101
+ const imagery = Imagery3857;
102
+ imagery.providers = [];
103
+ assert(imagery.providers != null);
104
+ config.put(tileset);
105
+ config.put(imagery);
106
+ // request
107
+ const req = mockRequest(`/v1/styles/${FakeTileSetName}.json`, 'get', Api.header);
108
+ const res = await handler.router.handle(req);
109
+ strictEqual(res.status, 200);
110
+ // extract
111
+ const body = Buffer.from(res.body, 'base64').toString();
112
+ const json = JSON.parse(body);
113
+ const source = Object.values(json.sources)[0];
114
+ assert(source != null);
115
+ assert(source.attribution != null);
116
+ // verify
117
+ strictEqual(source.attribution, defaultAttribution);
118
+ });
119
+ // tileset exists, imagery found, one layer, has providers, one licensor
120
+ it('custom: one licensor', async (t) => {
121
+ t.mock.method(ConfigLoader, 'getDefaultConfig', () => Promise.resolve(config));
122
+ // insert
123
+ const tileset = FakeData.tileSetRaster(FakeTileSetName);
124
+ assert(tileset.layers[0] != null);
125
+ assert(tileset.layers.length === 1);
126
+ const imagery = Imagery3857;
127
+ imagery.providers = [FakeLicensor1];
128
+ assert(imagery.providers != null);
129
+ config.put(tileset);
130
+ config.put(imagery);
131
+ // request
132
+ const req = mockRequest(`/v1/styles/${FakeTileSetName}.json`, 'get', Api.header);
133
+ const res = await handler.router.handle(req);
134
+ strictEqual(res.status, 200);
135
+ // extract
136
+ const body = Buffer.from(res.body, 'base64').toString();
137
+ const json = JSON.parse(body);
138
+ const source = Object.values(json.sources)[0];
139
+ assert(source != null);
140
+ assert(source.attribution != null);
141
+ // verify
142
+ strictEqual(source.attribution, `${copyright} ${FakeLicensor1.name}`);
143
+ strictEqual(source.attribution, createLicensorAttribution([FakeLicensor1]));
144
+ });
145
+ // tileset exists, imagery found, one layer, has providers, two licensors
146
+ it('custom: two licensors', async (t) => {
147
+ t.mock.method(ConfigLoader, 'getDefaultConfig', () => Promise.resolve(config));
148
+ // insert
149
+ const tileset = FakeData.tileSetRaster(FakeTileSetName);
150
+ assert(tileset.layers[0] != null);
151
+ assert(tileset.layers.length === 1);
152
+ const imagery = Imagery3857;
153
+ imagery.providers = [FakeLicensor1, FakeLicensor2];
154
+ assert(imagery.providers != null);
155
+ config.put(tileset);
156
+ config.put(imagery);
157
+ // request
158
+ const req = mockRequest(`/v1/styles/${FakeTileSetName}.json`, 'get', Api.header);
159
+ const res = await handler.router.handle(req);
160
+ strictEqual(res.status, 200);
161
+ // extract
162
+ const body = Buffer.from(res.body, 'base64').toString();
163
+ const json = JSON.parse(body);
164
+ const source = Object.values(json.sources)[0];
165
+ assert(source != null);
166
+ assert(source.attribution != null);
167
+ // verify
168
+ strictEqual(source.attribution, `${copyright} ${FakeLicensor1.name}, ${FakeLicensor2.name}`);
169
+ strictEqual(source.attribution, createLicensorAttribution([FakeLicensor1, FakeLicensor2]));
170
+ });
171
+ });
172
+ //# sourceMappingURL=tile.style.json.attribution.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tile.style.json.attribution.test.js","sourceRoot":"","sources":["../../../src/routes/__tests__/tile.style.json.attribution.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { NamedBounds, Projection } from '@basemaps/geo';
1
+ import { BasemapsConfigProvider, ConfigTileSet } from '@basemaps/config';
2
+ import { Epsg, NamedBounds, Projection } from '@basemaps/geo';
2
3
  import { BBox, MultiPolygon } from '@linzjs/geojson';
3
4
  import { LambdaHttpRequest, LambdaHttpResponse } from '@linzjs/lambda';
4
5
  /**
@@ -26,3 +27,20 @@ export interface TileAttributionGet {
26
27
  * Create a LambdaHttpResponse for a attribution request
27
28
  */
28
29
  export declare function tileAttributionGet(req: LambdaHttpRequest<TileAttributionGet>): Promise<LambdaHttpResponse>;
30
+ /**
31
+ * Construct a licensor attribution for a given tileSet.
32
+ *
33
+ * @param provider The BasemapsConfigProvider object.
34
+ * @param tileSet The tileset from which to build the attribution.
35
+ * @param projection The projection to consider.
36
+ *
37
+ * @returns A default attribution, if the tileset has more than one layer or no such imagery for the given projection exists.
38
+ * Otherwise, a copyright string comprising the names of the tileset's licensors.
39
+ *
40
+ * @example
41
+ * "CC BY 4.0 LINZ"
42
+ *
43
+ * @example
44
+ * "CC BY 4.0 Nelson City Council, Tasman District Council, Waka Kotahi"
45
+ */
46
+ export declare function createTileSetAttribution(provider: BasemapsConfigProvider, tileSet: ConfigTileSet, projection: Epsg): Promise<string>;
@@ -1,3 +1,4 @@
1
+ import { createLicensorAttribution } from '@basemaps/attribution/build/utils.js';
1
2
  import { getAllImagery, TileSetType } from '@basemaps/config';
2
3
  import { Bounds, GoogleTms, Projection, Stac, TileMatrixSet, } from '@basemaps/geo';
3
4
  import { extractYearRangeFromName, extractYearRangeFromTitle } from '@basemaps/shared';
@@ -69,7 +70,8 @@ async function tileSetAttribution(req, tileSet, tileMatrix) {
69
70
  const config = await ConfigLoader.load(req);
70
71
  const imagery = await getAllImagery(config, tileSet.layers, [tileMatrix.projection]);
71
72
  const host = await config.Provider.get(config.Provider.id('linz'));
72
- for (const layer of tileSet.layers) {
73
+ for (let i = 0; i < tileSet.layers.length; i++) {
74
+ const layer = tileSet.layers[i];
73
75
  const imgId = layer[proj.epsg.code];
74
76
  if (imgId == null)
75
77
  continue;
@@ -110,7 +112,7 @@ async function tileSetAttribution(req, tileSet, tileMatrix) {
110
112
  stac_version: Stac.Version,
111
113
  license: Stac.License,
112
114
  id: im.id,
113
- providers: getHost(host),
115
+ providers: im.providers ?? getHost(host),
114
116
  title,
115
117
  description: 'No description',
116
118
  extent,
@@ -118,7 +120,7 @@ async function tileSetAttribution(req, tileSet, tileMatrix) {
118
120
  summaries: {
119
121
  'linz:category': im.category,
120
122
  'linz:zoom': { min: zoomMin, max: zoomMax },
121
- 'linz:priority': [1000 + tileSet.layers.indexOf(layer)],
123
+ 'linz:priority': [1000 + i],
122
124
  },
123
125
  });
124
126
  }
@@ -162,4 +164,37 @@ export async function tileAttributionGet(req) {
162
164
  response.json(attributions);
163
165
  return response;
164
166
  }
167
+ /**
168
+ * Construct a licensor attribution for a given tileSet.
169
+ *
170
+ * @param provider The BasemapsConfigProvider object.
171
+ * @param tileSet The tileset from which to build the attribution.
172
+ * @param projection The projection to consider.
173
+ *
174
+ * @returns A default attribution, if the tileset has more than one layer or no such imagery for the given projection exists.
175
+ * Otherwise, a copyright string comprising the names of the tileset's licensors.
176
+ *
177
+ * @example
178
+ * "CC BY 4.0 LINZ"
179
+ *
180
+ * @example
181
+ * "CC BY 4.0 Nelson City Council, Tasman District Council, Waka Kotahi"
182
+ */
183
+ export async function createTileSetAttribution(provider, tileSet, projection) {
184
+ // ensure the tileset has exactly one layer
185
+ if (tileSet.layers.length > 1 || tileSet.layers[0] == null) {
186
+ return createLicensorAttribution();
187
+ }
188
+ // ensure imagery exist for the given projection
189
+ const imgId = tileSet.layers[0][projection.code];
190
+ if (imgId == null)
191
+ return '';
192
+ // attempt to load the imagery
193
+ const imagery = await provider.Imagery.get(imgId);
194
+ if (imagery?.providers == null) {
195
+ return createLicensorAttribution();
196
+ }
197
+ // return a licensor attribution string
198
+ return createLicensorAttribution(imagery.providers);
199
+ }
165
200
  //# sourceMappingURL=attribution.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"attribution.js","sourceRoot":"","sources":["../../src/routes/attribution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attribution.js","sourceRoot":"","sources":["../../src/routes/attribution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { LambdaHttpRequest, LambdaHttpResponse } from '@linzjs/lambda';
2
+ export interface LinkGet {
3
+ Params: {
4
+ tileSet: string;
5
+ };
6
+ }
7
+ /**
8
+ * Redirect the client to a Basemaps URL that is already zoomed to the extent of the tileset's imagery.
9
+ *
10
+ * /v1/link/:tileSet
11
+ *
12
+ * @example
13
+ * '/v1/link/ashburton-2023-0.1m'
14
+ *
15
+ * @returns on success, 302 redirect response. on failure, 4xx status code response.
16
+ */
17
+ export declare function linkGet(req: LambdaHttpRequest<LinkGet>): Promise<LambdaHttpResponse>;
@@ -0,0 +1,42 @@
1
+ import { TileSetType } from '@basemaps/config';
2
+ import { Epsg } from '@basemaps/geo';
3
+ import { getPreviewUrl } from '@basemaps/shared';
4
+ import { LambdaHttpResponse } from '@linzjs/lambda';
5
+ import { ConfigLoader } from '../util/config.loader.js';
6
+ /**
7
+ * Redirect the client to a Basemaps URL that is already zoomed to the extent of the tileset's imagery.
8
+ *
9
+ * /v1/link/:tileSet
10
+ *
11
+ * @example
12
+ * '/v1/link/ashburton-2023-0.1m'
13
+ *
14
+ * @returns on success, 302 redirect response. on failure, 4xx status code response.
15
+ */
16
+ export async function linkGet(req) {
17
+ const config = await ConfigLoader.load(req);
18
+ // get tileset
19
+ req.timer.start('tileset:load');
20
+ const tileSet = await config.TileSet.get(req.params.tileSet);
21
+ req.timer.end('tileset:load');
22
+ if (tileSet == null)
23
+ return new LambdaHttpResponse(404, 'Tileset not found');
24
+ if (tileSet.type !== TileSetType.Raster)
25
+ return new LambdaHttpResponse(400, 'Tileset must be raster type');
26
+ // TODO: add support for 'aerial' and 'elevation' multi-layer tilesets
27
+ if (tileSet.layers.length !== 1)
28
+ return new LambdaHttpResponse(400, 'Too many layers');
29
+ // get imagery
30
+ const imageryId = tileSet.layers[0][Epsg.Google.code];
31
+ if (imageryId === undefined)
32
+ return new LambdaHttpResponse(400, "No imagery for '3857' projection");
33
+ const imagery = await config.Imagery.get(imageryId);
34
+ if (imagery == null)
35
+ return new LambdaHttpResponse(400, 'Imagery not found');
36
+ // do redirect
37
+ const url = getPreviewUrl({ imagery });
38
+ return new LambdaHttpResponse(302, 'Redirect to pre-zoomed imagery', {
39
+ location: `/${url.slug}?i=${url.name}`,
40
+ });
41
+ }
42
+ //# sourceMappingURL=link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/routes/link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAqB,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEvE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAQxD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAA+B;IAC3D,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE5C,cAAc;IAEd,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7D,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAE9B,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,IAAI,kBAAkB,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;IAE7E,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,MAAM;QAAE,OAAO,IAAI,kBAAkB,CAAC,GAAG,EAAE,6BAA6B,CAAC,CAAC;IAE3G,sEAAsE;IACtE,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,kBAAkB,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IAEvF,cAAc;IAEd,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtD,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,IAAI,kBAAkB,CAAC,GAAG,EAAE,kCAAkC,CAAC,CAAC;IAEpG,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACpD,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,IAAI,kBAAkB,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;IAE7E,cAAc;IAEd,MAAM,GAAG,GAAG,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAEvC,OAAO,IAAI,kBAAkB,CAAC,GAAG,EAAE,gCAAgC,EAAE;QACnE,QAAQ,EAAE,IAAI,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,EAAE;KACvC,CAAC,CAAC;AACL,CAAC"}
@@ -1,4 +1,4 @@
1
- import { ConfigTileSetRaster, StyleJson } from '@basemaps/config';
1
+ import { BasemapsConfigProvider, ConfigTileSetRaster, StyleJson } from '@basemaps/config';
2
2
  import { TileMatrixSet } from '@basemaps/geo';
3
3
  import { LambdaHttpRequest, LambdaHttpResponse } from '@linzjs/lambda';
4
4
  /**
@@ -40,7 +40,7 @@ export interface StyleConfig {
40
40
  * Generate a StyleJSON from a tileset
41
41
  * @returns
42
42
  */
43
- export declare function tileSetToStyle(req: LambdaHttpRequest<StyleGet>, tileSet: ConfigTileSetRaster, tileMatrix: TileMatrixSet, apiKey: string): StyleJson;
43
+ export declare function tileSetToStyle(req: LambdaHttpRequest<StyleGet>, config: BasemapsConfigProvider, tileSet: ConfigTileSetRaster, tileMatrix: TileMatrixSet, apiKey: string): Promise<StyleJson>;
44
44
  /**
45
45
  * generate a style from a tile set which has a output
46
46
  */