@basemaps/lambda-tiler 6.29.0 → 6.32.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.
Files changed (259) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/build/__tests__/config.data.d.ts +11 -0
  3. package/build/__tests__/config.data.d.ts.map +1 -0
  4. package/build/__tests__/config.data.js +112 -0
  5. package/build/__tests__/config.data.js.map +1 -0
  6. package/build/__tests__/index.test.js +5 -14
  7. package/build/__tests__/index.test.js.map +1 -0
  8. package/build/__tests__/tile.style.json.test.js +1 -0
  9. package/build/__tests__/tile.style.json.test.js.map +1 -0
  10. package/build/__tests__/wmts.capability.test.d.ts +1 -1
  11. package/build/__tests__/wmts.capability.test.d.ts.map +1 -1
  12. package/build/__tests__/wmts.capability.test.js +286 -125
  13. package/build/__tests__/wmts.capability.test.js.map +1 -0
  14. package/build/__tests__/xyz.util.d.ts +7 -11
  15. package/build/__tests__/xyz.util.d.ts.map +1 -1
  16. package/build/__tests__/xyz.util.js +14 -42
  17. package/build/__tests__/xyz.util.js.map +1 -0
  18. package/build/index.d.ts +0 -2
  19. package/build/index.d.ts.map +1 -1
  20. package/build/index.js +68 -41
  21. package/build/index.js.map +1 -0
  22. package/build/routes/__tests__/attribution.test.js +351 -399
  23. package/build/routes/__tests__/attribution.test.js.map +1 -0
  24. package/build/routes/__tests__/fonts.test.js +17 -3
  25. package/build/routes/__tests__/fonts.test.js.map +1 -0
  26. package/build/routes/__tests__/health.test.js +17 -13
  27. package/build/routes/__tests__/health.test.js.map +1 -0
  28. package/build/routes/__tests__/imagery.test.js +1 -0
  29. package/build/routes/__tests__/imagery.test.js.map +1 -0
  30. package/build/routes/__tests__/memory.fs.js +1 -0
  31. package/build/routes/__tests__/memory.fs.js.map +1 -0
  32. package/build/routes/__tests__/sprites.test.js +7 -0
  33. package/build/routes/__tests__/sprites.test.js.map +1 -0
  34. package/build/routes/__tests__/tile.json.test.d.ts +2 -0
  35. package/build/routes/__tests__/tile.json.test.d.ts.map +1 -0
  36. package/build/routes/__tests__/tile.json.test.js +124 -0
  37. package/build/routes/__tests__/tile.json.test.js.map +1 -0
  38. package/build/routes/__tests__/tile.style.json.test.d.ts +2 -0
  39. package/build/routes/__tests__/tile.style.json.test.d.ts.map +1 -0
  40. package/build/routes/__tests__/tile.style.json.test.js +95 -0
  41. package/build/routes/__tests__/tile.style.json.test.js.map +1 -0
  42. package/build/routes/__tests__/wmts.test.js +37 -27
  43. package/build/routes/__tests__/wmts.test.js.map +1 -0
  44. package/build/{__tests__ → routes/__tests__}/xyz.test.d.ts +0 -0
  45. package/build/routes/__tests__/xyz.test.d.ts.map +1 -0
  46. package/build/routes/__tests__/xyz.test.js +99 -0
  47. package/build/routes/__tests__/xyz.test.js.map +1 -0
  48. package/build/routes/attribution.d.ts +7 -5
  49. package/build/routes/attribution.d.ts.map +1 -1
  50. package/build/routes/attribution.js +50 -91
  51. package/build/routes/attribution.js.map +1 -0
  52. package/build/routes/fonts.d.ts +1 -1
  53. package/build/routes/fonts.d.ts.map +1 -1
  54. package/build/routes/fonts.js +33 -10
  55. package/build/routes/fonts.js.map +1 -0
  56. package/build/routes/health.d.ts +3 -3
  57. package/build/routes/health.d.ts.map +1 -1
  58. package/build/routes/health.js +16 -13
  59. package/build/routes/health.js.map +1 -0
  60. package/build/routes/imagery.d.ts +8 -1
  61. package/build/routes/imagery.d.ts.map +1 -1
  62. package/build/routes/imagery.js +17 -17
  63. package/build/routes/imagery.js.map +1 -0
  64. package/build/routes/ping.d.ts +3 -0
  65. package/build/routes/ping.d.ts.map +1 -0
  66. package/build/routes/ping.js +7 -0
  67. package/build/routes/ping.js.map +1 -0
  68. package/build/routes/sprites.d.ts.map +1 -1
  69. package/build/routes/sprites.js +22 -22
  70. package/build/routes/sprites.js.map +1 -0
  71. package/build/routes/tile.json.d.ts +7 -1
  72. package/build/routes/tile.json.d.ts.map +1 -1
  73. package/build/routes/tile.json.js +19 -22
  74. package/build/routes/tile.json.js.map +1 -0
  75. package/build/routes/tile.style.json.d.ts +6 -1
  76. package/build/routes/tile.style.json.d.ts.map +1 -1
  77. package/build/routes/tile.style.json.js +11 -13
  78. package/build/routes/tile.style.json.js.map +1 -0
  79. package/build/routes/tile.wmts.d.ts +9 -3
  80. package/build/routes/tile.wmts.d.ts.map +1 -1
  81. package/build/routes/tile.wmts.js +37 -50
  82. package/build/routes/tile.wmts.js.map +1 -0
  83. package/build/routes/tile.xyz.d.ts +14 -4
  84. package/build/routes/tile.xyz.d.ts.map +1 -1
  85. package/build/routes/tile.xyz.js +22 -17
  86. package/build/routes/tile.xyz.js.map +1 -0
  87. package/build/routes/tile.xyz.raster.d.ts +11 -0
  88. package/build/routes/tile.xyz.raster.d.ts.map +1 -0
  89. package/build/routes/tile.xyz.raster.js +90 -0
  90. package/build/routes/tile.xyz.raster.js.map +1 -0
  91. package/build/routes/tile.xyz.vector.d.ts +8 -0
  92. package/build/routes/tile.xyz.vector.d.ts.map +1 -0
  93. package/build/routes/tile.xyz.vector.js +46 -0
  94. package/build/routes/tile.xyz.vector.js.map +1 -0
  95. package/build/routes/version.d.ts +3 -0
  96. package/build/routes/version.d.ts.map +1 -0
  97. package/build/routes/version.js +9 -0
  98. package/build/routes/version.js.map +1 -0
  99. package/build/util/__test__/validate.test.d.ts +2 -0
  100. package/build/util/__test__/validate.test.d.ts.map +1 -0
  101. package/build/util/__test__/validate.test.js +66 -0
  102. package/build/util/__test__/validate.test.js.map +1 -0
  103. package/build/util/cotar.serve.d.ts +20 -0
  104. package/build/util/cotar.serve.d.ts.map +1 -0
  105. package/build/util/cotar.serve.js +41 -0
  106. package/build/util/cotar.serve.js.map +1 -0
  107. package/build/util/etag.d.ts +6 -0
  108. package/build/util/etag.d.ts.map +1 -0
  109. package/build/util/etag.js +20 -0
  110. package/build/util/etag.js.map +1 -0
  111. package/build/util/response.d.ts +4 -0
  112. package/build/util/response.d.ts.map +1 -0
  113. package/build/util/response.js +4 -0
  114. package/build/util/response.js.map +1 -0
  115. package/build/util/source.cache.d.ts +28 -0
  116. package/build/util/source.cache.d.ts.map +1 -0
  117. package/build/util/source.cache.js +53 -0
  118. package/build/util/source.cache.js.map +1 -0
  119. package/build/{source.tracer.d.ts → util/source.tracer.d.ts} +1 -0
  120. package/build/util/source.tracer.d.ts.map +1 -0
  121. package/build/{source.tracer.js → util/source.tracer.js} +4 -0
  122. package/build/util/source.tracer.js.map +1 -0
  123. package/build/util/swapping.lru.d.ts +21 -0
  124. package/build/util/swapping.lru.d.ts.map +1 -0
  125. package/build/util/swapping.lru.js +56 -0
  126. package/build/util/swapping.lru.js.map +1 -0
  127. package/build/util/validate.d.ts +46 -0
  128. package/build/util/validate.d.ts.map +1 -0
  129. package/build/util/validate.js +107 -0
  130. package/build/util/validate.js.map +1 -0
  131. package/build/wmts.capability.d.ts +27 -13
  132. package/build/wmts.capability.d.ts.map +1 -1
  133. package/build/wmts.capability.js +156 -55
  134. package/build/wmts.capability.js.map +1 -0
  135. package/dist/index.js +89 -73
  136. package/dist/node_modules/.package-lock.json +1 -1
  137. package/dist/package-lock.json +2 -2
  138. package/dist/package.json +1 -1
  139. package/package.json +10 -10
  140. package/src/__tests__/config.data.ts +120 -0
  141. package/src/__tests__/index.test.ts +4 -20
  142. package/src/__tests__/wmts.capability.test.ts +312 -139
  143. package/src/__tests__/xyz.util.ts +17 -45
  144. package/src/index.ts +75 -41
  145. package/src/routes/__tests__/attribution.test.ts +356 -403
  146. package/src/routes/__tests__/fonts.test.ts +18 -3
  147. package/src/routes/__tests__/health.test.ts +17 -13
  148. package/src/routes/__tests__/sprites.test.ts +6 -1
  149. package/src/routes/__tests__/tile.json.test.ts +145 -0
  150. package/src/routes/__tests__/tile.style.json.test.ts +105 -0
  151. package/src/routes/__tests__/wmts.test.ts +44 -34
  152. package/src/routes/__tests__/xyz.test.ts +119 -0
  153. package/src/routes/attribution.ts +59 -111
  154. package/src/routes/fonts.ts +32 -10
  155. package/src/routes/health.ts +17 -16
  156. package/src/routes/imagery.ts +18 -15
  157. package/src/routes/ping.ts +8 -0
  158. package/src/routes/sprites.ts +20 -22
  159. package/src/routes/tile.json.ts +24 -19
  160. package/src/routes/tile.style.json.ts +15 -12
  161. package/src/routes/tile.wmts.ts +41 -44
  162. package/src/routes/tile.xyz.raster.ts +106 -0
  163. package/src/routes/tile.xyz.ts +31 -16
  164. package/src/routes/tile.xyz.vector.ts +47 -0
  165. package/src/routes/version.ts +8 -0
  166. package/src/util/__test__/validate.test.ts +74 -0
  167. package/src/util/cotar.serve.ts +46 -0
  168. package/src/util/etag.ts +20 -0
  169. package/src/util/response.ts +4 -0
  170. package/src/util/source.cache.ts +71 -0
  171. package/src/{source.tracer.ts → util/source.tracer.ts} +4 -0
  172. package/src/util/swapping.lru.ts +63 -0
  173. package/src/util/validate.ts +126 -0
  174. package/src/wmts.capability.ts +170 -68
  175. package/tsconfig.tsbuildinfo +1 -1
  176. package/build/__tests__/route.test.d.ts +0 -2
  177. package/build/__tests__/route.test.d.ts.map +0 -1
  178. package/build/__tests__/route.test.js +0 -20
  179. package/build/__tests__/tiff.cache.test.d.ts +0 -2
  180. package/build/__tests__/tiff.cache.test.d.ts.map +0 -1
  181. package/build/__tests__/tiff.cache.test.js +0 -58
  182. package/build/__tests__/tile.cache.key.test.d.ts +0 -2
  183. package/build/__tests__/tile.cache.key.test.d.ts.map +0 -1
  184. package/build/__tests__/tile.cache.key.test.js +0 -48
  185. package/build/__tests__/tile.set.cache.test.d.ts +0 -2
  186. package/build/__tests__/tile.set.cache.test.d.ts.map +0 -1
  187. package/build/__tests__/tile.set.cache.test.js +0 -123
  188. package/build/__tests__/tile.set.test.d.ts +0 -2
  189. package/build/__tests__/tile.set.test.d.ts.map +0 -1
  190. package/build/__tests__/tile.set.test.js +0 -11
  191. package/build/__tests__/xyz.test.d.ts.map +0 -1
  192. package/build/__tests__/xyz.test.js +0 -306
  193. package/build/api.key.d.ts +0 -2
  194. package/build/api.key.d.ts.map +0 -1
  195. package/build/api.key.js +0 -23
  196. package/build/cli/dump.d.ts +0 -2
  197. package/build/cli/dump.d.ts.map +0 -1
  198. package/build/cli/dump.js +0 -47
  199. package/build/cli/tile.set.local.d.ts +0 -12
  200. package/build/cli/tile.set.local.d.ts.map +0 -1
  201. package/build/cli/tile.set.local.js +0 -39
  202. package/build/router.d.ts +0 -15
  203. package/build/router.d.ts.map +0 -1
  204. package/build/router.js +0 -49
  205. package/build/routes/api.d.ts +0 -5
  206. package/build/routes/api.d.ts.map +0 -1
  207. package/build/routes/api.js +0 -16
  208. package/build/routes/esri/rest.d.ts +0 -10
  209. package/build/routes/esri/rest.d.ts.map +0 -1
  210. package/build/routes/esri/rest.js +0 -87
  211. package/build/routes/response.d.ts +0 -4
  212. package/build/routes/response.d.ts.map +0 -1
  213. package/build/routes/response.js +0 -3
  214. package/build/routes/tile.d.ts +0 -3
  215. package/build/routes/tile.d.ts.map +0 -1
  216. package/build/routes/tile.etag.d.ts +0 -11
  217. package/build/routes/tile.etag.d.ts.map +0 -1
  218. package/build/routes/tile.etag.js +0 -29
  219. package/build/routes/tile.js +0 -27
  220. package/build/source.tracer.d.ts.map +0 -1
  221. package/build/tiff.cache.d.ts +0 -17
  222. package/build/tiff.cache.d.ts.map +0 -1
  223. package/build/tiff.cache.js +0 -45
  224. package/build/tile.set.cache.d.ts +0 -21
  225. package/build/tile.set.cache.d.ts.map +0 -1
  226. package/build/tile.set.cache.js +0 -100
  227. package/build/tile.set.d.ts +0 -4
  228. package/build/tile.set.d.ts.map +0 -1
  229. package/build/tile.set.js +0 -1
  230. package/build/tile.set.raster.d.ts +0 -49
  231. package/build/tile.set.raster.d.ts.map +0 -1
  232. package/build/tile.set.raster.js +0 -186
  233. package/build/tile.set.vector.d.ts +0 -25
  234. package/build/tile.set.vector.d.ts.map +0 -1
  235. package/build/tile.set.vector.js +0 -71
  236. package/build/validate.d.ts +0 -16
  237. package/build/validate.d.ts.map +0 -1
  238. package/build/validate.js +0 -31
  239. package/src/__tests__/route.test.ts +0 -24
  240. package/src/__tests__/tiff.cache.test.ts +0 -73
  241. package/src/__tests__/tile.cache.key.test.ts +0 -56
  242. package/src/__tests__/tile.set.cache.test.ts +0 -146
  243. package/src/__tests__/tile.set.test.ts +0 -12
  244. package/src/__tests__/xyz.test.ts +0 -362
  245. package/src/api.key.ts +0 -23
  246. package/src/cli/dump.ts +0 -61
  247. package/src/cli/tile.set.local.ts +0 -51
  248. package/src/router.ts +0 -58
  249. package/src/routes/api.ts +0 -19
  250. package/src/routes/esri/rest.ts +0 -90
  251. package/src/routes/response.ts +0 -4
  252. package/src/routes/tile.etag.ts +0 -36
  253. package/src/routes/tile.ts +0 -23
  254. package/src/tiff.cache.ts +0 -51
  255. package/src/tile.set.cache.ts +0 -111
  256. package/src/tile.set.raster.ts +0 -228
  257. package/src/tile.set.ts +0 -4
  258. package/src/tile.set.vector.ts +0 -79
  259. package/src/validate.ts +0 -32
@@ -1,12 +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 { Router } from '../router.js';
8
- import { NotModified } from './response.js';
9
- import { TileEtag } from './tile.etag.js';
6
+ import { isGzip } from '../util/cotar.serve.js';
7
+ import { Etag } from '../util/etag.js';
8
+ import { NotFound, NotModified } from '../util/response.js';
10
9
  const gzipP = promisify(gzip);
11
10
  export function isAllowedFile(f) {
12
11
  if (f == null)
@@ -27,29 +26,30 @@ export function isAllowedFile(f) {
27
26
  * - /v1/imagery/:imageryId/collection.json - STAC Collection
28
27
  * - /v1/imagery/:imageryId/15-32659-21603.json - STAC Item
29
28
  */
30
- export async function Imagery(req) {
31
- const { rest } = Router.action(req);
32
- const [imageryId, requestType] = rest;
33
- if (!isAllowedFile(requestType))
34
- return new LambdaHttpResponse(404, 'Not found');
35
- const imagery = await Config.Imagery.get(Config.Imagery.id(imageryId));
29
+ export async function imageryGet(req) {
30
+ const requestedFile = req.params.fileName;
31
+ if (!isAllowedFile(requestedFile))
32
+ return NotFound();
33
+ const imagery = await Config.Imagery.get(Config.Imagery.id(req.params.imageryId));
36
34
  if (imagery == null)
37
- return new LambdaHttpResponse(404, 'Not found');
38
- const targetPath = fsa.join(imagery.uri, requestType);
35
+ return NotFound();
36
+ const targetPath = fsa.join(imagery.uri, requestedFile);
39
37
  try {
40
38
  const buf = await fsa.read(targetPath);
41
- const cacheKey = createHash('sha256').update(buf).digest('base64');
42
- if (TileEtag.isNotModified(req, cacheKey))
43
- return NotModified;
39
+ const cacheKey = Etag.key(buf);
40
+ if (Etag.isNotModified(req, cacheKey))
41
+ return NotModified();
44
42
  const response = new LambdaHttpResponse(200, 'ok');
45
43
  response.header(HttpHeader.ETag, cacheKey);
46
44
  response.header(HttpHeader.ContentEncoding, 'gzip');
47
- response.buffer(await gzipP(buf), 'application/json');
45
+ response.header(HttpHeader.CacheControl, 'public, max-age=604800, stale-while-revalidate=86400');
46
+ response.buffer(isGzip(buf) ? buf : await gzipP(buf), 'application/json');
48
47
  req.set('bytes', buf.byteLength);
49
48
  return response;
50
49
  }
51
50
  catch (e) {
52
51
  req.log.warn({ targetPath }, 'ImageryMetadata:Failed');
53
- return new LambdaHttpResponse(404, 'Not found');
52
+ return NotFound();
54
53
  }
55
54
  }
55
+ //# sourceMappingURL=imagery.js.map
@@ -0,0 +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,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,3 @@
1
+ import { LambdaHttpResponse } from '@linzjs/lambda';
2
+ export declare function pingGet(): Promise<LambdaHttpResponse>;
3
+ //# sourceMappingURL=ping.d.ts.map
@@ -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,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGvE,UAAU,SAAS;IACjB,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAkBD,wBAAsB,SAAS,CAAC,GAAG,EAAE,iBAAiB,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAoB9F"}
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"}
@@ -1,42 +1,42 @@
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 './response.js';
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';
6
8
  const Extensions = new Map();
7
9
  Extensions.set('.png', 'image/png');
8
10
  Extensions.set('.json', 'application/json');
9
- /**
10
- * Does a buffer look like a gzipped document instead of raw json
11
- *
12
- * Determined by checking the first two bytes are the gzip magic bytes `0x1f 0x8b`
13
- *
14
- * @see https://en.wikipedia.org/wiki/Gzip
15
- *
16
- */
17
- function isGzip(b) {
18
- return b[0] === 0x1f && b[1] === 0x8b;
19
- }
20
11
  export async function spriteGet(req) {
21
- const spriteLocation = Env.get(Env.AssetLocation);
22
- if (spriteLocation == null)
23
- return NotFound;
12
+ const assetLocation = Env.get(Env.AssetLocation);
13
+ if (assetLocation == null)
14
+ return NotFound();
24
15
  const extension = path.extname(req.params.spriteName);
25
16
  const mimeType = Extensions.get(extension);
26
17
  if (mimeType == null)
27
- return NotFound;
18
+ return NotFound();
19
+ const targetFile = fsa.join('sprites', req.params.spriteName);
20
+ if (assetLocation.endsWith('.tar.co'))
21
+ return serveFromCotar(req, assetLocation, targetFile, mimeType);
28
22
  try {
29
- const filePath = fsa.join(spriteLocation, fsa.join('/sprites', req.params.spriteName));
23
+ const filePath = fsa.join(assetLocation, targetFile);
30
24
  req.set('target', filePath);
31
25
  const buf = await fsa.read(filePath);
32
- const res = LambdaHttpResponse.ok().buffer(buf, mimeType);
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');
33
32
  if (isGzip(buf))
34
- res.header('content-encoding', 'gzip');
35
- return res;
33
+ response.header(HttpHeader.ContentEncoding, 'gzip');
34
+ return response;
36
35
  }
37
36
  catch (e) {
38
37
  if (e.code === 404)
39
- return NotFound;
38
+ return NotFound();
40
39
  throw e;
41
40
  }
42
41
  }
42
+ //# sourceMappingURL=sprites.js.map
@@ -0,0 +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,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 declare function tileJson(req: LambdaHttpRequest): Promise<LambdaHttpResponse>;
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;AAMnF,wBAAsB,QAAQ,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAkClF"}
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,33 +1,29 @@
1
1
  import { GoogleTms, TileMatrixSet } from '@basemaps/geo';
2
- import { Env, extractTileMatrixSet } from '@basemaps/shared';
2
+ import { Config, Env } from '@basemaps/shared';
3
3
  import { HttpHeader, LambdaHttpResponse } from '@linzjs/lambda';
4
- import { Router } from '../router.js';
5
- import { TileSets } from '../tile.set.cache.js';
6
- import { getTileMatrixId } from '../wmts.capability.js';
7
- import { NotFound } from './response.js';
8
- export async function tileJson(req) {
9
- var _a, _b, _c;
10
- const { version, rest, name } = Router.action(req);
11
- if (rest.length !== 3)
12
- return NotFound;
13
- 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);
14
9
  if (tileMatrix == null)
15
- return NotFound;
10
+ return NotFound();
11
+ const apiKey = Validate.apiKey(req);
16
12
  req.timer.start('tileset:load');
17
- const tileSet = await TileSets.get(rest[0], tileMatrix);
13
+ const tileSet = await Config.TileSet.get(Config.TileSet.id(req.params.tileSet));
18
14
  req.timer.end('tileset:load');
19
15
  if (tileSet == null)
20
- return NotFound;
21
- const apiKey = Router.apiKey(req);
22
- const host = (_a = Env.get(Env.PublicUrlBase)) !== null && _a !== void 0 ? _a : '';
23
- const tileUrl = [host, version, name, tileSet.fullName, getTileMatrixId(tileMatrix), '{z}', '{x}', '{y}'].join('/') +
24
- `.${tileSet.format}?api=${apiKey}`;
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}`;
25
21
  const tileJson = { tiles: [tileUrl], tilejson: '3.0.0' };
26
- const maxZoom = TileMatrixSet.convertZoomLevel((_b = tileSet.tileSet.maxZoom) !== null && _b !== void 0 ? _b : 30, GoogleTms, tileMatrix, true);
27
- const minZoom = TileMatrixSet.convertZoomLevel((_c = tileSet.tileSet.minZoom) !== null && _c !== void 0 ? _c : 0, GoogleTms, tileMatrix, true);
28
- if (tileSet.tileSet.maxZoom)
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)
29
25
  tileJson.maxzoom = maxZoom;
30
- if (tileSet.tileSet.minZoom)
26
+ if (tileSet.minZoom)
31
27
  tileJson.minzoom = minZoom;
32
28
  const json = JSON.stringify(tileJson);
33
29
  const data = Buffer.from(json);
@@ -37,3 +33,4 @@ export async function tileJson(req) {
37
33
  req.set('bytes', data.byteLength);
38
34
  return response;
39
35
  }
36
+ //# sourceMappingURL=tile.json.js.map
@@ -0,0 +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,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 declare function styleJson(req: LambdaHttpRequest, fileName: string): Promise<LambdaHttpResponse>;
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;AAOnF;;;;;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,wBAAsB,SAAS,CAAC,GAAG,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAwBrG"}
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 { Router } from '../router.js';
7
- import { NotFound, NotModified } from './response.js';
8
- import { TileEtag } from './tile.etag.js';
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 styleJson(req, fileName) {
59
- const apiKey = Router.apiKey(req);
60
- if (apiKey == null)
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 = createHash('sha256').update(data).digest('base64');
72
- if (TileEtag.isNotModified(req, cacheKey))
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');
@@ -78,3 +75,4 @@ export async function styleJson(req, fileName) {
78
75
  req.set('bytes', data.byteLength);
79
76
  return response;
80
77
  }
78
+ //# sourceMappingURL=tile.style.json.js.map
@@ -0,0 +1 @@
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 { ImageFormat } from '@basemaps/geo';
1
+ import { TileMatrixSet } from '@basemaps/geo';
2
2
  import { LambdaHttpRequest, LambdaHttpResponse } from '@linzjs/lambda';
3
- export declare function getImageFormats(req: LambdaHttpRequest): ImageFormat[] | undefined;
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 wmts(req: LambdaHttpRequest): Promise<LambdaHttpResponse>;
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,EAAE,WAAW,EAAiB,MAAM,eAAe,CAAC;AAG3D,OAAO,EAAc,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AASnF,wBAAgB,eAAe,CAAC,GAAG,EAAE,iBAAiB,GAAG,WAAW,EAAE,GAAG,SAAS,CAYjF;AAED;;;;;GAKG;AACH,wBAAsB,IAAI,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAmC9E"}
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
- import { Env, TileSetName, tileWmtsFromPath } from '@basemaps/shared';
3
- import { getImageFormat } from '@basemaps/tiler';
2
+ import { GoogleTms, Nztm2000QuadTms } from '@basemaps/geo';
3
+ import { Env } from '@basemaps/shared';
4
4
  import { HttpHeader, LambdaHttpResponse } from '@linzjs/lambda';
5
5
  import { createHash } from 'crypto';
6
- import { Router } from '../router.js';
7
- import { TileSets } from '../tile.set.cache.js';
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 { NotFound, NotModified } from './response.js';
10
- import { TileEtag } from './tile.etag.js';
11
- export function getImageFormats(req) {
12
- const formats = req.query.getAll('format');
13
- if (formats == null || formats.length === 0)
14
- return undefined;
15
- const output = new Set();
16
- for (const fmt of formats) {
17
- const parsed = getImageFormat(fmt);
18
- if (parsed == null)
19
- continue;
20
- output.add(parsed);
21
- }
22
- if (output.size === 0)
23
- return undefined;
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,49 +21,44 @@ 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 wmts(req) {
33
- var _a;
34
- const action = Router.action(req);
35
- const wmtsData = tileWmtsFromPath(action.rest);
36
- if (wmtsData == null)
37
- return NotFound;
38
- const host = (_a = Env.get(Env.PublicUrlBase)) !== null && _a !== void 0 ? _a : '';
24
+ export async function wmtsCapabilitiesGet(req) {
25
+ var _a, _b;
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 tileSets = await wmtsLoadTileSets(wmtsData.name, wmtsData.tileMatrix);
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
- if (tileSets.length === 0)
43
- return NotFound;
44
- const providerId = Config.Provider.id('linz');
45
- const provider = await Config.Provider.get(providerId);
46
- const apiKey = Router.apiKey(req);
35
+ if (tileSet == null || tileSet.type !== TileSetType.Raster)
36
+ return NotFound();
37
+ const provider = await Config.Provider.get(Config.Provider.id('linz'));
38
+ req.timer.start('imagery:load');
39
+ const imagery = await Config.getAllImagery(tileSet.layers, tileMatrix.map((tms) => tms.projection));
40
+ req.timer.end('imagery:load');
47
41
  const xml = new WmtsCapabilities({
48
42
  httpBase: host,
49
43
  provider: provider !== null && provider !== void 0 ? provider : undefined,
50
- layers: tileSets,
44
+ tileSet,
45
+ tileMatrix,
46
+ isIndividualLayers: req.params.tileMatrix == null,
47
+ imagery,
51
48
  apiKey,
52
- formats: getImageFormats(req),
49
+ formats: Validate.getRequestedFormats(req),
53
50
  }).toXml();
54
51
  if (xml == null)
55
- return NotFound;
52
+ return NotFound();
56
53
  const data = Buffer.from(xml);
57
54
  const cacheKey = createHash('sha256').update(data).digest('base64');
58
- if (TileEtag.isNotModified(req, cacheKey))
59
- return NotModified;
55
+ if (Etag.isNotModified(req, cacheKey))
56
+ return NotModified();
60
57
  const response = new LambdaHttpResponse(200, 'ok');
61
58
  response.header(HttpHeader.ETag, cacheKey);
62
- response.header(HttpHeader.CacheControl, 'max-age=0');
59
+ response.header(HttpHeader.CacheControl, 'no-store');
63
60
  response.buffer(data, 'text/xml');
64
61
  req.set('bytes', data.byteLength);
65
62
  return response;
66
63
  }
67
- async function wmtsLoadTileSets(name, tileMatrix) {
68
- if (tileMatrix != null) {
69
- const ts = await TileSets.get(name, tileMatrix);
70
- if (ts == null || ts.type === TileSetType.Vector)
71
- return [];
72
- return [ts];
73
- }
74
- if (name === '')
75
- name = TileSetName.aerial;
76
- return (await TileSets.getAll(name, tileMatrix)).filter((f) => f.type === 'raster');
77
- }
64
+ //# sourceMappingURL=tile.wmts.js.map
@@ -0,0 +1 @@
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/EPSG:3857/2/1/1.pbf`
9
- * Raster Tile `/v1/tiles/aerial/EPSG:3857/6/0/38.webp`
10
- * @returns
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 tileXyz(req: LambdaHttpRequest): Promise<LambdaHttpResponse>;
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,OAAO,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAYjF"}
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"}
@@ -1,28 +1,33 @@
1
- import { tileXyzFromPath } from '@basemaps/shared';
2
- import { Router } from '../router.js';
3
- import { TileSets } from '../tile.set.cache.js';
4
- import { ValidateTilePath } from '../validate.js';
5
- import { NotFound } from './response.js';
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/EPSG:3857/2/1/1.pbf`
13
- * Raster Tile `/v1/tiles/aerial/EPSG:3857/6/0/38.webp`
14
- * @returns
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 tileXyz(req) {
17
- const action = Router.action(req);
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 TileSets.get(xyzData.name, xyzData.tileMatrix);
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
- return await tileSet.tile(req, xyzData);
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
  }
33
+ //# sourceMappingURL=tile.xyz.js.map
@@ -0,0 +1 @@
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"}