@basemaps/lambda-tiler 6.31.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 (271) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/build/__tests__/config.data.d.ts +6 -1
  3. package/build/__tests__/config.data.d.ts.map +1 -1
  4. package/build/__tests__/config.data.js +33 -2
  5. package/build/__tests__/config.data.js.map +1 -1
  6. package/build/__tests__/index.test.js +3 -13
  7. package/build/__tests__/index.test.js.map +1 -1
  8. package/build/__tests__/xyz.util.d.ts +7 -9
  9. package/build/__tests__/xyz.util.d.ts.map +1 -1
  10. package/build/__tests__/xyz.util.js +14 -20
  11. package/build/__tests__/xyz.util.js.map +1 -1
  12. package/build/index.d.ts +0 -2
  13. package/build/index.d.ts.map +1 -1
  14. package/build/index.js +57 -26
  15. package/build/index.js.map +1 -1
  16. package/build/routes/__tests__/attribution.test.js +350 -400
  17. package/build/routes/__tests__/attribution.test.js.map +1 -1
  18. package/build/routes/__tests__/fonts.test.js +11 -5
  19. package/build/routes/__tests__/fonts.test.js.map +1 -1
  20. package/build/routes/__tests__/health.test.js +16 -13
  21. package/build/routes/__tests__/health.test.js.map +1 -1
  22. package/build/routes/__tests__/sprites.test.js +6 -0
  23. package/build/routes/__tests__/sprites.test.js.map +1 -1
  24. package/build/routes/__tests__/tile.json.test.d.ts +2 -0
  25. package/build/routes/__tests__/tile.json.test.d.ts.map +1 -0
  26. package/build/routes/__tests__/tile.json.test.js +124 -0
  27. package/build/routes/__tests__/tile.json.test.js.map +1 -0
  28. package/build/routes/__tests__/tile.style.json.test.d.ts +2 -0
  29. package/build/routes/__tests__/tile.style.json.test.d.ts.map +1 -0
  30. package/build/routes/__tests__/tile.style.json.test.js +95 -0
  31. package/build/routes/__tests__/tile.style.json.test.js.map +1 -0
  32. package/build/routes/__tests__/wmts.test.js +5 -44
  33. package/build/routes/__tests__/wmts.test.js.map +1 -1
  34. package/build/{__tests__ → routes/__tests__}/xyz.test.d.ts +0 -0
  35. package/build/routes/__tests__/xyz.test.d.ts.map +1 -0
  36. package/build/routes/__tests__/xyz.test.js +99 -0
  37. package/build/routes/__tests__/xyz.test.js.map +1 -0
  38. package/build/routes/attribution.d.ts +7 -5
  39. package/build/routes/attribution.d.ts.map +1 -1
  40. package/build/routes/attribution.js +43 -81
  41. package/build/routes/attribution.js.map +1 -1
  42. package/build/routes/fonts.d.ts +1 -1
  43. package/build/routes/fonts.d.ts.map +1 -1
  44. package/build/routes/fonts.js +30 -15
  45. package/build/routes/fonts.js.map +1 -1
  46. package/build/routes/health.d.ts +3 -3
  47. package/build/routes/health.d.ts.map +1 -1
  48. package/build/routes/health.js +15 -13
  49. package/build/routes/health.js.map +1 -1
  50. package/build/routes/imagery.d.ts.map +1 -1
  51. package/build/routes/imagery.js +11 -10
  52. package/build/routes/imagery.js.map +1 -1
  53. package/build/routes/ping.d.ts +3 -0
  54. package/build/routes/ping.d.ts.map +1 -0
  55. package/build/routes/ping.js +7 -0
  56. package/build/routes/ping.js.map +1 -0
  57. package/build/routes/sprites.d.ts.map +1 -1
  58. package/build/routes/sprites.js +16 -10
  59. package/build/routes/sprites.js.map +1 -1
  60. package/build/routes/tile.json.d.ts +7 -1
  61. package/build/routes/tile.json.d.ts.map +1 -1
  62. package/build/routes/tile.json.js +18 -21
  63. package/build/routes/tile.json.js.map +1 -1
  64. package/build/routes/tile.style.json.d.ts +6 -1
  65. package/build/routes/tile.style.json.d.ts.map +1 -1
  66. package/build/routes/tile.style.json.js +10 -13
  67. package/build/routes/tile.style.json.js.map +1 -1
  68. package/build/routes/tile.wmts.d.ts +9 -3
  69. package/build/routes/tile.wmts.d.ts.map +1 -1
  70. package/build/routes/tile.wmts.js +26 -35
  71. package/build/routes/tile.wmts.js.map +1 -1
  72. package/build/routes/tile.xyz.d.ts +14 -4
  73. package/build/routes/tile.xyz.d.ts.map +1 -1
  74. package/build/routes/tile.xyz.js +21 -17
  75. package/build/routes/tile.xyz.js.map +1 -1
  76. package/build/routes/tile.xyz.raster.d.ts +11 -0
  77. package/build/routes/tile.xyz.raster.d.ts.map +1 -0
  78. package/build/routes/tile.xyz.raster.js +90 -0
  79. package/build/routes/tile.xyz.raster.js.map +1 -0
  80. package/build/routes/tile.xyz.vector.d.ts +8 -0
  81. package/build/routes/tile.xyz.vector.d.ts.map +1 -0
  82. package/build/routes/tile.xyz.vector.js +46 -0
  83. package/build/routes/tile.xyz.vector.js.map +1 -0
  84. package/build/routes/version.d.ts +3 -0
  85. package/build/routes/version.d.ts.map +1 -0
  86. package/build/routes/version.js +9 -0
  87. package/build/routes/version.js.map +1 -0
  88. package/build/util/__test__/validate.test.d.ts +2 -0
  89. package/build/util/__test__/validate.test.d.ts.map +1 -0
  90. package/build/util/__test__/validate.test.js +66 -0
  91. package/build/util/__test__/validate.test.js.map +1 -0
  92. package/build/{cotar.cache.d.ts → util/cotar.serve.d.ts} +3 -8
  93. package/build/util/cotar.serve.d.ts.map +1 -0
  94. package/build/util/cotar.serve.js +41 -0
  95. package/build/util/cotar.serve.js.map +1 -0
  96. package/build/util/etag.d.ts +6 -0
  97. package/build/util/etag.d.ts.map +1 -0
  98. package/build/util/etag.js +20 -0
  99. package/build/util/etag.js.map +1 -0
  100. package/build/util/response.d.ts +4 -0
  101. package/build/util/response.d.ts.map +1 -0
  102. package/build/util/response.js +4 -0
  103. package/build/util/response.js.map +1 -0
  104. package/build/util/source.cache.d.ts +28 -0
  105. package/build/util/source.cache.d.ts.map +1 -0
  106. package/build/util/source.cache.js +53 -0
  107. package/build/util/source.cache.js.map +1 -0
  108. package/build/{source.tracer.d.ts → util/source.tracer.d.ts} +1 -0
  109. package/build/util/source.tracer.d.ts.map +1 -0
  110. package/build/{source.tracer.js → util/source.tracer.js} +3 -0
  111. package/build/util/source.tracer.js.map +1 -0
  112. package/build/util/swapping.lru.d.ts +21 -0
  113. package/build/util/swapping.lru.d.ts.map +1 -0
  114. package/build/util/swapping.lru.js +56 -0
  115. package/build/util/swapping.lru.js.map +1 -0
  116. package/build/util/validate.d.ts +46 -0
  117. package/build/util/validate.d.ts.map +1 -0
  118. package/build/util/validate.js +107 -0
  119. package/build/util/validate.js.map +1 -0
  120. package/build/wmts.capability.d.ts +1 -1
  121. package/build/wmts.capability.d.ts.map +1 -1
  122. package/dist/index.js +62 -60
  123. package/dist/node_modules/.package-lock.json +1 -1
  124. package/dist/package-lock.json +2 -2
  125. package/dist/package.json +1 -1
  126. package/package.json +6 -6
  127. package/src/__tests__/config.data.ts +41 -3
  128. package/src/__tests__/index.test.ts +3 -19
  129. package/src/__tests__/xyz.util.ts +18 -21
  130. package/src/index.ts +66 -29
  131. package/src/routes/__tests__/attribution.test.ts +356 -403
  132. package/src/routes/__tests__/fonts.test.ts +11 -5
  133. package/src/routes/__tests__/health.test.ts +17 -13
  134. package/src/routes/__tests__/sprites.test.ts +6 -1
  135. package/src/routes/__tests__/tile.json.test.ts +145 -0
  136. package/src/routes/__tests__/tile.style.json.test.ts +105 -0
  137. package/src/routes/__tests__/wmts.test.ts +5 -55
  138. package/src/routes/__tests__/xyz.test.ts +119 -0
  139. package/src/routes/attribution.ts +53 -99
  140. package/src/routes/fonts.ts +29 -15
  141. package/src/routes/health.ts +17 -16
  142. package/src/routes/imagery.ts +10 -9
  143. package/src/routes/ping.ts +8 -0
  144. package/src/routes/sprites.ts +16 -10
  145. package/src/routes/tile.json.ts +24 -18
  146. package/src/routes/tile.style.json.ts +15 -12
  147. package/src/routes/tile.wmts.ts +30 -31
  148. package/src/routes/tile.xyz.raster.ts +106 -0
  149. package/src/routes/tile.xyz.ts +31 -16
  150. package/src/routes/tile.xyz.vector.ts +47 -0
  151. package/src/routes/version.ts +8 -0
  152. package/src/util/__test__/validate.test.ts +74 -0
  153. package/src/util/cotar.serve.ts +46 -0
  154. package/src/util/etag.ts +20 -0
  155. package/src/util/response.ts +4 -0
  156. package/src/util/source.cache.ts +71 -0
  157. package/src/{source.tracer.ts → util/source.tracer.ts} +4 -0
  158. package/src/util/swapping.lru.ts +63 -0
  159. package/src/util/validate.ts +126 -0
  160. package/src/wmts.capability.ts +1 -1
  161. package/tsconfig.tsbuildinfo +1 -1
  162. package/build/__tests__/route.test.d.ts +0 -2
  163. package/build/__tests__/route.test.d.ts.map +0 -1
  164. package/build/__tests__/route.test.js +0 -21
  165. package/build/__tests__/route.test.js.map +0 -1
  166. package/build/__tests__/tiff.cache.test.d.ts +0 -2
  167. package/build/__tests__/tiff.cache.test.d.ts.map +0 -1
  168. package/build/__tests__/tiff.cache.test.js +0 -59
  169. package/build/__tests__/tiff.cache.test.js.map +0 -1
  170. package/build/__tests__/tile.cache.key.test.d.ts +0 -2
  171. package/build/__tests__/tile.cache.key.test.d.ts.map +0 -1
  172. package/build/__tests__/tile.cache.key.test.js +0 -49
  173. package/build/__tests__/tile.cache.key.test.js.map +0 -1
  174. package/build/__tests__/tile.set.cache.test.d.ts +0 -2
  175. package/build/__tests__/tile.set.cache.test.d.ts.map +0 -1
  176. package/build/__tests__/tile.set.cache.test.js +0 -72
  177. package/build/__tests__/tile.set.cache.test.js.map +0 -1
  178. package/build/__tests__/tile.set.test.d.ts +0 -2
  179. package/build/__tests__/tile.set.test.d.ts.map +0 -1
  180. package/build/__tests__/tile.set.test.js +0 -12
  181. package/build/__tests__/tile.set.test.js.map +0 -1
  182. package/build/__tests__/xyz.test.d.ts.map +0 -1
  183. package/build/__tests__/xyz.test.js +0 -275
  184. package/build/__tests__/xyz.test.js.map +0 -1
  185. package/build/api.key.d.ts +0 -2
  186. package/build/api.key.d.ts.map +0 -1
  187. package/build/api.key.js +0 -24
  188. package/build/api.key.js.map +0 -1
  189. package/build/cli/dump.d.ts +0 -2
  190. package/build/cli/dump.d.ts.map +0 -1
  191. package/build/cli/dump.js +0 -48
  192. package/build/cli/dump.js.map +0 -1
  193. package/build/cli/tile.set.local.d.ts +0 -12
  194. package/build/cli/tile.set.local.d.ts.map +0 -1
  195. package/build/cli/tile.set.local.js +0 -40
  196. package/build/cli/tile.set.local.js.map +0 -1
  197. package/build/cotar.cache.d.ts.map +0 -1
  198. package/build/cotar.cache.js +0 -50
  199. package/build/cotar.cache.js.map +0 -1
  200. package/build/router.d.ts +0 -15
  201. package/build/router.d.ts.map +0 -1
  202. package/build/router.js +0 -50
  203. package/build/router.js.map +0 -1
  204. package/build/routes/api.d.ts +0 -4
  205. package/build/routes/api.d.ts.map +0 -1
  206. package/build/routes/api.js +0 -14
  207. package/build/routes/api.js.map +0 -1
  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 -88
  211. package/build/routes/esri/rest.js.map +0 -1
  212. package/build/routes/response.d.ts +0 -4
  213. package/build/routes/response.d.ts.map +0 -1
  214. package/build/routes/response.js +0 -4
  215. package/build/routes/response.js.map +0 -1
  216. package/build/routes/tile.d.ts +0 -3
  217. package/build/routes/tile.d.ts.map +0 -1
  218. package/build/routes/tile.etag.d.ts +0 -11
  219. package/build/routes/tile.etag.d.ts.map +0 -1
  220. package/build/routes/tile.etag.js +0 -30
  221. package/build/routes/tile.etag.js.map +0 -1
  222. package/build/routes/tile.js +0 -28
  223. package/build/routes/tile.js.map +0 -1
  224. package/build/source.tracer.d.ts.map +0 -1
  225. package/build/source.tracer.js.map +0 -1
  226. package/build/tiff.cache.d.ts +0 -17
  227. package/build/tiff.cache.d.ts.map +0 -1
  228. package/build/tiff.cache.js +0 -46
  229. package/build/tiff.cache.js.map +0 -1
  230. package/build/tile.set.cache.d.ts +0 -20
  231. package/build/tile.set.cache.d.ts.map +0 -1
  232. package/build/tile.set.cache.js +0 -72
  233. package/build/tile.set.cache.js.map +0 -1
  234. package/build/tile.set.d.ts +0 -4
  235. package/build/tile.set.d.ts.map +0 -1
  236. package/build/tile.set.js +0 -2
  237. package/build/tile.set.js.map +0 -1
  238. package/build/tile.set.raster.d.ts +0 -49
  239. package/build/tile.set.raster.d.ts.map +0 -1
  240. package/build/tile.set.raster.js +0 -189
  241. package/build/tile.set.raster.js.map +0 -1
  242. package/build/tile.set.vector.d.ts +0 -18
  243. package/build/tile.set.vector.d.ts.map +0 -1
  244. package/build/tile.set.vector.js +0 -54
  245. package/build/tile.set.vector.js.map +0 -1
  246. package/build/validate.d.ts +0 -16
  247. package/build/validate.d.ts.map +0 -1
  248. package/build/validate.js +0 -32
  249. package/build/validate.js.map +0 -1
  250. package/src/__tests__/route.test.ts +0 -24
  251. package/src/__tests__/tiff.cache.test.ts +0 -73
  252. package/src/__tests__/tile.cache.key.test.ts +0 -56
  253. package/src/__tests__/tile.set.cache.test.ts +0 -80
  254. package/src/__tests__/tile.set.test.ts +0 -12
  255. package/src/__tests__/xyz.test.ts +0 -318
  256. package/src/api.key.ts +0 -23
  257. package/src/cli/dump.ts +0 -61
  258. package/src/cli/tile.set.local.ts +0 -51
  259. package/src/cotar.cache.ts +0 -54
  260. package/src/router.ts +0 -58
  261. package/src/routes/api.ts +0 -15
  262. package/src/routes/esri/rest.ts +0 -90
  263. package/src/routes/response.ts +0 -4
  264. package/src/routes/tile.etag.ts +0 -36
  265. package/src/routes/tile.ts +0 -23
  266. package/src/tiff.cache.ts +0 -51
  267. package/src/tile.set.cache.ts +0 -84
  268. package/src/tile.set.raster.ts +0 -230
  269. package/src/tile.set.ts +0 -4
  270. package/src/tile.set.vector.ts +0 -61
  271. package/src/validate.ts +0 -32
@@ -1,49 +0,0 @@
1
- import { GoogleTms, Nztm2000Tms, ImageFormat } from '@basemaps/geo';
2
- import { TileType } from '@basemaps/shared';
3
- import { TestTiff } from '@basemaps/test';
4
- import o from 'ospec';
5
- import { TileEtag } from '../routes/tile.etag.js';
6
- o.spec('TileCacheKey', () => {
7
- const oldRenderId = TileEtag.RenderId;
8
- const xyzData = {
9
- x: 0,
10
- y: 0,
11
- z: 0,
12
- tileMatrix: GoogleTms,
13
- name: 'foo',
14
- ext: ImageFormat.Png,
15
- type: TileType.Tile,
16
- };
17
- o.afterEach(() => {
18
- TileEtag.RenderId = oldRenderId;
19
- });
20
- o('should generate a cachekey', async () => {
21
- const tiff = await TestTiff.Google.init();
22
- const comp = {
23
- tiff,
24
- source: {
25
- x: 0,
26
- y: 0,
27
- imageId: 0,
28
- width: 512,
29
- height: 512,
30
- },
31
- x: 5,
32
- y: 5,
33
- };
34
- const firstKey = TileEtag.generate([comp], xyzData);
35
- o(firstKey).equals('8eJ7XnUeEGBI2d7mfAaK5o8KbUc0+CVaIoPzqCvkoDk=');
36
- // Different layers should generate different keys
37
- o(TileEtag.generate([comp, comp], xyzData)).notEquals(firstKey);
38
- // Different projections should generate different keys
39
- xyzData.tileMatrix = Nztm2000Tms;
40
- o(TileEtag.generate([comp], xyzData)).notEquals(firstKey);
41
- });
42
- o('should change if the renderId changes', () => {
43
- const keyA = TileEtag.generate([], { tileMatrix: {} });
44
- TileEtag.RenderId = 2;
45
- const KeyB = TileEtag.generate([], { tileMatrix: {} });
46
- o(keyA).notEquals(KeyB);
47
- });
48
- });
49
- //# sourceMappingURL=tile.cache.key.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tile.cache.key.test.js","sourceRoot":"","sources":["../../src/__tests__/tile.cache.key.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAe,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,CAAC,MAAM,OAAO,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE;IAC1B,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC;IAEtC,MAAM,OAAO,GAAgB;QAC3B,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,UAAU,EAAE,SAAS;QACrB,IAAI,EAAE,KAAK;QACX,GAAG,EAAE,WAAW,CAAC,GAAG;QACpB,IAAI,EAAE,QAAQ,CAAC,IAAI;KACpB,CAAC;IAEF,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE;QACf,QAAQ,CAAC,QAAQ,GAAG,WAAW,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,CAAC,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAgB;YACxB,IAAI;YACJ,MAAM,EAAE;gBACN,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,CAAC;gBACJ,OAAO,EAAE,CAAC;gBACV,KAAK,EAAE,GAAG;gBACV,MAAM,EAAE,GAAG;aACZ;YACD,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;SACL,CAAC;QACF,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;QACpD,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,8CAA8C,CAAC,CAAC;QAEnE,kDAAkD;QAClD,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAEhE,uDAAuD;QACvD,OAAO,CAAC,UAAU,GAAG,WAAW,CAAC;QACjC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,CAAC,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC9C,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAS,CAAC,CAAC;QAC9D,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC;QACtB,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAS,CAAC,CAAC;QAC9D,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=tile.set.cache.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tile.set.cache.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/tile.set.cache.test.ts"],"names":[],"mappings":""}
@@ -1,72 +0,0 @@
1
- import { TileSetType } from '@basemaps/config';
2
- import { GoogleTms } from '@basemaps/geo';
3
- import o from 'ospec';
4
- import sinon from 'sinon';
5
- import { TileSets } from '../tile.set.cache.js';
6
- import { TileSetRaster } from '../tile.set.raster.js';
7
- const sandbox = sinon.createSandbox();
8
- o.spec('TileSetCache', () => {
9
- const imageOne = {
10
- id: 'im_id1',
11
- name: 'tasman_rural_2018-19_0-3m',
12
- bounds: { x: 123, y: 456, width: 200, height: 300 },
13
- files: [{ name: 'foo', x: 123, y: 456, width: 200, height: 300 }],
14
- uri: 's3://foo/bar',
15
- };
16
- const imgMap = new Map();
17
- imgMap.set(imageOne.id, imageOne);
18
- o.afterEach(() => {
19
- TileSets.cache.clear();
20
- sandbox.restore();
21
- });
22
- o.spec('loadTileSet', () => {
23
- o('load individual set', async () => {
24
- TileSets.add(new TileSetRaster('aerial@head', GoogleTms));
25
- const parentTileSet = await TileSets.get('aerial@head', GoogleTms);
26
- if (parentTileSet == null || parentTileSet.type === TileSetType.Vector)
27
- throw new Error('null parentTileSet');
28
- parentTileSet.imagery = imgMap;
29
- parentTileSet.tileSet = {
30
- name: 'parent',
31
- title: 'parent aerial title',
32
- background: { r: 200, g: 50, b: 100, alpha: 0.5 },
33
- };
34
- const subTileSet = await TileSets.get('aerial@head:tasman_rural_2018-19_0-3m', GoogleTms);
35
- if (subTileSet == null || subTileSet.type === TileSetType.Vector)
36
- throw new Error('null subTileSet');
37
- o(subTileSet.title).equals('parent aerial title Tasman rural 2018-19 0.3m');
38
- o(subTileSet.fullName).equals('aerial@head:tasman_rural_2018-19_0-3m');
39
- o([...subTileSet.imagery.values()]).deepEquals([imageOne]);
40
- const [firstLayer] = subTileSet.tileSet.layers;
41
- o(firstLayer).deepEquals({
42
- name: firstLayer.name,
43
- [3857]: 'im_id1',
44
- minZoom: 0,
45
- maxZoom: 100,
46
- });
47
- o(subTileSet.tileSet.background).equals(undefined);
48
- o(parentTileSet.tileSet.background).deepEquals({ r: 200, g: 50, b: 100, alpha: 0.5 });
49
- const noTiffs = subTileSet.getTiffsForTile({ x: 0, y: 0, z: 1 });
50
- o(noTiffs).deepEquals([]);
51
- const aTiff = subTileSet.getTiffsForTile({ x: 0, y: 0, z: 0 });
52
- o(aTiff.length).equals(1);
53
- o(aTiff[0].source.uri).equals('s3://foo/bar/foo.tiff');
54
- TileSets.cache.delete(subTileSet.id);
55
- delete parentTileSet.tileSet.title;
56
- const subTileSetB = await TileSets.get('aerial@head:tasman_rural_2018-19_0-3m', GoogleTms);
57
- if (subTileSetB == null || subTileSetB.type === TileSetType.Vector)
58
- throw new Error('null subTileSetB');
59
- o(subTileSetB.title).equals('parent Tasman rural 2018-19 0.3m');
60
- });
61
- o('should not throw if child does not exist', async () => {
62
- TileSets.add(new TileSetRaster('aerial@head', GoogleTms));
63
- const parentTileSet = await TileSets.get('aerial@head', GoogleTms);
64
- if (parentTileSet == null || parentTileSet.type === TileSetType.Vector)
65
- throw new Error('null parentTileSet');
66
- parentTileSet.imagery = imgMap;
67
- const subTileSet = await TileSets.get('aerial@head:fake', GoogleTms);
68
- o(subTileSet).equals(null);
69
- });
70
- });
71
- });
72
- //# sourceMappingURL=tile.set.cache.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tile.set.cache.test.js","sourceRoot":"","sources":["../../src/__tests__/tile.set.cache.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=tile.set.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tile.set.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/tile.set.test.ts"],"names":[],"mappings":""}
@@ -1,12 +0,0 @@
1
- import { GoogleTms, Nztm2000Tms } from '@basemaps/geo';
2
- import o from 'ospec';
3
- import { TileSetRaster } from '../tile.set.raster.js';
4
- o.spec('tile.set', () => {
5
- o('extent', () => {
6
- o(new TileSetRaster('google', GoogleTms).extent.toBbox()).deepEquals([
7
- -20037508.3427892, -20037508.3427892, 20037508.3427892, 20037508.3427892,
8
- ]);
9
- o(new TileSetRaster('nztm', Nztm2000Tms).extent.toBbox()).deepEquals([274000, 3087000, 3327000, 7173000]);
10
- });
11
- });
12
- //# sourceMappingURL=tile.set.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tile.set.test.js","sourceRoot":"","sources":["../../src/__tests__/tile.set.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,CAAC,MAAM,OAAO,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE;IACtB,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE;QACf,CAAC,CAAC,IAAI,aAAa,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC;YACnE,CAAC,gBAAgB,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB;SACzE,CAAC,CAAC;QACH,CAAC,CAAC,IAAI,aAAa,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5G,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"xyz.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/xyz.test.ts"],"names":[],"mappings":""}
@@ -1,275 +0,0 @@
1
- import { GoogleTms, Nztm2000QuadTms, TileMatrixSets } from '@basemaps/geo';
2
- import { Config, Env, LogConfig } from '@basemaps/shared';
3
- import { round } from '@basemaps/test/build/rounding.js';
4
- import o from 'ospec';
5
- import sinon from 'sinon';
6
- import { handleRequest } from '../index.js';
7
- import { TileEtag } from '../routes/tile.etag.js';
8
- import { TileSets } from '../tile.set.cache.js';
9
- import { TileComposer } from '../tile.set.raster.js';
10
- import { Provider } from './config.data.js';
11
- import { FakeTileSet, FakeTileSetVector, mockRequest } from './xyz.util.js';
12
- const sandbox = sinon.createSandbox();
13
- const TileSetNames = ['aerial', 'aerial@head', 'aerial@beta', '01E7PJFR9AMQFJ05X9G7FQ3XMW'];
14
- /* eslint-disable @typescript-eslint/explicit-function-return-type */
15
- o.spec('LambdaXyz', () => {
16
- const host = 'https://tiles.test';
17
- const origPublicUrlBase = process.env[Env.PublicUrlBase];
18
- /** Generate mock ALBEvent */
19
- let rasterMock = o.spy();
20
- const generateMock = o.spy(() => 'foo');
21
- const rasterMockBuffer = Buffer.from([1]);
22
- const origTileEtag = TileEtag.generate;
23
- const origCompose = TileComposer.compose;
24
- const apiKey = 'd01f7w7rnhdzg0p7fyrc9v9ard1';
25
- const apiKeyHeader = { 'x-linz-api-key': 'd01f7w7rnhdzg0p7fyrc9v9ard1' };
26
- o.beforeEach(() => {
27
- process.env[Env.PublicUrlBase] = host;
28
- LogConfig.disable();
29
- // tileMock = o.spy(() => tileMockData) as any;
30
- rasterMock = o.spy(() => {
31
- return {
32
- buffer: rasterMockBuffer,
33
- };
34
- });
35
- TileEtag.generate = generateMock;
36
- TileComposer.compose = rasterMock;
37
- const allMatrix = [...TileMatrixSets.All.values()];
38
- for (const tileSetName of TileSetNames) {
39
- for (const tileMatrix of allMatrix) {
40
- const tileSet = new FakeTileSet(tileSetName, tileMatrix);
41
- TileSets.add(tileSet);
42
- tileSet.getTiffsForTile = () => [];
43
- tileSet.initTiffs = async () => [];
44
- }
45
- }
46
- TileSets.add(new FakeTileSetVector('topographic', GoogleTms));
47
- Config.Provider.get = async () => Provider;
48
- });
49
- o.afterEach(() => {
50
- TileSets.cache.clear();
51
- TileComposer.compose = origCompose;
52
- TileEtag.generate = origTileEtag;
53
- process.env[Env.PublicUrlBase] = origPublicUrlBase;
54
- sandbox.restore();
55
- });
56
- o('should export handler', async () => {
57
- const base = await import('../index.js');
58
- o(typeof base.handler).equals('function');
59
- });
60
- TileSetNames.forEach((tileSetName) => {
61
- o(`should generate a tile 0,0,0 for ${tileSetName}.png`, async () => {
62
- o.timeout(200);
63
- const request = mockRequest(`/v1/tiles/${tileSetName}/global-mercator/0/0/0.png`, 'get', apiKeyHeader);
64
- const res = await handleRequest(request);
65
- o(res.status).equals(200);
66
- o(res.header('content-type')).equals('image/png');
67
- o(res.header('eTaG')).equals('foo');
68
- o(res.body).equals(rasterMockBuffer.toString('base64'));
69
- // Validate the session information has been set correctly
70
- o(request.logContext['tileSet']).equals(tileSetName);
71
- o(request.logContext['xyz']).deepEquals({ x: 0, y: 0, z: 0 });
72
- o(round(request.logContext['location'])).deepEquals({ lat: 0, lon: 0 });
73
- });
74
- });
75
- o('should generate a tile 0,0,0 for webp', async () => {
76
- const request = mockRequest('/v1/tiles/aerial/3857/0/0/0.webp', 'get', apiKeyHeader);
77
- const res = await handleRequest(request);
78
- o(res.status).equals(200);
79
- o(res.header('content-type')).equals('image/webp');
80
- o(res.header('eTaG')).equals('foo');
81
- o(res.body).equals(rasterMockBuffer.toString('base64'));
82
- // Validate the session information has been set correctly
83
- o(request.logContext['xyz']).deepEquals({ x: 0, y: 0, z: 0 });
84
- o(round(request.logContext['location'])).deepEquals({ lat: 0, lon: 0 });
85
- });
86
- ['png', 'webp', 'jpeg'].forEach((fmt) => {
87
- o(`should 200 with empty ${fmt} if a tile is out of bounds`, async () => {
88
- // tiler.tile = async () => [];
89
- const res = await handleRequest(mockRequest(`/v1/tiles/aerial/global-mercator/0/0/0.${fmt}`, 'get', apiKeyHeader));
90
- o(res.status).equals(200);
91
- o(res.header('content-type')).equals(`image/${fmt}`);
92
- o(rasterMock.calls.length).equals(1);
93
- });
94
- });
95
- o('should 304 if a tile is not modified', async () => {
96
- const key = 'foo';
97
- const request = mockRequest('/v1/tiles/aerial/global-mercator/0/0/0.png', 'get', {
98
- 'if-none-match': key,
99
- ...apiKeyHeader,
100
- });
101
- const res = await handleRequest(request);
102
- o(res.status).equals(304);
103
- o(res.header('eTaG')).equals(undefined);
104
- o(rasterMock.calls.length).equals(0);
105
- o(request.logContext['cache']).deepEquals({ key, match: key, hit: true });
106
- });
107
- o('should 404 if a tile is outside of the range', async () => {
108
- try {
109
- const res = await handleRequest(mockRequest('/v1/tiles/aerial/global-mercator/25/0/0.png', 'get', apiKeyHeader));
110
- o(res.status).equals(404);
111
- }
112
- catch (e) {
113
- o(e.status).equals(404);
114
- }
115
- try {
116
- const res = await handleRequest(mockRequest('/v1/tiles/aerial/2193/17/0/0.png', 'get', apiKeyHeader));
117
- o(res.status).equals(404);
118
- }
119
- catch (e) {
120
- o(e.status).equals(404);
121
- }
122
- });
123
- o.spec('tileJson', () => {
124
- o('should 404 if invalid url is given', async () => {
125
- const request = mockRequest('/v1/tiles/tile.json', 'get', apiKeyHeader);
126
- const res = await handleRequest(request);
127
- o(res.status).equals(404);
128
- });
129
- o('should serve tile json for tile_set', async () => {
130
- var _a;
131
- const request = mockRequest('/v1/tiles/aerial/NZTM2000Quad/tile.json', 'get', apiKeyHeader);
132
- const res = await handleRequest(request);
133
- o(res.status).equals(200);
134
- o(res.header('cache-control')).equals('no-store');
135
- const body = Buffer.from((_a = res.body) !== null && _a !== void 0 ? _a : '', 'base64').toString();
136
- o(JSON.parse(body)).deepEquals({
137
- tiles: [`https://tiles.test/v1/tiles/aerial/NZTM2000Quad/{z}/{x}/{y}.webp?api=${apiKey}`],
138
- tilejson: '3.0.0',
139
- });
140
- });
141
- o('should serve vector tiles', async () => {
142
- var _a;
143
- const request = mockRequest('/v1/tiles/topographic/WebMercatorQuad/tile.json', 'get', apiKeyHeader);
144
- const res = await handleRequest(request);
145
- o(res.status).equals(200);
146
- const body = Buffer.from((_a = res.body) !== null && _a !== void 0 ? _a : '', 'base64').toString();
147
- o(JSON.parse(body)).deepEquals({
148
- tiles: [`https://tiles.test/v1/tiles/topographic/WebMercatorQuad/{z}/{x}/{y}.pbf?api=${apiKey}`],
149
- tilejson: '3.0.0',
150
- });
151
- });
152
- o('should serve vector tiles with min/max zoom', async () => {
153
- var _a;
154
- const fakeTileSet = new FakeTileSetVector('fake-vector', GoogleTms);
155
- fakeTileSet.tileSet.maxZoom = 15;
156
- fakeTileSet.tileSet.minZoom = 3;
157
- TileSets.add(fakeTileSet);
158
- const request = mockRequest('/v1/tiles/fake-vector/WebMercatorQuad/tile.json', 'get', apiKeyHeader);
159
- const res = await handleRequest(request);
160
- o(res.status).equals(200);
161
- const body = Buffer.from((_a = res.body) !== null && _a !== void 0 ? _a : '', 'base64').toString();
162
- o(JSON.parse(body)).deepEquals({
163
- tiles: [`https://tiles.test/v1/tiles/fake-vector/WebMercatorQuad/{z}/{x}/{y}.pbf?api=${apiKey}`],
164
- maxzoom: 15,
165
- minzoom: 3,
166
- tilejson: '3.0.0',
167
- });
168
- });
169
- o('should serve convert zoom to tile matrix', async () => {
170
- var _a;
171
- const fakeTileSet = new FakeTileSetVector('fake-vector', Nztm2000QuadTms);
172
- fakeTileSet.tileSet.maxZoom = 15;
173
- fakeTileSet.tileSet.minZoom = 1;
174
- TileSets.add(fakeTileSet);
175
- const request = mockRequest('/v1/tiles/fake-vector/NZTM2000Quad/tile.json', 'get', apiKeyHeader);
176
- const res = await handleRequest(request);
177
- o(res.status).equals(200);
178
- const body = Buffer.from((_a = res.body) !== null && _a !== void 0 ? _a : '', 'base64').toString();
179
- o(JSON.parse(body)).deepEquals({
180
- tiles: [`https://tiles.test/v1/tiles/fake-vector/NZTM2000Quad/{z}/{x}/{y}.pbf?api=${apiKey}`],
181
- maxzoom: 13,
182
- minzoom: 0,
183
- tilejson: '3.0.0',
184
- });
185
- });
186
- });
187
- o.spec('styleJson', () => {
188
- o('should not found style json', async () => {
189
- const request = mockRequest('/v1/tiles/topographic/Google/style/topographic.json', 'get', apiKeyHeader);
190
- sandbox.stub(Config.Style, 'get').resolves(null);
191
- const res = await handleRequest(request);
192
- o(res.status).equals(404);
193
- });
194
- o('should serve style json', async () => {
195
- var _a;
196
- const request = mockRequest('/v1/tiles/topographic/Google/style/topographic.json', 'get', apiKeyHeader);
197
- const fakeStyle = {
198
- version: 8,
199
- id: 'test',
200
- name: 'topographic',
201
- sources: {
202
- basemaps_vector: {
203
- type: 'vector',
204
- url: `/vector`,
205
- },
206
- basemaps_raster: {
207
- type: 'raster',
208
- tiles: [`/raster`],
209
- },
210
- basemaps_raster_encode: {
211
- type: 'raster',
212
- tiles: [`/raster/{z}/{x}/{y}.webp`], // Shouldn't encode the {}
213
- },
214
- test_vector: {
215
- type: 'vector',
216
- url: 'vector.url.co.nz',
217
- },
218
- test_raster: {
219
- type: 'raster',
220
- tiles: ['raster.url.co.nz'],
221
- },
222
- },
223
- layers: [
224
- {
225
- layout: {
226
- visibility: 'visible',
227
- },
228
- paint: {
229
- 'background-color': 'rgba(206, 229, 242, 1)',
230
- },
231
- id: 'Background',
232
- type: 'background',
233
- minzoom: 0,
234
- },
235
- ],
236
- glyphs: '/glyphs',
237
- sprite: '/sprite',
238
- metadata: { id: 'test' },
239
- };
240
- const fakeRecord = {
241
- id: 'st_topographic_production',
242
- name: 'topographic',
243
- style: fakeStyle,
244
- };
245
- sandbox.stub(Config.Style, 'get').resolves(fakeRecord);
246
- const res = await handleRequest(request);
247
- o(res.status).equals(200);
248
- o(res.header('content-type')).equals('application/json');
249
- o(res.header('cache-control')).equals('no-store');
250
- const body = Buffer.from((_a = res.body) !== null && _a !== void 0 ? _a : '', 'base64').toString();
251
- fakeStyle.sources.basemaps_vector = {
252
- type: 'vector',
253
- url: `${host}/vector?api=${apiKey}`,
254
- };
255
- fakeStyle.sources.basemaps_raster = {
256
- type: 'raster',
257
- tiles: [`${host}/raster?api=${apiKey}`],
258
- };
259
- fakeStyle.sources.basemaps_raster_encode = {
260
- type: 'raster',
261
- tiles: [`${host}/raster/{z}/{x}/{y}.webp?api=${apiKey}`],
262
- };
263
- fakeStyle.sprite = `${host}/sprite`;
264
- fakeStyle.glyphs = `${host}/glyphs`;
265
- o(JSON.parse(body)).deepEquals(fakeStyle);
266
- });
267
- });
268
- ['/favicon.ico', '/index.html', '/foo/bar'].forEach((path) => {
269
- o('should error on invalid paths: ' + path, async () => {
270
- const res = await handleRequest(mockRequest(path, 'get', apiKeyHeader));
271
- o(res.status).equals(404);
272
- });
273
- });
274
- });
275
- //# sourceMappingURL=xyz.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"xyz.test.js","sourceRoot":"","sources":["../../src/__tests__/xyz.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AACzD,OAAO,CAAC,MAAM,OAAO,CAAC;AACtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5E,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;AAEtC,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,4BAA4B,CAAC,CAAC;AAC5F,qEAAqE;AACrE,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;IACvB,MAAM,IAAI,GAAG,oBAAoB,CAAC;IAClC,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAEzD,6BAA6B;IAE7B,IAAI,UAAU,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IACzB,MAAM,YAAY,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,CAAC;IACvC,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC;IAEzC,MAAM,MAAM,GAAG,6BAA6B,CAAC;IAC7C,MAAM,YAAY,GAAG,EAAE,gBAAgB,EAAE,6BAA6B,EAAE,CAAC;IAEzE,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE;QAChB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;QAEtC,SAAS,CAAC,OAAO,EAAE,CAAC;QACpB,+CAA+C;QAC/C,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;YACtB,OAAO;gBACL,MAAM,EAAE,gBAAgB;aACzB,CAAC;QACJ,CAAC,CAAQ,CAAC;QAEV,QAAQ,CAAC,QAAQ,GAAG,YAAY,CAAC;QACjC,YAAY,CAAC,OAAO,GAAG,UAAiB,CAAC;QAEzC,MAAM,SAAS,GAAG,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACnD,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE;YACtC,KAAK,MAAM,UAAU,IAAI,SAAS,EAAE;gBAClC,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;gBACzD,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACtB,OAAO,CAAC,eAAe,GAAG,GAAO,EAAE,CAAC,EAAE,CAAC;gBACvC,OAAO,CAAC,SAAS,GAAG,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;aACpC;SACF;QAED,QAAQ,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC;QAE7D,MAAM,CAAC,QAAgB,CAAC,GAAG,GAAG,KAAK,IAA6B,EAAE,CAAC,QAAQ,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE;QACf,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACvB,YAAY,CAAC,OAAO,GAAG,WAAW,CAAC;QACnC,QAAQ,CAAC,QAAQ,GAAG,YAAY,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,iBAAiB,CAAC;QACnD,OAAO,CAAC,OAAO,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,CAAC,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;QACpC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QACzC,CAAC,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;QACnC,CAAC,CAAC,oCAAoC,WAAW,MAAM,EAAE,KAAK,IAAI,EAAE;YAClE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACf,MAAM,OAAO,GAAG,WAAW,CAAC,aAAa,WAAW,4BAA4B,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;YACvG,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;YACzC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAClD,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACpC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;YAExD,0DAA0D;YAC1D,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACrD,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC9D,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,CAAC,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,OAAO,GAAG,WAAW,CAAC,kCAAkC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;QACrF,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACnD,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAExD,0DAA0D;QAC1D,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9D,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACtC,CAAC,CAAC,yBAAyB,GAAG,6BAA6B,EAAE,KAAK,IAAI,EAAE;YACtE,+BAA+B;YAC/B,MAAM,GAAG,GAAG,MAAM,aAAa,CAC7B,WAAW,CAAC,0CAA0C,GAAG,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,CAClF,CAAC;YACF,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;YACrD,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,CAAC,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,GAAG,GAAG,KAAK,CAAC;QAClB,MAAM,OAAO,GAAG,WAAW,CAAC,4CAA4C,EAAE,KAAK,EAAE;YAC/E,eAAe,EAAE,GAAG;YACpB,GAAG,YAAY;SAChB,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAExC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,CAAC,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC3D,IAAI;YACF,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,WAAW,CAAC,6CAA6C,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;YACjH,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SAC3B;QAAC,OAAO,CAAM,EAAE;YACf,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SACzB;QACD,IAAI;YACF,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,WAAW,CAAC,kCAAkC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;YACtG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SAC3B;QAAC,OAAO,CAAM,EAAE;YACf,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SACzB;IACH,CAAC,CAAC,CAAC;IAEH,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE;QACtB,CAAC,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,OAAO,GAAG,WAAW,CAAC,qBAAqB,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;YAExE,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;YACzC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,CAAC,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;;YAClD,MAAM,OAAO,GAAG,WAAW,CAAC,yCAAyC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;YAE5F,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;YACzC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAElD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAA,GAAG,CAAC,IAAI,mCAAI,EAAE,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC9D,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;gBAC7B,KAAK,EAAE,CAAC,wEAAwE,MAAM,EAAE,CAAC;gBACzF,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,CAAC,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;;YACxC,MAAM,OAAO,GAAG,WAAW,CAAC,iDAAiD,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;YAEpG,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;YACzC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAE1B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAA,GAAG,CAAC,IAAI,mCAAI,EAAE,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC9D,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;gBAC7B,KAAK,EAAE,CAAC,+EAA+E,MAAM,EAAE,CAAC;gBAChG,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,CAAC,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;;YAC1D,MAAM,WAAW,GAAG,IAAI,iBAAiB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;YACpE,WAAW,CAAC,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC;YACjC,WAAW,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC;YAChC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC1B,MAAM,OAAO,GAAG,WAAW,CAAC,iDAAiD,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;YAEpG,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;YACzC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAE1B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAA,GAAG,CAAC,IAAI,mCAAI,EAAE,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC9D,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;gBAC7B,KAAK,EAAE,CAAC,+EAA+E,MAAM,EAAE,CAAC;gBAChG,OAAO,EAAE,EAAE;gBACX,OAAO,EAAE,CAAC;gBACV,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,CAAC,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;;YACvD,MAAM,WAAW,GAAG,IAAI,iBAAiB,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;YAC1E,WAAW,CAAC,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC;YACjC,WAAW,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC;YAChC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAE1B,MAAM,OAAO,GAAG,WAAW,CAAC,8CAA8C,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;YAEjG,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;YACzC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAE1B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAA,GAAG,CAAC,IAAI,mCAAI,EAAE,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC9D,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;gBAC7B,KAAK,EAAE,CAAC,4EAA4E,MAAM,EAAE,CAAC;gBAC7F,OAAO,EAAE,EAAE;gBACX,OAAO,EAAE,CAAC;gBACV,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;QACvB,CAAC,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;YAC1C,MAAM,OAAO,GAAG,WAAW,CAAC,qDAAqD,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;YAExG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAEjD,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;YACzC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,CAAC,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;;YACtC,MAAM,OAAO,GAAG,WAAW,CAAC,qDAAqD,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;YAExG,MAAM,SAAS,GAAc;gBAC3B,OAAO,EAAE,CAAC;gBACV,EAAE,EAAE,MAAM;gBACV,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE;oBACP,eAAe,EAAE;wBACf,IAAI,EAAE,QAAQ;wBACd,GAAG,EAAE,SAAS;qBACf;oBACD,eAAe,EAAE;wBACf,IAAI,EAAE,QAAQ;wBACd,KAAK,EAAE,CAAC,SAAS,CAAC;qBACnB;oBACD,sBAAsB,EAAE;wBACtB,IAAI,EAAE,QAAQ;wBACd,KAAK,EAAE,CAAC,0BAA0B,CAAC,EAAE,0BAA0B;qBAChE;oBACD,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,GAAG,EAAE,kBAAkB;qBACxB;oBACD,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,KAAK,EAAE,CAAC,kBAAkB,CAAC;qBAC5B;iBACF;gBACD,MAAM,EAAE;oBACN;wBACE,MAAM,EAAE;4BACN,UAAU,EAAE,SAAS;yBACtB;wBACD,KAAK,EAAE;4BACL,kBAAkB,EAAE,wBAAwB;yBAC7C;wBACD,EAAE,EAAE,YAAY;wBAChB,IAAI,EAAE,YAAY;wBAClB,OAAO,EAAE,CAAC;qBACX;iBACF;gBACD,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,SAAS;gBACjB,QAAQ,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;aACzB,CAAC;YAEF,MAAM,UAAU,GAAG;gBACjB,EAAE,EAAE,2BAA2B;gBAC/B,IAAI,EAAE,aAAa;gBACnB,KAAK,EAAE,SAAS;aACjB,CAAC;YAEF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,UAAiB,CAAC,CAAC;YAE9D,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;YACzC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;YACzD,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAElD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAA,GAAG,CAAC,IAAI,mCAAI,EAAE,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC9D,SAAS,CAAC,OAAO,CAAC,eAAe,GAAG;gBAClC,IAAI,EAAE,QAAQ;gBACd,GAAG,EAAE,GAAG,IAAI,eAAe,MAAM,EAAE;aACpC,CAAC;YACF,SAAS,CAAC,OAAO,CAAC,eAAe,GAAG;gBAClC,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,CAAC,GAAG,IAAI,eAAe,MAAM,EAAE,CAAC;aACxC,CAAC;YACF,SAAS,CAAC,OAAO,CAAC,sBAAsB,GAAG;gBACzC,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,CAAC,GAAG,IAAI,gCAAgC,MAAM,EAAE,CAAC;aACzD,CAAC;YAEF,SAAS,CAAC,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC;YACpC,SAAS,CAAC,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC;YAEpC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,CAAC,cAAc,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC3D,CAAC,CAAC,iCAAiC,GAAG,IAAI,EAAE,KAAK,IAAI,EAAE;YACrD,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;YACxE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function isValidApiKey(apiKey?: string | null): boolean;
2
- //# sourceMappingURL=api.key.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.key.d.ts","sourceRoot":"","sources":["../src/api.key.ts"],"names":[],"mappings":"AAMA,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAgB7D"}
package/build/api.key.js DELETED
@@ -1,24 +0,0 @@
1
- import * as ulid from 'ulid';
2
- const OneHourMs = 60 * 60 * 1000;
3
- const OneDayMs = 24 * OneHourMs;
4
- const MaxApiAgeMs = 91 * OneDayMs;
5
- export function isValidApiKey(apiKey) {
6
- if (apiKey == null)
7
- return false;
8
- if (!apiKey.startsWith('c') && !apiKey.startsWith('d'))
9
- return false;
10
- const ulidId = apiKey.slice(1).toUpperCase();
11
- try {
12
- const ulidTime = ulid.decodeTime(ulidId);
13
- if (apiKey.startsWith('d'))
14
- return true;
15
- if (Date.now() - ulidTime > MaxApiAgeMs) {
16
- return false;
17
- }
18
- }
19
- catch (e) {
20
- return false;
21
- }
22
- return true;
23
- }
24
- //# sourceMappingURL=api.key.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.key.js","sourceRoot":"","sources":["../src/api.key.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACjC,MAAM,QAAQ,GAAG,EAAE,GAAG,SAAS,CAAC;AAChC,MAAM,WAAW,GAAG,EAAE,GAAG,QAAQ,CAAC;AAElC,MAAM,UAAU,aAAa,CAAC,MAAsB;IAClD,IAAI,MAAM,IAAI,IAAI;QAAE,OAAO,KAAK,CAAC;IACjC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACrE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7C,IAAI;QACF,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAExC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,GAAG,WAAW,EAAE;YACvC,OAAO,KAAK,CAAC;SACd;KACF;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,KAAK,CAAC;KACd;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=dump.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dump.d.ts","sourceRoot":"","sources":["../../src/cli/dump.ts"],"names":[],"mappings":""}
package/build/cli/dump.js DELETED
@@ -1,48 +0,0 @@
1
- import { Nztm2000Tms, ImageFormat } from '@basemaps/geo';
2
- import { LogConfig } from '@basemaps/shared';
3
- import { LambdaAlbRequest } from '@linzjs/lambda';
4
- import { promises as fs } from 'fs';
5
- import { tileXyz } from '../routes/tile.xyz.js';
6
- import { TileSets } from '../tile.set.cache.js';
7
- import { TileSetLocal } from './tile.set.local.js';
8
- const xyz = { x: 0, y: 0, z: 0 };
9
- const tileMatrix = Nztm2000Tms;
10
- const tileSetName = 'aerial';
11
- const ext = ImageFormat.Png;
12
- /** Load a tileset form a file path otherwise default to the hard coded one from AWS */
13
- async function getTileSet(filePath) {
14
- if (filePath != null) {
15
- const tileSet = new TileSetLocal('local', filePath);
16
- await tileSet.load();
17
- TileSets.add(tileSet);
18
- return tileSet;
19
- }
20
- const tileSet = await TileSets.get(tileSetName, tileMatrix);
21
- if (tileSet == null)
22
- throw new Error('Missing');
23
- return tileSet;
24
- }
25
- /**
26
- * Utility to render a single tile then save it as a png
27
- */
28
- async function main() {
29
- var _a;
30
- const logger = LogConfig.get();
31
- const filePath = process.argv[2];
32
- const tileSet = await getTileSet(filePath);
33
- logger.info({ ...xyz, projection: tileMatrix.projection.code, tileMatrix: tileMatrix.identifier }, 'RenderTile');
34
- const ctx = new LambdaAlbRequest({
35
- httpMethod: 'get',
36
- path: `/v1/tiles/${tileSet.fullName}/${tileMatrix.identifier}/${xyz.z}/${xyz.x}/${xyz.y}.${ext}`,
37
- }, {}, logger);
38
- const tileData = await tileXyz(ctx);
39
- const headers = {};
40
- for (const [key, value] of tileData.headers)
41
- headers[key] = value;
42
- logger.info({ ...tileData, _body: (_a = tileData.body) === null || _a === void 0 ? void 0 : _a.length, headers }, 'Done');
43
- if (tileData._body != null) {
44
- await fs.writeFile(`output_${xyz.x}_${xyz.y}_z${xyz.z}.${ext}`, tileData._body);
45
- }
46
- }
47
- main().catch(console.error);
48
- //# sourceMappingURL=dump.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dump.js","sourceRoot":"","sources":["../../src/cli/dump.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- import { CogTiff } from '@cogeotiff/core';
2
- import { TileSetRaster } from '../tile.set.raster.js';
3
- export declare class TileSetLocal extends TileSetRaster {
4
- tiffs: CogTiff[];
5
- filePath: string;
6
- tileSet: any;
7
- constructor(name: string, path: string);
8
- setTitle(name: string): void;
9
- load(): Promise<boolean>;
10
- getTiffsForTile(): CogTiff[];
11
- }
12
- //# sourceMappingURL=tile.set.local.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tile.set.local.d.ts","sourceRoot":"","sources":["../../src/cli/tile.set.local.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAc,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAMtD,qBAAa,YAAa,SAAQ,aAAa;IAC7C,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,MAAa;gBAER,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAQtC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAItB,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAqB9B,eAAe,IAAI,OAAO,EAAE;CAG7B"}
@@ -1,40 +0,0 @@
1
- import { Epsg, GoogleTms, TileMatrixSets } from '@basemaps/geo';
2
- import { fsa, LogConfig } from '@basemaps/shared';
3
- import { CogTiff, TiffTagGeo } from '@cogeotiff/core';
4
- import { TileSetRaster } from '../tile.set.raster.js';
5
- function isTiff(fileName) {
6
- return fileName.toLowerCase().endsWith('.tif') || fileName.toLowerCase().endsWith('.tiff');
7
- }
8
- export class TileSetLocal extends TileSetRaster {
9
- constructor(name, path) {
10
- super(name, GoogleTms);
11
- this.tileSet = {};
12
- this.filePath = path;
13
- this.tileSet.name = name;
14
- this.tileSet.title = name;
15
- this.tileSet.projection = GoogleTms.projection.code;
16
- }
17
- setTitle(name) {
18
- this.tileSet.title = name;
19
- }
20
- async load() {
21
- if (this.tiffs != null)
22
- return true;
23
- const fileList = isTiff(this.filePath) ? [this.filePath] : await fsa.toArray(fsa.list(this.filePath));
24
- const files = fileList.filter(isTiff);
25
- if (files.length === 0)
26
- throw new Error(`No tiff files found in ${this.filePath}`);
27
- this.tiffs = files.map((filePath) => new CogTiff(fsa.source(filePath)));
28
- // Read in the projection information
29
- const [firstTiff] = this.tiffs;
30
- await firstTiff.init(true);
31
- const projection = Epsg.get(firstTiff.getImage(0).valueGeo(TiffTagGeo.ProjectedCSTypeGeoKey));
32
- this.tileMatrix = TileMatrixSets.get(projection);
33
- LogConfig.get().info({ path: this.filePath, count: this.tiffs.length, tileMatrix: this.tileMatrix.identifier }, 'LoadedTiffs');
34
- return true;
35
- }
36
- getTiffsForTile() {
37
- return this.tiffs;
38
- }
39
- }
40
- //# sourceMappingURL=tile.set.local.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tile.set.local.js","sourceRoot":"","sources":["../../src/cli/tile.set.local.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,SAAS,MAAM,CAAC,QAAgB;IAC9B,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC7F,CAAC;AAED,MAAM,OAAO,YAAa,SAAQ,aAAa;IAK7C,YAAY,IAAY,EAAE,IAAY;QACpC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAHzB,YAAO,GAAG,EAAS,CAAC;QAIlB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC;IACtD,CAAC;IAED,QAAQ,CAAC,IAAY;QACnB,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QAEpC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QACtG,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEnF,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAExE,qCAAqC;QACrC,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC/B,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,qBAAqB,CAAW,CAAC,CAAC;QACxG,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACjD,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAClB,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,EACzF,aAAa,CACd,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF"}