@basemaps/lambda-tiler 6.15.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 (708) hide show
  1. package/CHANGELOG.md +981 -0
  2. package/LICENSE +21 -0
  3. package/README.md +3 -0
  4. package/build/__test__/index.test.d.ts +2 -0
  5. package/build/__test__/index.test.d.ts.map +1 -0
  6. package/build/__test__/index.test.js +45 -0
  7. package/build/__test__/tiff.cache.test.d.ts +2 -0
  8. package/build/__test__/tiff.cache.test.d.ts.map +1 -0
  9. package/build/__test__/tiff.cache.test.js +58 -0
  10. package/build/__test__/tile.cache.key.test.d.ts +2 -0
  11. package/build/__test__/tile.cache.key.test.d.ts.map +1 -0
  12. package/build/__test__/tile.cache.key.test.js +49 -0
  13. package/build/__test__/tile.set.cache.test.d.ts +2 -0
  14. package/build/__test__/tile.set.cache.test.d.ts.map +1 -0
  15. package/build/__test__/tile.set.cache.test.js +120 -0
  16. package/build/__test__/tile.set.test.d.ts +2 -0
  17. package/build/__test__/tile.set.test.d.ts.map +1 -0
  18. package/build/__test__/tile.set.test.js +16 -0
  19. package/build/__test__/wmts.capability.test.d.ts +2 -0
  20. package/build/__test__/wmts.capability.test.d.ts.map +1 -0
  21. package/build/__test__/wmts.capability.test.js +193 -0
  22. package/build/__test__/xyz.test.d.ts +2 -0
  23. package/build/__test__/xyz.test.d.ts.map +1 -0
  24. package/build/__test__/xyz.test.js +282 -0
  25. package/build/__test__/xyz.util.d.ts +10 -0
  26. package/build/__test__/xyz.util.d.ts.map +1 -0
  27. package/build/__test__/xyz.util.js +48 -0
  28. package/build/api.key.d.ts +2 -0
  29. package/build/api.key.d.ts.map +1 -0
  30. package/build/api.key.js +23 -0
  31. package/build/cli/dump.d.ts +2 -0
  32. package/build/cli/dump.d.ts.map +1 -0
  33. package/build/cli/dump.js +48 -0
  34. package/build/cli/serve.d.ts +2 -0
  35. package/build/cli/serve.d.ts.map +1 -0
  36. package/build/cli/serve.js +116 -0
  37. package/build/cli/tile.set.local.d.ts +12 -0
  38. package/build/cli/tile.set.local.d.ts.map +1 -0
  39. package/build/cli/tile.set.local.js +39 -0
  40. package/build/cli/validate.d.ts +2 -0
  41. package/build/cli/validate.d.ts.map +1 -0
  42. package/build/cli/validate.js +47 -0
  43. package/build/index.d.ts +4 -0
  44. package/build/index.d.ts.map +1 -0
  45. package/build/index.js +29 -0
  46. package/build/router.d.ts +15 -0
  47. package/build/router.d.ts.map +1 -0
  48. package/build/router.js +47 -0
  49. package/build/routes/__test__/attribution.test.d.ts +2 -0
  50. package/build/routes/__test__/attribution.test.d.ts.map +1 -0
  51. package/build/routes/__test__/attribution.test.js +419 -0
  52. package/build/routes/__test__/health.test.d.ts +2 -0
  53. package/build/routes/__test__/health.test.d.ts.map +1 -0
  54. package/build/routes/__test__/health.test.js +68 -0
  55. package/build/routes/api.d.ts +5 -0
  56. package/build/routes/api.d.ts.map +1 -0
  57. package/build/routes/api.js +16 -0
  58. package/build/routes/attribution.d.ts +10 -0
  59. package/build/routes/attribution.d.ts.map +1 -0
  60. package/build/routes/attribution.js +199 -0
  61. package/build/routes/health.d.ts +19 -0
  62. package/build/routes/health.d.ts.map +1 -0
  63. package/build/routes/health.js +75 -0
  64. package/build/routes/tile.d.ts +23 -0
  65. package/build/routes/tile.d.ts.map +1 -0
  66. package/build/routes/tile.etag.d.ts +11 -0
  67. package/build/routes/tile.etag.d.ts.map +1 -0
  68. package/build/routes/tile.etag.js +29 -0
  69. package/build/routes/tile.js +180 -0
  70. package/build/tiff.cache.d.ts +17 -0
  71. package/build/tiff.cache.d.ts.map +1 -0
  72. package/build/tiff.cache.js +45 -0
  73. package/build/tile.set.cache.d.ts +21 -0
  74. package/build/tile.set.cache.d.ts.map +1 -0
  75. package/build/tile.set.cache.js +96 -0
  76. package/build/tile.set.d.ts +20 -0
  77. package/build/tile.set.d.ts.map +1 -0
  78. package/build/tile.set.js +20 -0
  79. package/build/tile.set.raster.d.ts +47 -0
  80. package/build/tile.set.raster.d.ts.map +1 -0
  81. package/build/tile.set.raster.js +181 -0
  82. package/build/tile.set.vector.d.ts +16 -0
  83. package/build/tile.set.vector.d.ts.map +1 -0
  84. package/build/tile.set.vector.js +51 -0
  85. package/build/validate.d.ts +16 -0
  86. package/build/validate.d.ts.map +1 -0
  87. package/build/validate.js +31 -0
  88. package/build/wmts.capability.d.ts +24 -0
  89. package/build/wmts.capability.d.ts.map +1 -0
  90. package/build/wmts.capability.js +173 -0
  91. package/bundle.sh +11 -0
  92. package/dist/index.js +27642 -0
  93. package/dist/node_modules/ansi-regex/index.js +4 -0
  94. package/dist/node_modules/ansi-regex/license +21 -0
  95. package/dist/node_modules/ansi-regex/package.json +108 -0
  96. package/dist/node_modules/ansi-regex/readme.md +39 -0
  97. package/dist/node_modules/aproba/LICENSE +14 -0
  98. package/dist/node_modules/aproba/README.md +94 -0
  99. package/dist/node_modules/aproba/index.js +105 -0
  100. package/dist/node_modules/aproba/package.json +62 -0
  101. package/dist/node_modules/are-we-there-yet/CHANGES.md +37 -0
  102. package/dist/node_modules/are-we-there-yet/LICENSE +5 -0
  103. package/dist/node_modules/are-we-there-yet/README.md +195 -0
  104. package/dist/node_modules/are-we-there-yet/index.js +4 -0
  105. package/dist/node_modules/are-we-there-yet/package.json +63 -0
  106. package/dist/node_modules/are-we-there-yet/tracker-base.js +11 -0
  107. package/dist/node_modules/are-we-there-yet/tracker-group.js +107 -0
  108. package/dist/node_modules/are-we-there-yet/tracker-stream.js +36 -0
  109. package/dist/node_modules/are-we-there-yet/tracker.js +30 -0
  110. package/dist/node_modules/base64-js/LICENSE +21 -0
  111. package/dist/node_modules/base64-js/README.md +34 -0
  112. package/dist/node_modules/base64-js/base64js.min.js +1 -0
  113. package/dist/node_modules/base64-js/index.d.ts +3 -0
  114. package/dist/node_modules/base64-js/index.js +150 -0
  115. package/dist/node_modules/base64-js/package.json +75 -0
  116. package/dist/node_modules/bl/.travis.yml +17 -0
  117. package/dist/node_modules/bl/BufferList.js +396 -0
  118. package/dist/node_modules/bl/LICENSE.md +13 -0
  119. package/dist/node_modules/bl/README.md +247 -0
  120. package/dist/node_modules/bl/bl.js +84 -0
  121. package/dist/node_modules/bl/node_modules/readable-stream/CONTRIBUTING.md +38 -0
  122. package/dist/node_modules/bl/node_modules/readable-stream/GOVERNANCE.md +136 -0
  123. package/dist/node_modules/bl/node_modules/readable-stream/LICENSE +47 -0
  124. package/dist/node_modules/bl/node_modules/readable-stream/README.md +106 -0
  125. package/dist/node_modules/bl/node_modules/readable-stream/errors-browser.js +127 -0
  126. package/dist/node_modules/bl/node_modules/readable-stream/errors.js +116 -0
  127. package/dist/node_modules/bl/node_modules/readable-stream/experimentalWarning.js +17 -0
  128. package/dist/node_modules/bl/node_modules/readable-stream/lib/_stream_duplex.js +139 -0
  129. package/dist/node_modules/bl/node_modules/readable-stream/lib/_stream_passthrough.js +39 -0
  130. package/dist/node_modules/bl/node_modules/readable-stream/lib/_stream_readable.js +1124 -0
  131. package/dist/node_modules/bl/node_modules/readable-stream/lib/_stream_transform.js +201 -0
  132. package/dist/node_modules/bl/node_modules/readable-stream/lib/_stream_writable.js +697 -0
  133. package/dist/node_modules/bl/node_modules/readable-stream/lib/internal/streams/async_iterator.js +207 -0
  134. package/dist/node_modules/bl/node_modules/readable-stream/lib/internal/streams/buffer_list.js +210 -0
  135. package/dist/node_modules/bl/node_modules/readable-stream/lib/internal/streams/destroy.js +105 -0
  136. package/dist/node_modules/bl/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +104 -0
  137. package/dist/node_modules/bl/node_modules/readable-stream/lib/internal/streams/from-browser.js +3 -0
  138. package/dist/node_modules/bl/node_modules/readable-stream/lib/internal/streams/from.js +64 -0
  139. package/dist/node_modules/bl/node_modules/readable-stream/lib/internal/streams/pipeline.js +97 -0
  140. package/dist/node_modules/bl/node_modules/readable-stream/lib/internal/streams/state.js +27 -0
  141. package/dist/node_modules/bl/node_modules/readable-stream/lib/internal/streams/stream-browser.js +1 -0
  142. package/dist/node_modules/bl/node_modules/readable-stream/lib/internal/streams/stream.js +1 -0
  143. package/dist/node_modules/bl/node_modules/readable-stream/package.json +97 -0
  144. package/dist/node_modules/bl/node_modules/readable-stream/readable-browser.js +9 -0
  145. package/dist/node_modules/bl/node_modules/readable-stream/readable.js +16 -0
  146. package/dist/node_modules/bl/package.json +69 -0
  147. package/dist/node_modules/bl/test/convert.js +21 -0
  148. package/dist/node_modules/bl/test/indexOf.js +492 -0
  149. package/dist/node_modules/bl/test/isBufferList.js +32 -0
  150. package/dist/node_modules/bl/test/test.js +869 -0
  151. package/dist/node_modules/buffer/AUTHORS.md +70 -0
  152. package/dist/node_modules/buffer/LICENSE +21 -0
  153. package/dist/node_modules/buffer/README.md +410 -0
  154. package/dist/node_modules/buffer/index.d.ts +186 -0
  155. package/dist/node_modules/buffer/index.js +1817 -0
  156. package/dist/node_modules/buffer/package.json +127 -0
  157. package/dist/node_modules/chownr/LICENSE +15 -0
  158. package/dist/node_modules/chownr/README.md +3 -0
  159. package/dist/node_modules/chownr/chownr.js +167 -0
  160. package/dist/node_modules/chownr/package.json +62 -0
  161. package/dist/node_modules/code-point-at/index.js +32 -0
  162. package/dist/node_modules/code-point-at/license +21 -0
  163. package/dist/node_modules/code-point-at/package.json +70 -0
  164. package/dist/node_modules/code-point-at/readme.md +32 -0
  165. package/dist/node_modules/color/LICENSE +21 -0
  166. package/dist/node_modules/color/README.md +123 -0
  167. package/dist/node_modules/color/index.js +482 -0
  168. package/dist/node_modules/color/package.json +72 -0
  169. package/dist/node_modules/color-convert/CHANGELOG.md +54 -0
  170. package/dist/node_modules/color-convert/LICENSE +21 -0
  171. package/dist/node_modules/color-convert/README.md +68 -0
  172. package/dist/node_modules/color-convert/conversions.js +868 -0
  173. package/dist/node_modules/color-convert/index.js +78 -0
  174. package/dist/node_modules/color-convert/package.json +81 -0
  175. package/dist/node_modules/color-convert/route.js +97 -0
  176. package/dist/node_modules/color-name/.eslintrc.json +43 -0
  177. package/dist/node_modules/color-name/LICENSE +8 -0
  178. package/dist/node_modules/color-name/README.md +11 -0
  179. package/dist/node_modules/color-name/index.js +152 -0
  180. package/dist/node_modules/color-name/package.json +54 -0
  181. package/dist/node_modules/color-name/test.js +7 -0
  182. package/dist/node_modules/color-string/LICENSE +21 -0
  183. package/dist/node_modules/color-string/README.md +62 -0
  184. package/dist/node_modules/color-string/index.js +242 -0
  185. package/dist/node_modules/color-string/package.json +81 -0
  186. package/dist/node_modules/console-control-strings/LICENSE +13 -0
  187. package/dist/node_modules/console-control-strings/README.md +145 -0
  188. package/dist/node_modules/console-control-strings/README.md~ +140 -0
  189. package/dist/node_modules/console-control-strings/index.js +125 -0
  190. package/dist/node_modules/console-control-strings/package.json +61 -0
  191. package/dist/node_modules/core-util-is/LICENSE +19 -0
  192. package/dist/node_modules/core-util-is/README.md +3 -0
  193. package/dist/node_modules/core-util-is/lib/util.js +107 -0
  194. package/dist/node_modules/core-util-is/package.json +68 -0
  195. package/dist/node_modules/decompress-response/index.d.ts +29 -0
  196. package/dist/node_modules/decompress-response/index.js +40 -0
  197. package/dist/node_modules/decompress-response/license +9 -0
  198. package/dist/node_modules/decompress-response/package.json +82 -0
  199. package/dist/node_modules/decompress-response/readme.md +52 -0
  200. package/dist/node_modules/deep-extend/CHANGELOG.md +46 -0
  201. package/dist/node_modules/deep-extend/LICENSE +20 -0
  202. package/dist/node_modules/deep-extend/README.md +91 -0
  203. package/dist/node_modules/deep-extend/index.js +1 -0
  204. package/dist/node_modules/deep-extend/lib/deep-extend.js +150 -0
  205. package/dist/node_modules/deep-extend/package.json +92 -0
  206. package/dist/node_modules/delegates/History.md +22 -0
  207. package/dist/node_modules/delegates/License +20 -0
  208. package/dist/node_modules/delegates/Makefile +8 -0
  209. package/dist/node_modules/delegates/Readme.md +94 -0
  210. package/dist/node_modules/delegates/index.js +121 -0
  211. package/dist/node_modules/delegates/package.json +48 -0
  212. package/dist/node_modules/delegates/test/index.js +94 -0
  213. package/dist/node_modules/detect-libc/LICENSE +201 -0
  214. package/dist/node_modules/detect-libc/README.md +78 -0
  215. package/dist/node_modules/detect-libc/bin/detect-libc.js +18 -0
  216. package/dist/node_modules/detect-libc/lib/detect-libc.js +92 -0
  217. package/dist/node_modules/detect-libc/package.json +71 -0
  218. package/dist/node_modules/end-of-stream/LICENSE +21 -0
  219. package/dist/node_modules/end-of-stream/README.md +54 -0
  220. package/dist/node_modules/end-of-stream/index.js +94 -0
  221. package/dist/node_modules/end-of-stream/package.json +66 -0
  222. package/dist/node_modules/expand-template/.travis.yml +6 -0
  223. package/dist/node_modules/expand-template/LICENSE +21 -0
  224. package/dist/node_modules/expand-template/README.md +43 -0
  225. package/dist/node_modules/expand-template/index.js +26 -0
  226. package/dist/node_modules/expand-template/package.json +60 -0
  227. package/dist/node_modules/expand-template/test.js +67 -0
  228. package/dist/node_modules/fs-constants/LICENSE +21 -0
  229. package/dist/node_modules/fs-constants/README.md +26 -0
  230. package/dist/node_modules/fs-constants/browser.js +1 -0
  231. package/dist/node_modules/fs-constants/index.js +1 -0
  232. package/dist/node_modules/fs-constants/package.json +47 -0
  233. package/dist/node_modules/gauge/CHANGELOG.md +160 -0
  234. package/dist/node_modules/gauge/LICENSE +13 -0
  235. package/dist/node_modules/gauge/README.md +399 -0
  236. package/dist/node_modules/gauge/base-theme.js +14 -0
  237. package/dist/node_modules/gauge/error.js +24 -0
  238. package/dist/node_modules/gauge/has-color.js +12 -0
  239. package/dist/node_modules/gauge/index.js +233 -0
  240. package/dist/node_modules/gauge/package.json +91 -0
  241. package/dist/node_modules/gauge/plumbing.js +48 -0
  242. package/dist/node_modules/gauge/process.js +3 -0
  243. package/dist/node_modules/gauge/progress-bar.js +35 -0
  244. package/dist/node_modules/gauge/render-template.js +181 -0
  245. package/dist/node_modules/gauge/set-immediate.js +7 -0
  246. package/dist/node_modules/gauge/set-interval.js +3 -0
  247. package/dist/node_modules/gauge/spin.js +5 -0
  248. package/dist/node_modules/gauge/template-item.js +73 -0
  249. package/dist/node_modules/gauge/theme-set.js +115 -0
  250. package/dist/node_modules/gauge/themes.js +54 -0
  251. package/dist/node_modules/gauge/wide-truncate.js +25 -0
  252. package/dist/node_modules/github-from-package/.travis.yml +4 -0
  253. package/dist/node_modules/github-from-package/LICENSE +18 -0
  254. package/dist/node_modules/github-from-package/example/package.json +8 -0
  255. package/dist/node_modules/github-from-package/example/url.js +3 -0
  256. package/dist/node_modules/github-from-package/index.js +17 -0
  257. package/dist/node_modules/github-from-package/package.json +58 -0
  258. package/dist/node_modules/github-from-package/readme.markdown +53 -0
  259. package/dist/node_modules/github-from-package/test/a.json +8 -0
  260. package/dist/node_modules/github-from-package/test/b.json +5 -0
  261. package/dist/node_modules/github-from-package/test/c.json +5 -0
  262. package/dist/node_modules/github-from-package/test/d.json +7 -0
  263. package/dist/node_modules/github-from-package/test/e.json +5 -0
  264. package/dist/node_modules/github-from-package/test/url.js +19 -0
  265. package/dist/node_modules/has-unicode/LICENSE +14 -0
  266. package/dist/node_modules/has-unicode/README.md +43 -0
  267. package/dist/node_modules/has-unicode/index.js +16 -0
  268. package/dist/node_modules/has-unicode/package.json +58 -0
  269. package/dist/node_modules/ieee754/LICENSE +11 -0
  270. package/dist/node_modules/ieee754/README.md +51 -0
  271. package/dist/node_modules/ieee754/index.d.ts +10 -0
  272. package/dist/node_modules/ieee754/index.js +85 -0
  273. package/dist/node_modules/ieee754/package.json +84 -0
  274. package/dist/node_modules/inherits/LICENSE +16 -0
  275. package/dist/node_modules/inherits/README.md +42 -0
  276. package/dist/node_modules/inherits/inherits.js +9 -0
  277. package/dist/node_modules/inherits/inherits_browser.js +27 -0
  278. package/dist/node_modules/inherits/package.json +65 -0
  279. package/dist/node_modules/ini/LICENSE +15 -0
  280. package/dist/node_modules/ini/README.md +102 -0
  281. package/dist/node_modules/ini/ini.js +206 -0
  282. package/dist/node_modules/ini/package.json +66 -0
  283. package/dist/node_modules/is-arrayish/LICENSE +21 -0
  284. package/dist/node_modules/is-arrayish/README.md +16 -0
  285. package/dist/node_modules/is-arrayish/index.js +9 -0
  286. package/dist/node_modules/is-arrayish/package.json +77 -0
  287. package/dist/node_modules/is-arrayish/yarn-error.log +1443 -0
  288. package/dist/node_modules/is-fullwidth-code-point/index.js +46 -0
  289. package/dist/node_modules/is-fullwidth-code-point/license +21 -0
  290. package/dist/node_modules/is-fullwidth-code-point/package.json +77 -0
  291. package/dist/node_modules/is-fullwidth-code-point/readme.md +39 -0
  292. package/dist/node_modules/isarray/.travis.yml +4 -0
  293. package/dist/node_modules/isarray/Makefile +6 -0
  294. package/dist/node_modules/isarray/README.md +60 -0
  295. package/dist/node_modules/isarray/component.json +19 -0
  296. package/dist/node_modules/isarray/index.js +5 -0
  297. package/dist/node_modules/isarray/package.json +73 -0
  298. package/dist/node_modules/isarray/test.js +20 -0
  299. package/dist/node_modules/lru-cache/LICENSE +15 -0
  300. package/dist/node_modules/lru-cache/README.md +166 -0
  301. package/dist/node_modules/lru-cache/index.js +334 -0
  302. package/dist/node_modules/lru-cache/package.json +69 -0
  303. package/dist/node_modules/mimic-response/index.d.ts +17 -0
  304. package/dist/node_modules/mimic-response/index.js +38 -0
  305. package/dist/node_modules/mimic-response/license +9 -0
  306. package/dist/node_modules/mimic-response/package.json +74 -0
  307. package/dist/node_modules/mimic-response/readme.md +57 -0
  308. package/dist/node_modules/minimist/.travis.yml +8 -0
  309. package/dist/node_modules/minimist/LICENSE +18 -0
  310. package/dist/node_modules/minimist/example/parse.js +2 -0
  311. package/dist/node_modules/minimist/index.js +245 -0
  312. package/dist/node_modules/minimist/package.json +74 -0
  313. package/dist/node_modules/minimist/readme.markdown +95 -0
  314. package/dist/node_modules/minimist/test/all_bool.js +32 -0
  315. package/dist/node_modules/minimist/test/bool.js +178 -0
  316. package/dist/node_modules/minimist/test/dash.js +31 -0
  317. package/dist/node_modules/minimist/test/default_bool.js +35 -0
  318. package/dist/node_modules/minimist/test/dotted.js +22 -0
  319. package/dist/node_modules/minimist/test/kv_short.js +16 -0
  320. package/dist/node_modules/minimist/test/long.js +31 -0
  321. package/dist/node_modules/minimist/test/num.js +36 -0
  322. package/dist/node_modules/minimist/test/parse.js +197 -0
  323. package/dist/node_modules/minimist/test/parse_modified.js +9 -0
  324. package/dist/node_modules/minimist/test/proto.js +44 -0
  325. package/dist/node_modules/minimist/test/short.js +67 -0
  326. package/dist/node_modules/minimist/test/stop_early.js +15 -0
  327. package/dist/node_modules/minimist/test/unknown.js +102 -0
  328. package/dist/node_modules/minimist/test/whitespace.js +8 -0
  329. package/dist/node_modules/mkdirp-classic/LICENSE +21 -0
  330. package/dist/node_modules/mkdirp-classic/README.md +18 -0
  331. package/dist/node_modules/mkdirp-classic/index.js +98 -0
  332. package/dist/node_modules/mkdirp-classic/package.json +47 -0
  333. package/dist/node_modules/napi-build-utils/LICENSE +21 -0
  334. package/dist/node_modules/napi-build-utils/README.md +48 -0
  335. package/dist/node_modules/napi-build-utils/index.js +213 -0
  336. package/dist/node_modules/napi-build-utils/index.md +81 -0
  337. package/dist/node_modules/napi-build-utils/package.json +68 -0
  338. package/dist/node_modules/node-abi/.github/workflows/update-abi.yml +41 -0
  339. package/dist/node_modules/node-abi/.travis.yml +17 -0
  340. package/dist/node_modules/node-abi/CODE_OF_CONDUCT.md +73 -0
  341. package/dist/node_modules/node-abi/CONTRIBUTING.md +53 -0
  342. package/dist/node_modules/node-abi/LICENSE +21 -0
  343. package/dist/node_modules/node-abi/README.md +50 -0
  344. package/dist/node_modules/node-abi/abi_registry.json +144 -0
  345. package/dist/node_modules/node-abi/index.js +176 -0
  346. package/dist/node_modules/node-abi/node_modules/semver/CHANGELOG.md +39 -0
  347. package/dist/node_modules/node-abi/node_modules/semver/LICENSE +15 -0
  348. package/dist/node_modules/node-abi/node_modules/semver/README.md +412 -0
  349. package/dist/node_modules/node-abi/node_modules/semver/bin/semver +160 -0
  350. package/dist/node_modules/node-abi/node_modules/semver/package.json +60 -0
  351. package/dist/node_modules/node-abi/node_modules/semver/range.bnf +16 -0
  352. package/dist/node_modules/node-abi/node_modules/semver/semver.js +1483 -0
  353. package/dist/node_modules/node-abi/package.json +65 -0
  354. package/dist/node_modules/node-abi/scripts/update-abi-registry.js +119 -0
  355. package/dist/node_modules/node-abi/test/index.js +174 -0
  356. package/dist/node_modules/node-addon-api/CHANGELOG.md +722 -0
  357. package/dist/node_modules/node-addon-api/LICENSE.md +13 -0
  358. package/dist/node_modules/node-addon-api/README.md +293 -0
  359. package/dist/node_modules/node-addon-api/common.gypi +21 -0
  360. package/dist/node_modules/node-addon-api/except.gypi +16 -0
  361. package/dist/node_modules/node-addon-api/index.js +11 -0
  362. package/dist/node_modules/node-addon-api/napi-inl.deprecated.h +192 -0
  363. package/dist/node_modules/node-addon-api/napi-inl.h +5671 -0
  364. package/dist/node_modules/node-addon-api/napi.h +2727 -0
  365. package/dist/node_modules/node-addon-api/node_api.gyp +9 -0
  366. package/dist/node_modules/node-addon-api/noexcept.gypi +16 -0
  367. package/dist/node_modules/node-addon-api/nothing.c +0 -0
  368. package/dist/node_modules/node-addon-api/package-support.json +21 -0
  369. package/dist/node_modules/node-addon-api/package.json +393 -0
  370. package/dist/node_modules/node-addon-api/tools/README.md +73 -0
  371. package/dist/node_modules/node-addon-api/tools/check-napi.js +100 -0
  372. package/dist/node_modules/node-addon-api/tools/clang-format.js +67 -0
  373. package/dist/node_modules/node-addon-api/tools/conversion.js +309 -0
  374. package/dist/node_modules/npmlog/CHANGELOG.md +49 -0
  375. package/dist/node_modules/npmlog/LICENSE +15 -0
  376. package/dist/node_modules/npmlog/README.md +216 -0
  377. package/dist/node_modules/npmlog/log.js +309 -0
  378. package/dist/node_modules/npmlog/package.json +61 -0
  379. package/dist/node_modules/number-is-nan/index.js +4 -0
  380. package/dist/node_modules/number-is-nan/license +21 -0
  381. package/dist/node_modules/number-is-nan/package.json +67 -0
  382. package/dist/node_modules/number-is-nan/readme.md +28 -0
  383. package/dist/node_modules/object-assign/index.js +90 -0
  384. package/dist/node_modules/object-assign/license +21 -0
  385. package/dist/node_modules/object-assign/package.json +74 -0
  386. package/dist/node_modules/object-assign/readme.md +61 -0
  387. package/dist/node_modules/once/LICENSE +15 -0
  388. package/dist/node_modules/once/README.md +79 -0
  389. package/dist/node_modules/once/once.js +42 -0
  390. package/dist/node_modules/once/package.json +68 -0
  391. package/dist/node_modules/prebuild-install/CHANGELOG.md +81 -0
  392. package/dist/node_modules/prebuild-install/CONTRIBUTING.md +6 -0
  393. package/dist/node_modules/prebuild-install/LICENSE +21 -0
  394. package/dist/node_modules/prebuild-install/README.md +139 -0
  395. package/dist/node_modules/prebuild-install/asset.js +44 -0
  396. package/dist/node_modules/prebuild-install/bin.js +78 -0
  397. package/dist/node_modules/prebuild-install/download.js +142 -0
  398. package/dist/node_modules/prebuild-install/error.js +14 -0
  399. package/dist/node_modules/prebuild-install/help.txt +16 -0
  400. package/dist/node_modules/prebuild-install/index.js +1 -0
  401. package/dist/node_modules/prebuild-install/log.js +25 -0
  402. package/dist/node_modules/prebuild-install/package.json +127 -0
  403. package/dist/node_modules/prebuild-install/proxy.js +35 -0
  404. package/dist/node_modules/prebuild-install/rc.js +60 -0
  405. package/dist/node_modules/prebuild-install/util.js +143 -0
  406. package/dist/node_modules/process-nextick-args/index.js +45 -0
  407. package/dist/node_modules/process-nextick-args/license.md +19 -0
  408. package/dist/node_modules/process-nextick-args/package.json +50 -0
  409. package/dist/node_modules/process-nextick-args/readme.md +18 -0
  410. package/dist/node_modules/pump/.travis.yml +5 -0
  411. package/dist/node_modules/pump/LICENSE +21 -0
  412. package/dist/node_modules/pump/README.md +65 -0
  413. package/dist/node_modules/pump/index.js +82 -0
  414. package/dist/node_modules/pump/package.json +60 -0
  415. package/dist/node_modules/pump/test-browser.js +66 -0
  416. package/dist/node_modules/pump/test-node.js +53 -0
  417. package/dist/node_modules/rc/LICENSE.APACHE2 +15 -0
  418. package/dist/node_modules/rc/LICENSE.BSD +26 -0
  419. package/dist/node_modules/rc/LICENSE.MIT +24 -0
  420. package/dist/node_modules/rc/README.md +227 -0
  421. package/dist/node_modules/rc/browser.js +7 -0
  422. package/dist/node_modules/rc/cli.js +4 -0
  423. package/dist/node_modules/rc/index.js +53 -0
  424. package/dist/node_modules/rc/lib/utils.js +104 -0
  425. package/dist/node_modules/rc/package.json +64 -0
  426. package/dist/node_modules/rc/test/ini.js +16 -0
  427. package/dist/node_modules/rc/test/nested-env-vars.js +50 -0
  428. package/dist/node_modules/rc/test/test.js +59 -0
  429. package/dist/node_modules/readable-stream/.travis.yml +34 -0
  430. package/dist/node_modules/readable-stream/CONTRIBUTING.md +38 -0
  431. package/dist/node_modules/readable-stream/GOVERNANCE.md +136 -0
  432. package/dist/node_modules/readable-stream/LICENSE +47 -0
  433. package/dist/node_modules/readable-stream/README.md +58 -0
  434. package/dist/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +60 -0
  435. package/dist/node_modules/readable-stream/duplex-browser.js +1 -0
  436. package/dist/node_modules/readable-stream/duplex.js +1 -0
  437. package/dist/node_modules/readable-stream/lib/_stream_duplex.js +131 -0
  438. package/dist/node_modules/readable-stream/lib/_stream_passthrough.js +47 -0
  439. package/dist/node_modules/readable-stream/lib/_stream_readable.js +1019 -0
  440. package/dist/node_modules/readable-stream/lib/_stream_transform.js +214 -0
  441. package/dist/node_modules/readable-stream/lib/_stream_writable.js +687 -0
  442. package/dist/node_modules/readable-stream/lib/internal/streams/BufferList.js +79 -0
  443. package/dist/node_modules/readable-stream/lib/internal/streams/destroy.js +74 -0
  444. package/dist/node_modules/readable-stream/lib/internal/streams/stream-browser.js +1 -0
  445. package/dist/node_modules/readable-stream/lib/internal/streams/stream.js +1 -0
  446. package/dist/node_modules/readable-stream/package.json +81 -0
  447. package/dist/node_modules/readable-stream/passthrough.js +1 -0
  448. package/dist/node_modules/readable-stream/readable-browser.js +7 -0
  449. package/dist/node_modules/readable-stream/readable.js +19 -0
  450. package/dist/node_modules/readable-stream/transform.js +1 -0
  451. package/dist/node_modules/readable-stream/writable-browser.js +1 -0
  452. package/dist/node_modules/readable-stream/writable.js +8 -0
  453. package/dist/node_modules/safe-buffer/LICENSE +21 -0
  454. package/dist/node_modules/safe-buffer/README.md +584 -0
  455. package/dist/node_modules/safe-buffer/index.d.ts +187 -0
  456. package/dist/node_modules/safe-buffer/index.js +62 -0
  457. package/dist/node_modules/safe-buffer/package.json +64 -0
  458. package/dist/node_modules/semver/CHANGELOG.md +111 -0
  459. package/dist/node_modules/semver/LICENSE +15 -0
  460. package/dist/node_modules/semver/README.md +566 -0
  461. package/dist/node_modules/semver/bin/semver.js +173 -0
  462. package/dist/node_modules/semver/classes/comparator.js +135 -0
  463. package/dist/node_modules/semver/classes/index.js +5 -0
  464. package/dist/node_modules/semver/classes/range.js +510 -0
  465. package/dist/node_modules/semver/classes/semver.js +287 -0
  466. package/dist/node_modules/semver/functions/clean.js +6 -0
  467. package/dist/node_modules/semver/functions/cmp.js +48 -0
  468. package/dist/node_modules/semver/functions/coerce.js +51 -0
  469. package/dist/node_modules/semver/functions/compare-build.js +7 -0
  470. package/dist/node_modules/semver/functions/compare-loose.js +3 -0
  471. package/dist/node_modules/semver/functions/compare.js +5 -0
  472. package/dist/node_modules/semver/functions/diff.js +23 -0
  473. package/dist/node_modules/semver/functions/eq.js +3 -0
  474. package/dist/node_modules/semver/functions/gt.js +3 -0
  475. package/dist/node_modules/semver/functions/gte.js +3 -0
  476. package/dist/node_modules/semver/functions/inc.js +15 -0
  477. package/dist/node_modules/semver/functions/lt.js +3 -0
  478. package/dist/node_modules/semver/functions/lte.js +3 -0
  479. package/dist/node_modules/semver/functions/major.js +3 -0
  480. package/dist/node_modules/semver/functions/minor.js +3 -0
  481. package/dist/node_modules/semver/functions/neq.js +3 -0
  482. package/dist/node_modules/semver/functions/parse.js +33 -0
  483. package/dist/node_modules/semver/functions/patch.js +3 -0
  484. package/dist/node_modules/semver/functions/prerelease.js +6 -0
  485. package/dist/node_modules/semver/functions/rcompare.js +3 -0
  486. package/dist/node_modules/semver/functions/rsort.js +3 -0
  487. package/dist/node_modules/semver/functions/satisfies.js +10 -0
  488. package/dist/node_modules/semver/functions/sort.js +3 -0
  489. package/dist/node_modules/semver/functions/valid.js +6 -0
  490. package/dist/node_modules/semver/index.js +48 -0
  491. package/dist/node_modules/semver/internal/constants.js +17 -0
  492. package/dist/node_modules/semver/internal/debug.js +9 -0
  493. package/dist/node_modules/semver/internal/identifiers.js +23 -0
  494. package/dist/node_modules/semver/internal/parse-options.js +11 -0
  495. package/dist/node_modules/semver/internal/re.js +182 -0
  496. package/dist/node_modules/semver/package.json +73 -0
  497. package/dist/node_modules/semver/preload.js +2 -0
  498. package/dist/node_modules/semver/range.bnf +16 -0
  499. package/dist/node_modules/semver/ranges/gtr.js +4 -0
  500. package/dist/node_modules/semver/ranges/intersects.js +7 -0
  501. package/dist/node_modules/semver/ranges/ltr.js +4 -0
  502. package/dist/node_modules/semver/ranges/max-satisfying.js +25 -0
  503. package/dist/node_modules/semver/ranges/min-satisfying.js +24 -0
  504. package/dist/node_modules/semver/ranges/min-version.js +60 -0
  505. package/dist/node_modules/semver/ranges/outside.js +80 -0
  506. package/dist/node_modules/semver/ranges/simplify.js +44 -0
  507. package/dist/node_modules/semver/ranges/subset.js +222 -0
  508. package/dist/node_modules/semver/ranges/to-comparators.js +8 -0
  509. package/dist/node_modules/semver/ranges/valid.js +11 -0
  510. package/dist/node_modules/set-blocking/CHANGELOG.md +26 -0
  511. package/dist/node_modules/set-blocking/LICENSE.txt +14 -0
  512. package/dist/node_modules/set-blocking/README.md +31 -0
  513. package/dist/node_modules/set-blocking/index.js +7 -0
  514. package/dist/node_modules/set-blocking/package.json +70 -0
  515. package/dist/node_modules/sharp/LICENSE +191 -0
  516. package/dist/node_modules/sharp/README.md +117 -0
  517. package/dist/node_modules/sharp/binding.gyp +230 -0
  518. package/dist/node_modules/sharp/build/Release/sharp.node +0 -0
  519. package/dist/node_modules/sharp/install/can-compile.js +11 -0
  520. package/dist/node_modules/sharp/install/dll-copy.js +37 -0
  521. package/dist/node_modules/sharp/install/libvips.js +180 -0
  522. package/dist/node_modules/sharp/lib/agent.js +40 -0
  523. package/dist/node_modules/sharp/lib/channel.js +167 -0
  524. package/dist/node_modules/sharp/lib/colour.js +130 -0
  525. package/dist/node_modules/sharp/lib/composite.js +178 -0
  526. package/dist/node_modules/sharp/lib/constructor.js +392 -0
  527. package/dist/node_modules/sharp/lib/index.js +13 -0
  528. package/dist/node_modules/sharp/lib/input.js +429 -0
  529. package/dist/node_modules/sharp/lib/is.js +129 -0
  530. package/dist/node_modules/sharp/lib/libvips.js +123 -0
  531. package/dist/node_modules/sharp/lib/operation.js +648 -0
  532. package/dist/node_modules/sharp/lib/output.js +1035 -0
  533. package/dist/node_modules/sharp/lib/platform.js +25 -0
  534. package/dist/node_modules/sharp/lib/resize.js +454 -0
  535. package/dist/node_modules/sharp/lib/utility.js +179 -0
  536. package/dist/node_modules/sharp/package.json +427 -0
  537. package/dist/node_modules/sharp/src/common.cc +827 -0
  538. package/dist/node_modules/sharp/src/common.h +308 -0
  539. package/dist/node_modules/sharp/src/libvips/cplusplus/VConnection.cpp +178 -0
  540. package/dist/node_modules/sharp/src/libvips/cplusplus/VError.cpp +50 -0
  541. package/dist/node_modules/sharp/src/libvips/cplusplus/VImage.cpp +1467 -0
  542. package/dist/node_modules/sharp/src/libvips/cplusplus/VInterpolate.cpp +76 -0
  543. package/dist/node_modules/sharp/src/libvips/cplusplus/vips-operators.cpp +3526 -0
  544. package/dist/node_modules/sharp/src/metadata.cc +271 -0
  545. package/dist/node_modules/sharp/src/metadata.h +90 -0
  546. package/dist/node_modules/sharp/src/operations.cc +285 -0
  547. package/dist/node_modules/sharp/src/operations.h +102 -0
  548. package/dist/node_modules/sharp/src/pipeline.cc +1516 -0
  549. package/dist/node_modules/sharp/src/pipeline.h +325 -0
  550. package/dist/node_modules/sharp/src/sharp.cc +52 -0
  551. package/dist/node_modules/sharp/src/stats.cc +193 -0
  552. package/dist/node_modules/sharp/src/stats.h +70 -0
  553. package/dist/node_modules/sharp/src/utilities.cc +243 -0
  554. package/dist/node_modules/sharp/src/utilities.h +29 -0
  555. package/dist/node_modules/sharp/vendor/8.10.6/THIRD-PARTY-NOTICES.md +42 -0
  556. package/dist/node_modules/sharp/vendor/8.10.6/lib/libvips-cpp.so.42 +0 -0
  557. package/dist/node_modules/sharp/vendor/8.10.6/platform.json +1 -0
  558. package/dist/node_modules/sharp/vendor/8.10.6/versions.json +31 -0
  559. package/dist/node_modules/signal-exit/LICENSE.txt +16 -0
  560. package/dist/node_modules/signal-exit/README.md +39 -0
  561. package/dist/node_modules/signal-exit/index.js +200 -0
  562. package/dist/node_modules/signal-exit/package.json +66 -0
  563. package/dist/node_modules/signal-exit/signals.js +53 -0
  564. package/dist/node_modules/simple-concat/.travis.yml +3 -0
  565. package/dist/node_modules/simple-concat/LICENSE +20 -0
  566. package/dist/node_modules/simple-concat/README.md +44 -0
  567. package/dist/node_modules/simple-concat/index.js +15 -0
  568. package/dist/node_modules/simple-concat/package.json +72 -0
  569. package/dist/node_modules/simple-concat/test/basic.js +41 -0
  570. package/dist/node_modules/simple-get/LICENSE +20 -0
  571. package/dist/node_modules/simple-get/README.md +319 -0
  572. package/dist/node_modules/simple-get/index.js +99 -0
  573. package/dist/node_modules/simple-get/package.json +79 -0
  574. package/dist/node_modules/simple-swizzle/LICENSE +21 -0
  575. package/dist/node_modules/simple-swizzle/README.md +39 -0
  576. package/dist/node_modules/simple-swizzle/index.js +29 -0
  577. package/dist/node_modules/simple-swizzle/package.json +71 -0
  578. package/dist/node_modules/string-width/index.js +37 -0
  579. package/dist/node_modules/string-width/license +21 -0
  580. package/dist/node_modules/string-width/package.json +89 -0
  581. package/dist/node_modules/string-width/readme.md +42 -0
  582. package/dist/node_modules/string_decoder/.travis.yml +50 -0
  583. package/dist/node_modules/string_decoder/LICENSE +48 -0
  584. package/dist/node_modules/string_decoder/README.md +47 -0
  585. package/dist/node_modules/string_decoder/lib/string_decoder.js +296 -0
  586. package/dist/node_modules/string_decoder/package.json +61 -0
  587. package/dist/node_modules/strip-ansi/index.js +6 -0
  588. package/dist/node_modules/strip-ansi/license +21 -0
  589. package/dist/node_modules/strip-ansi/package.json +102 -0
  590. package/dist/node_modules/strip-ansi/readme.md +33 -0
  591. package/dist/node_modules/strip-json-comments/index.js +70 -0
  592. package/dist/node_modules/strip-json-comments/license +21 -0
  593. package/dist/node_modules/strip-json-comments/package.json +74 -0
  594. package/dist/node_modules/strip-json-comments/readme.md +64 -0
  595. package/dist/node_modules/tar-fs/.travis.yml +6 -0
  596. package/dist/node_modules/tar-fs/LICENSE +21 -0
  597. package/dist/node_modules/tar-fs/README.md +165 -0
  598. package/dist/node_modules/tar-fs/index.js +351 -0
  599. package/dist/node_modules/tar-fs/package.json +69 -0
  600. package/dist/node_modules/tar-fs/test/fixtures/a/hello.txt +1 -0
  601. package/dist/node_modules/tar-fs/test/fixtures/b/a/test.txt +1 -0
  602. package/dist/node_modules/tar-fs/test/fixtures/d/file1 +0 -0
  603. package/dist/node_modules/tar-fs/test/fixtures/d/file2 +0 -0
  604. package/dist/node_modules/tar-fs/test/fixtures/d/sub-dir/file5 +0 -0
  605. package/dist/node_modules/tar-fs/test/fixtures/d/sub-files/file3 +0 -0
  606. package/dist/node_modules/tar-fs/test/fixtures/d/sub-files/file4 +0 -0
  607. package/dist/node_modules/tar-fs/test/fixtures/e/directory/.ignore +0 -0
  608. package/dist/node_modules/tar-fs/test/fixtures/e/file +0 -0
  609. package/dist/node_modules/tar-fs/test/fixtures/invalid.tar +0 -0
  610. package/dist/node_modules/tar-fs/test/index.js +346 -0
  611. package/dist/node_modules/tar-stream/LICENSE +21 -0
  612. package/dist/node_modules/tar-stream/README.md +168 -0
  613. package/dist/node_modules/tar-stream/extract.js +257 -0
  614. package/dist/node_modules/tar-stream/headers.js +295 -0
  615. package/dist/node_modules/tar-stream/index.js +2 -0
  616. package/dist/node_modules/tar-stream/node_modules/readable-stream/CONTRIBUTING.md +38 -0
  617. package/dist/node_modules/tar-stream/node_modules/readable-stream/GOVERNANCE.md +136 -0
  618. package/dist/node_modules/tar-stream/node_modules/readable-stream/LICENSE +47 -0
  619. package/dist/node_modules/tar-stream/node_modules/readable-stream/README.md +106 -0
  620. package/dist/node_modules/tar-stream/node_modules/readable-stream/errors-browser.js +127 -0
  621. package/dist/node_modules/tar-stream/node_modules/readable-stream/errors.js +116 -0
  622. package/dist/node_modules/tar-stream/node_modules/readable-stream/experimentalWarning.js +17 -0
  623. package/dist/node_modules/tar-stream/node_modules/readable-stream/lib/_stream_duplex.js +139 -0
  624. package/dist/node_modules/tar-stream/node_modules/readable-stream/lib/_stream_passthrough.js +39 -0
  625. package/dist/node_modules/tar-stream/node_modules/readable-stream/lib/_stream_readable.js +1124 -0
  626. package/dist/node_modules/tar-stream/node_modules/readable-stream/lib/_stream_transform.js +201 -0
  627. package/dist/node_modules/tar-stream/node_modules/readable-stream/lib/_stream_writable.js +697 -0
  628. package/dist/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/async_iterator.js +207 -0
  629. package/dist/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/buffer_list.js +210 -0
  630. package/dist/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/destroy.js +105 -0
  631. package/dist/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +104 -0
  632. package/dist/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/from-browser.js +3 -0
  633. package/dist/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/from.js +64 -0
  634. package/dist/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/pipeline.js +97 -0
  635. package/dist/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/state.js +27 -0
  636. package/dist/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/stream-browser.js +1 -0
  637. package/dist/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/stream.js +1 -0
  638. package/dist/node_modules/tar-stream/node_modules/readable-stream/package.json +97 -0
  639. package/dist/node_modules/tar-stream/node_modules/readable-stream/readable-browser.js +9 -0
  640. package/dist/node_modules/tar-stream/node_modules/readable-stream/readable.js +16 -0
  641. package/dist/node_modules/tar-stream/pack.js +255 -0
  642. package/dist/node_modules/tar-stream/package.json +90 -0
  643. package/dist/node_modules/tar-stream/sandbox.js +11 -0
  644. package/dist/node_modules/tunnel-agent/LICENSE +55 -0
  645. package/dist/node_modules/tunnel-agent/README.md +4 -0
  646. package/dist/node_modules/tunnel-agent/index.js +244 -0
  647. package/dist/node_modules/tunnel-agent/package.json +56 -0
  648. package/dist/node_modules/util-deprecate/History.md +16 -0
  649. package/dist/node_modules/util-deprecate/LICENSE +24 -0
  650. package/dist/node_modules/util-deprecate/README.md +53 -0
  651. package/dist/node_modules/util-deprecate/browser.js +67 -0
  652. package/dist/node_modules/util-deprecate/node.js +6 -0
  653. package/dist/node_modules/util-deprecate/package.json +58 -0
  654. package/dist/node_modules/wide-align/LICENSE +14 -0
  655. package/dist/node_modules/wide-align/README.md +47 -0
  656. package/dist/node_modules/wide-align/align.js +65 -0
  657. package/dist/node_modules/wide-align/package.json +66 -0
  658. package/dist/node_modules/wrappy/LICENSE +15 -0
  659. package/dist/node_modules/wrappy/README.md +36 -0
  660. package/dist/node_modules/wrappy/package.json +58 -0
  661. package/dist/node_modules/wrappy/wrappy.js +33 -0
  662. package/dist/node_modules/yallist/LICENSE +15 -0
  663. package/dist/node_modules/yallist/README.md +204 -0
  664. package/dist/node_modules/yallist/iterator.js +8 -0
  665. package/dist/node_modules/yallist/package.json +62 -0
  666. package/dist/node_modules/yallist/yallist.js +426 -0
  667. package/dist/package-lock.json +507 -0
  668. package/dist/package.json +62 -0
  669. package/dist/static/expected_tile_2193_153_255_z7.png +0 -0
  670. package/dist/static/expected_tile_NZTM2000Quad_30_33_z6.png +0 -0
  671. package/dist/static/expected_tile_WebMercatorQuad_252_156_z8.png +0 -0
  672. package/package.json +64 -0
  673. package/src/__test__/index.test.ts +57 -0
  674. package/src/__test__/tiff.cache.test.ts +73 -0
  675. package/src/__test__/tile.cache.key.test.ts +56 -0
  676. package/src/__test__/tile.set.cache.test.ts +143 -0
  677. package/src/__test__/tile.set.test.ts +19 -0
  678. package/src/__test__/wmts.capability.test.ts +265 -0
  679. package/src/__test__/xyz.test.ts +333 -0
  680. package/src/__test__/xyz.util.ts +58 -0
  681. package/src/api.key.ts +23 -0
  682. package/src/cli/dump.ts +62 -0
  683. package/src/cli/serve.ts +148 -0
  684. package/src/cli/tile.set.local.ts +51 -0
  685. package/src/cli/validate.ts +49 -0
  686. package/src/index.ts +31 -0
  687. package/src/router.ts +56 -0
  688. package/src/routes/__test__/attribution.test.ts +441 -0
  689. package/src/routes/__test__/health.test.ts +89 -0
  690. package/src/routes/api.ts +19 -0
  691. package/src/routes/attribution.ts +245 -0
  692. package/src/routes/health.ts +84 -0
  693. package/src/routes/tile.etag.ts +36 -0
  694. package/src/routes/tile.ts +198 -0
  695. package/src/tiff.cache.ts +51 -0
  696. package/src/tile.set.cache.ts +107 -0
  697. package/src/tile.set.raster.ts +209 -0
  698. package/src/tile.set.ts +44 -0
  699. package/src/tile.set.vector.ts +50 -0
  700. package/src/validate.ts +32 -0
  701. package/src/wmts.capability.ts +203 -0
  702. package/static/expected_tile_2193_153_255_z7.png +0 -0
  703. package/static/expected_tile_NZTM2000Quad_30_33_z6.png +0 -0
  704. package/static/expected_tile_WebMercatorQuad_252_156_z8.png +0 -0
  705. package/test-dump.js +6 -0
  706. package/test-imagery.js +3 -0
  707. package/tsconfig.json +15 -0
  708. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,1035 @@
1
+ 'use strict';
2
+
3
+ const is = require('./is');
4
+ const sharp = require('../build/Release/sharp.node');
5
+
6
+ const formats = new Map([
7
+ ['heic', 'heif'],
8
+ ['heif', 'heif'],
9
+ ['avif', 'avif'],
10
+ ['jpeg', 'jpeg'],
11
+ ['jpg', 'jpeg'],
12
+ ['png', 'png'],
13
+ ['raw', 'raw'],
14
+ ['tiff', 'tiff'],
15
+ ['webp', 'webp'],
16
+ ['gif', 'gif']
17
+ ]);
18
+
19
+ const errMagickSave = new Error('GIF output requires libvips with support for ImageMagick');
20
+
21
+ /**
22
+ * Write output image data to a file.
23
+ *
24
+ * If an explicit output format is not selected, it will be inferred from the extension,
25
+ * with JPEG, PNG, WebP, AVIF, TIFF, DZI, and libvips' V format supported.
26
+ * Note that raw pixel data is only supported for buffer output.
27
+ *
28
+ * By default all metadata will be removed, which includes EXIF-based orientation.
29
+ * See {@link withMetadata} for control over this.
30
+ *
31
+ * A `Promise` is returned when `callback` is not provided.
32
+ *
33
+ * @example
34
+ * sharp(input)
35
+ * .toFile('output.png', (err, info) => { ... });
36
+ *
37
+ * @example
38
+ * sharp(input)
39
+ * .toFile('output.png')
40
+ * .then(info => { ... })
41
+ * .catch(err => { ... });
42
+ *
43
+ * @param {string} fileOut - the path to write the image data to.
44
+ * @param {Function} [callback] - called on completion with two arguments `(err, info)`.
45
+ * `info` contains the output image `format`, `size` (bytes), `width`, `height`,
46
+ * `channels` and `premultiplied` (indicating if premultiplication was used).
47
+ * When using a crop strategy also contains `cropOffsetLeft` and `cropOffsetTop`.
48
+ * @returns {Promise<Object>} - when no callback is provided
49
+ * @throws {Error} Invalid parameters
50
+ */
51
+ function toFile (fileOut, callback) {
52
+ let err;
53
+ if (!is.string(fileOut)) {
54
+ err = new Error('Missing output file path');
55
+ } else if (this.options.input.file === fileOut) {
56
+ err = new Error('Cannot use same file for input and output');
57
+ } else if (this.options.formatOut === 'input' && fileOut.toLowerCase().endsWith('.gif') && !this.constructor.format.magick.output.file) {
58
+ err = errMagickSave;
59
+ }
60
+ if (err) {
61
+ if (is.fn(callback)) {
62
+ callback(err);
63
+ } else {
64
+ return Promise.reject(err);
65
+ }
66
+ } else {
67
+ this.options.fileOut = fileOut;
68
+ return this._pipeline(callback);
69
+ }
70
+ return this;
71
+ }
72
+
73
+ /**
74
+ * Write output to a Buffer.
75
+ * JPEG, PNG, WebP, AVIF, TIFF and raw pixel data output are supported.
76
+ *
77
+ * If no explicit format is set, the output format will match the input image, except GIF and SVG input which become PNG output.
78
+ *
79
+ * By default all metadata will be removed, which includes EXIF-based orientation.
80
+ * See {@link withMetadata} for control over this.
81
+ *
82
+ * `callback`, if present, gets three arguments `(err, data, info)` where:
83
+ * - `err` is an error, if any.
84
+ * - `data` is the output image data.
85
+ * - `info` contains the output image `format`, `size` (bytes), `width`, `height`,
86
+ * `channels` and `premultiplied` (indicating if premultiplication was used).
87
+ * When using a crop strategy also contains `cropOffsetLeft` and `cropOffsetTop`.
88
+ *
89
+ * A `Promise` is returned when `callback` is not provided.
90
+ *
91
+ * @example
92
+ * sharp(input)
93
+ * .toBuffer((err, data, info) => { ... });
94
+ *
95
+ * @example
96
+ * sharp(input)
97
+ * .toBuffer()
98
+ * .then(data => { ... })
99
+ * .catch(err => { ... });
100
+ *
101
+ * @example
102
+ * sharp(input)
103
+ * .toBuffer({ resolveWithObject: true })
104
+ * .then(({ data, info }) => { ... })
105
+ * .catch(err => { ... });
106
+ *
107
+ * @example
108
+ * const { data, info } = await sharp('my-image.jpg')
109
+ * // output the raw pixels
110
+ * .raw()
111
+ * .toBuffer({ resolveWithObject: true });
112
+ *
113
+ * // create a more type safe way to work with the raw pixel data
114
+ * // this will not copy the data, instead it will change `data`s underlying ArrayBuffer
115
+ * // so `data` and `pixelArray` point to the same memory location
116
+ * const pixelArray = new Uint8ClampedArray(data.buffer);
117
+ *
118
+ * // When you are done changing the pixelArray, sharp takes the `pixelArray` as an input
119
+ * const { width, height, channels } = info;
120
+ * await sharp(pixelArray, { raw: { width, height, channels } })
121
+ * .toFile('my-changed-image.jpg');
122
+ *
123
+ * @param {Object} [options]
124
+ * @param {boolean} [options.resolveWithObject] Resolve the Promise with an Object containing `data` and `info` properties instead of resolving only with `data`.
125
+ * @param {Function} [callback]
126
+ * @returns {Promise<Buffer>} - when no callback is provided
127
+ */
128
+ function toBuffer (options, callback) {
129
+ if (is.object(options)) {
130
+ this._setBooleanOption('resolveWithObject', options.resolveWithObject);
131
+ } else if (this.options.resolveWithObject) {
132
+ this.options.resolveWithObject = false;
133
+ }
134
+ return this._pipeline(is.fn(options) ? options : callback);
135
+ }
136
+
137
+ /**
138
+ * Include all metadata (EXIF, XMP, IPTC) from the input image in the output image.
139
+ * This will also convert to and add a web-friendly sRGB ICC profile unless a custom
140
+ * output profile is provided.
141
+ *
142
+ * The default behaviour, when `withMetadata` is not used, is to convert to the device-independent
143
+ * sRGB colour space and strip all metadata, including the removal of any ICC profile.
144
+ *
145
+ * @example
146
+ * sharp('input.jpg')
147
+ * .withMetadata()
148
+ * .toFile('output-with-metadata.jpg')
149
+ * .then(info => { ... });
150
+ *
151
+ * @example
152
+ * // Set "IFD0-Copyright" in output EXIF metadata
153
+ * const data = await sharp(input)
154
+ * .withMetadata({
155
+ * exif: {
156
+ * IFD0: {
157
+ * Copyright: 'Wernham Hogg'
158
+ * }
159
+ * }
160
+ * })
161
+ * .toBuffer();
162
+ *
163
+ * * @example
164
+ * // Set output metadata to 96 DPI
165
+ * const data = await sharp(input)
166
+ * .withMetadata({ density: 96 })
167
+ * .toBuffer();
168
+ *
169
+ * @param {Object} [options]
170
+ * @param {number} [options.orientation] value between 1 and 8, used to update the EXIF `Orientation` tag.
171
+ * @param {string} [options.icc] filesystem path to output ICC profile, defaults to sRGB.
172
+ * @param {Object<Object>} [options.exif={}] Object keyed by IFD0, IFD1 etc. of key/value string pairs to write as EXIF data.
173
+ * @param {number} [options.density] Number of pixels per inch (DPI).
174
+ * @returns {Sharp}
175
+ * @throws {Error} Invalid parameters
176
+ */
177
+ function withMetadata (options) {
178
+ this.options.withMetadata = is.bool(options) ? options : true;
179
+ if (is.object(options)) {
180
+ if (is.defined(options.orientation)) {
181
+ if (is.integer(options.orientation) && is.inRange(options.orientation, 1, 8)) {
182
+ this.options.withMetadataOrientation = options.orientation;
183
+ } else {
184
+ throw is.invalidParameterError('orientation', 'integer between 1 and 8', options.orientation);
185
+ }
186
+ }
187
+ if (is.defined(options.density)) {
188
+ if (is.number(options.density) && options.density > 0) {
189
+ this.options.withMetadataDensity = options.density;
190
+ } else {
191
+ throw is.invalidParameterError('density', 'positive number', options.density);
192
+ }
193
+ }
194
+ if (is.defined(options.icc)) {
195
+ if (is.string(options.icc)) {
196
+ this.options.withMetadataIcc = options.icc;
197
+ } else {
198
+ throw is.invalidParameterError('icc', 'string filesystem path to ICC profile', options.icc);
199
+ }
200
+ }
201
+ if (is.defined(options.exif)) {
202
+ if (is.object(options.exif)) {
203
+ for (const [ifd, entries] of Object.entries(options.exif)) {
204
+ if (is.object(entries)) {
205
+ for (const [k, v] of Object.entries(entries)) {
206
+ if (is.string(v)) {
207
+ this.options.withMetadataStrs[`exif-${ifd.toLowerCase()}-${k}`] = v;
208
+ } else {
209
+ throw is.invalidParameterError(`exif.${ifd}.${k}`, 'string', v);
210
+ }
211
+ }
212
+ } else {
213
+ throw is.invalidParameterError(`exif.${ifd}`, 'object', entries);
214
+ }
215
+ }
216
+ } else {
217
+ throw is.invalidParameterError('exif', 'object', options.exif);
218
+ }
219
+ }
220
+ }
221
+ return this;
222
+ }
223
+
224
+ /**
225
+ * Force output to a given format.
226
+ *
227
+ * @example
228
+ * // Convert any input to PNG output
229
+ * const data = await sharp(input)
230
+ * .toFormat('png')
231
+ * .toBuffer();
232
+ *
233
+ * @param {(string|Object)} format - as a string or an Object with an 'id' attribute
234
+ * @param {Object} options - output options
235
+ * @returns {Sharp}
236
+ * @throws {Error} unsupported format or options
237
+ */
238
+ function toFormat (format, options) {
239
+ const actualFormat = formats.get((is.object(format) && is.string(format.id) ? format.id : format).toLowerCase());
240
+ if (!actualFormat) {
241
+ throw is.invalidParameterError('format', `one of: ${[...formats.keys()].join(', ')}`, format);
242
+ }
243
+ return this[actualFormat](options);
244
+ }
245
+
246
+ /**
247
+ * Use these JPEG options for output image.
248
+ *
249
+ * @example
250
+ * // Convert any input to very high quality JPEG output
251
+ * const data = await sharp(input)
252
+ * .jpeg({
253
+ * quality: 100,
254
+ * chromaSubsampling: '4:4:4'
255
+ * })
256
+ * .toBuffer();
257
+ *
258
+ * @example
259
+ * // Use mozjpeg to reduce output JPEG file size (slower)
260
+ * const data = await sharp(input)
261
+ * .jpeg({ mozjpeg: true })
262
+ * .toBuffer();
263
+ *
264
+ * @param {Object} [options] - output options
265
+ * @param {number} [options.quality=80] - quality, integer 1-100
266
+ * @param {boolean} [options.progressive=false] - use progressive (interlace) scan
267
+ * @param {string} [options.chromaSubsampling='4:2:0'] - set to '4:4:4' to prevent chroma subsampling otherwise defaults to '4:2:0' chroma subsampling
268
+ * @param {boolean} [options.optimiseCoding=true] - optimise Huffman coding tables
269
+ * @param {boolean} [options.optimizeCoding=true] - alternative spelling of optimiseCoding
270
+ * @param {boolean} [options.mozjpeg=false] - use mozjpeg defaults, equivalent to `{ trellisQuantisation: true, overshootDeringing: true, optimiseScans: true, quantisationTable: 3 }`
271
+ * @param {boolean} [options.trellisQuantisation=false] - apply trellis quantisation
272
+ * @param {boolean} [options.overshootDeringing=false] - apply overshoot deringing
273
+ * @param {boolean} [options.optimiseScans=false] - optimise progressive scans, forces progressive
274
+ * @param {boolean} [options.optimizeScans=false] - alternative spelling of optimiseScans
275
+ * @param {number} [options.quantisationTable=0] - quantization table to use, integer 0-8
276
+ * @param {number} [options.quantizationTable=0] - alternative spelling of quantisationTable
277
+ * @param {boolean} [options.force=true] - force JPEG output, otherwise attempt to use input format
278
+ * @returns {Sharp}
279
+ * @throws {Error} Invalid options
280
+ */
281
+ function jpeg (options) {
282
+ if (is.object(options)) {
283
+ if (is.defined(options.quality)) {
284
+ if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) {
285
+ this.options.jpegQuality = options.quality;
286
+ } else {
287
+ throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality);
288
+ }
289
+ }
290
+ if (is.defined(options.progressive)) {
291
+ this._setBooleanOption('jpegProgressive', options.progressive);
292
+ }
293
+ if (is.defined(options.chromaSubsampling)) {
294
+ if (is.string(options.chromaSubsampling) && is.inArray(options.chromaSubsampling, ['4:2:0', '4:4:4'])) {
295
+ this.options.jpegChromaSubsampling = options.chromaSubsampling;
296
+ } else {
297
+ throw is.invalidParameterError('chromaSubsampling', 'one of: 4:2:0, 4:4:4', options.chromaSubsampling);
298
+ }
299
+ }
300
+ const optimiseCoding = is.bool(options.optimizeCoding) ? options.optimizeCoding : options.optimiseCoding;
301
+ if (is.defined(optimiseCoding)) {
302
+ this._setBooleanOption('jpegOptimiseCoding', optimiseCoding);
303
+ }
304
+ if (is.defined(options.mozjpeg)) {
305
+ if (is.bool(options.mozjpeg)) {
306
+ if (options.mozjpeg) {
307
+ this.options.jpegTrellisQuantisation = true;
308
+ this.options.jpegOvershootDeringing = true;
309
+ this.options.jpegOptimiseScans = true;
310
+ this.options.jpegProgressive = true;
311
+ this.options.jpegQuantisationTable = 3;
312
+ }
313
+ } else {
314
+ throw is.invalidParameterError('mozjpeg', 'boolean', options.mozjpeg);
315
+ }
316
+ }
317
+ const trellisQuantisation = is.bool(options.trellisQuantization) ? options.trellisQuantization : options.trellisQuantisation;
318
+ if (is.defined(trellisQuantisation)) {
319
+ this._setBooleanOption('jpegTrellisQuantisation', trellisQuantisation);
320
+ }
321
+ if (is.defined(options.overshootDeringing)) {
322
+ this._setBooleanOption('jpegOvershootDeringing', options.overshootDeringing);
323
+ }
324
+ const optimiseScans = is.bool(options.optimizeScans) ? options.optimizeScans : options.optimiseScans;
325
+ if (is.defined(optimiseScans)) {
326
+ this._setBooleanOption('jpegOptimiseScans', optimiseScans);
327
+ if (optimiseScans) {
328
+ this.options.jpegProgressive = true;
329
+ }
330
+ }
331
+ const quantisationTable = is.number(options.quantizationTable) ? options.quantizationTable : options.quantisationTable;
332
+ if (is.defined(quantisationTable)) {
333
+ if (is.integer(quantisationTable) && is.inRange(quantisationTable, 0, 8)) {
334
+ this.options.jpegQuantisationTable = quantisationTable;
335
+ } else {
336
+ throw is.invalidParameterError('quantisationTable', 'integer between 0 and 8', quantisationTable);
337
+ }
338
+ }
339
+ }
340
+ return this._updateFormatOut('jpeg', options);
341
+ }
342
+
343
+ /**
344
+ * Use these PNG options for output image.
345
+ *
346
+ * By default, PNG output is full colour at 8 or 16 bits per pixel.
347
+ * Indexed PNG input at 1, 2 or 4 bits per pixel is converted to 8 bits per pixel.
348
+ * Set `palette` to `true` for slower, indexed PNG output.
349
+ *
350
+ * @example
351
+ * // Convert any input to full colour PNG output
352
+ * const data = await sharp(input)
353
+ * .png()
354
+ * .toBuffer();
355
+ *
356
+ * @example
357
+ * // Convert any input to indexed PNG output (slower)
358
+ * const data = await sharp(input)
359
+ * .png({ palette: true })
360
+ * .toBuffer();
361
+ *
362
+ * @param {Object} [options]
363
+ * @param {boolean} [options.progressive=false] - use progressive (interlace) scan
364
+ * @param {number} [options.compressionLevel=6] - zlib compression level, 0 (fastest, largest) to 9 (slowest, smallest)
365
+ * @param {boolean} [options.adaptiveFiltering=false] - use adaptive row filtering
366
+ * @param {boolean} [options.palette=false] - quantise to a palette-based image with alpha transparency support
367
+ * @param {number} [options.quality=100] - use the lowest number of colours needed to achieve given quality, sets `palette` to `true`
368
+ * @param {number} [options.colours=256] - maximum number of palette entries, sets `palette` to `true`
369
+ * @param {number} [options.colors=256] - alternative spelling of `options.colours`, sets `palette` to `true`
370
+ * @param {number} [options.dither=1.0] - level of Floyd-Steinberg error diffusion, sets `palette` to `true`
371
+ * @param {boolean} [options.force=true] - force PNG output, otherwise attempt to use input format
372
+ * @returns {Sharp}
373
+ * @throws {Error} Invalid options
374
+ */
375
+ function png (options) {
376
+ if (is.object(options)) {
377
+ if (is.defined(options.progressive)) {
378
+ this._setBooleanOption('pngProgressive', options.progressive);
379
+ }
380
+ if (is.defined(options.compressionLevel)) {
381
+ if (is.integer(options.compressionLevel) && is.inRange(options.compressionLevel, 0, 9)) {
382
+ this.options.pngCompressionLevel = options.compressionLevel;
383
+ } else {
384
+ throw is.invalidParameterError('compressionLevel', 'integer between 0 and 9', options.compressionLevel);
385
+ }
386
+ }
387
+ if (is.defined(options.adaptiveFiltering)) {
388
+ this._setBooleanOption('pngAdaptiveFiltering', options.adaptiveFiltering);
389
+ }
390
+ if (is.defined(options.palette)) {
391
+ this._setBooleanOption('pngPalette', options.palette);
392
+ } else if (is.defined(options.quality) || is.defined(options.colours || options.colors) || is.defined(options.dither)) {
393
+ this._setBooleanOption('pngPalette', true);
394
+ }
395
+ if (this.options.pngPalette) {
396
+ if (is.defined(options.quality)) {
397
+ if (is.integer(options.quality) && is.inRange(options.quality, 0, 100)) {
398
+ this.options.pngQuality = options.quality;
399
+ } else {
400
+ throw is.invalidParameterError('quality', 'integer between 0 and 100', options.quality);
401
+ }
402
+ }
403
+ const colours = options.colours || options.colors;
404
+ if (is.defined(colours)) {
405
+ if (is.integer(colours) && is.inRange(colours, 2, 256)) {
406
+ this.options.pngColours = colours;
407
+ } else {
408
+ throw is.invalidParameterError('colours', 'integer between 2 and 256', colours);
409
+ }
410
+ }
411
+ if (is.defined(options.dither)) {
412
+ if (is.number(options.dither) && is.inRange(options.dither, 0, 1)) {
413
+ this.options.pngDither = options.dither;
414
+ } else {
415
+ throw is.invalidParameterError('dither', 'number between 0.0 and 1.0', options.dither);
416
+ }
417
+ }
418
+ }
419
+ }
420
+ return this._updateFormatOut('png', options);
421
+ }
422
+
423
+ /**
424
+ * Use these WebP options for output image.
425
+ *
426
+ * @example
427
+ * // Convert any input to lossless WebP output
428
+ * const data = await sharp(input)
429
+ * .webp({ lossless: true })
430
+ * .toBuffer();
431
+ *
432
+ * @example
433
+ * // Optimise the file size of an animated WebP
434
+ * const outputWebp = await sharp(inputWebp, { animated: true })
435
+ * .webp({ reductionEffort: 6 })
436
+ * .toBuffer();
437
+ *
438
+ * @param {Object} [options] - output options
439
+ * @param {number} [options.quality=80] - quality, integer 1-100
440
+ * @param {number} [options.alphaQuality=100] - quality of alpha layer, integer 0-100
441
+ * @param {boolean} [options.lossless=false] - use lossless compression mode
442
+ * @param {boolean} [options.nearLossless=false] - use near_lossless compression mode
443
+ * @param {boolean} [options.smartSubsample=false] - use high quality chroma subsampling
444
+ * @param {number} [options.reductionEffort=4] - level of CPU effort to reduce file size, integer 0-6
445
+ * @param {number} [options.pageHeight] - page height for animated output
446
+ * @param {number} [options.loop=0] - number of animation iterations, use 0 for infinite animation
447
+ * @param {number[]} [options.delay] - list of delays between animation frames (in milliseconds)
448
+ * @param {boolean} [options.force=true] - force WebP output, otherwise attempt to use input format
449
+ * @returns {Sharp}
450
+ * @throws {Error} Invalid options
451
+ */
452
+ function webp (options) {
453
+ if (is.object(options) && is.defined(options.quality)) {
454
+ if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) {
455
+ this.options.webpQuality = options.quality;
456
+ } else {
457
+ throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality);
458
+ }
459
+ }
460
+ if (is.object(options) && is.defined(options.alphaQuality)) {
461
+ if (is.integer(options.alphaQuality) && is.inRange(options.alphaQuality, 0, 100)) {
462
+ this.options.webpAlphaQuality = options.alphaQuality;
463
+ } else {
464
+ throw is.invalidParameterError('alphaQuality', 'integer between 0 and 100', options.alphaQuality);
465
+ }
466
+ }
467
+ if (is.object(options) && is.defined(options.lossless)) {
468
+ this._setBooleanOption('webpLossless', options.lossless);
469
+ }
470
+ if (is.object(options) && is.defined(options.nearLossless)) {
471
+ this._setBooleanOption('webpNearLossless', options.nearLossless);
472
+ }
473
+ if (is.object(options) && is.defined(options.smartSubsample)) {
474
+ this._setBooleanOption('webpSmartSubsample', options.smartSubsample);
475
+ }
476
+ if (is.object(options) && is.defined(options.reductionEffort)) {
477
+ if (is.integer(options.reductionEffort) && is.inRange(options.reductionEffort, 0, 6)) {
478
+ this.options.webpReductionEffort = options.reductionEffort;
479
+ } else {
480
+ throw is.invalidParameterError('reductionEffort', 'integer between 0 and 6', options.reductionEffort);
481
+ }
482
+ }
483
+
484
+ trySetAnimationOptions(options, this.options);
485
+ return this._updateFormatOut('webp', options);
486
+ }
487
+
488
+ /**
489
+ * Use these GIF options for output image.
490
+ *
491
+ * Requires libvips compiled with support for ImageMagick or GraphicsMagick.
492
+ * The prebuilt binaries do not include this - see
493
+ * {@link https://sharp.pixelplumbing.com/install#custom-libvips installing a custom libvips}.
494
+ *
495
+ * @param {Object} [options] - output options
496
+ * @param {number} [options.pageHeight] - page height for animated output
497
+ * @param {number} [options.loop=0] - number of animation iterations, use 0 for infinite animation
498
+ * @param {number[]} [options.delay] - list of delays between animation frames (in milliseconds)
499
+ * @param {boolean} [options.force=true] - force GIF output, otherwise attempt to use input format
500
+ * @returns {Sharp}
501
+ * @throws {Error} Invalid options
502
+ */
503
+ /* istanbul ignore next */
504
+ function gif (options) {
505
+ if (!this.constructor.format.magick.output.buffer) {
506
+ throw errMagickSave;
507
+ }
508
+ trySetAnimationOptions(options, this.options);
509
+ return this._updateFormatOut('gif', options);
510
+ }
511
+
512
+ /**
513
+ * Set animation options if available.
514
+ * @private
515
+ *
516
+ * @param {Object} [source] - output options
517
+ * @param {number} [source.pageHeight] - page height for animated output
518
+ * @param {number} [source.loop=0] - number of animation iterations, use 0 for infinite animation
519
+ * @param {number[]} [source.delay] - list of delays between animation frames (in milliseconds)
520
+ * @param {Object} [target] - target object for valid options
521
+ * @throws {Error} Invalid options
522
+ */
523
+ function trySetAnimationOptions (source, target) {
524
+ if (is.object(source) && is.defined(source.pageHeight)) {
525
+ if (is.integer(source.pageHeight) && source.pageHeight > 0) {
526
+ target.pageHeight = source.pageHeight;
527
+ } else {
528
+ throw is.invalidParameterError('pageHeight', 'integer larger than 0', source.pageHeight);
529
+ }
530
+ }
531
+ if (is.object(source) && is.defined(source.loop)) {
532
+ if (is.integer(source.loop) && is.inRange(source.loop, 0, 65535)) {
533
+ target.loop = source.loop;
534
+ } else {
535
+ throw is.invalidParameterError('loop', 'integer between 0 and 65535', source.loop);
536
+ }
537
+ }
538
+ if (is.object(source) && is.defined(source.delay)) {
539
+ if (
540
+ Array.isArray(source.delay) &&
541
+ source.delay.every(is.integer) &&
542
+ source.delay.every(v => is.inRange(v, 0, 65535))) {
543
+ target.delay = source.delay;
544
+ } else {
545
+ throw is.invalidParameterError('delay', 'array of integers between 0 and 65535', source.delay);
546
+ }
547
+ }
548
+ }
549
+
550
+ /**
551
+ * Use these TIFF options for output image.
552
+ *
553
+ * @example
554
+ * // Convert SVG input to LZW-compressed, 1 bit per pixel TIFF output
555
+ * sharp('input.svg')
556
+ * .tiff({
557
+ * compression: 'lzw',
558
+ * bitdepth: 1
559
+ * })
560
+ * .toFile('1-bpp-output.tiff')
561
+ * .then(info => { ... });
562
+ *
563
+ * @param {Object} [options] - output options
564
+ * @param {number} [options.quality=80] - quality, integer 1-100
565
+ * @param {boolean} [options.force=true] - force TIFF output, otherwise attempt to use input format
566
+ * @param {string} [options.compression='jpeg'] - compression options: lzw, deflate, jpeg, ccittfax4
567
+ * @param {string} [options.predictor='horizontal'] - compression predictor options: none, horizontal, float
568
+ * @param {boolean} [options.pyramid=false] - write an image pyramid
569
+ * @param {boolean} [options.tile=false] - write a tiled tiff
570
+ * @param {number} [options.tileWidth=256] - horizontal tile size
571
+ * @param {number} [options.tileHeight=256] - vertical tile size
572
+ * @param {number} [options.xres=1.0] - horizontal resolution in pixels/mm
573
+ * @param {number} [options.yres=1.0] - vertical resolution in pixels/mm
574
+ * @param {number} [options.bitdepth=8] - reduce bitdepth to 1, 2 or 4 bit
575
+ * @returns {Sharp}
576
+ * @throws {Error} Invalid options
577
+ */
578
+ function tiff (options) {
579
+ if (is.object(options)) {
580
+ if (is.defined(options.quality)) {
581
+ if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) {
582
+ this.options.tiffQuality = options.quality;
583
+ } else {
584
+ throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality);
585
+ }
586
+ }
587
+ if (is.defined(options.bitdepth)) {
588
+ if (is.integer(options.bitdepth) && is.inArray(options.bitdepth, [1, 2, 4, 8])) {
589
+ this.options.tiffBitdepth = options.bitdepth;
590
+ } else {
591
+ throw is.invalidParameterError('bitdepth', '1, 2, 4 or 8', options.bitdepth);
592
+ }
593
+ }
594
+ // tiling
595
+ if (is.defined(options.tile)) {
596
+ this._setBooleanOption('tiffTile', options.tile);
597
+ }
598
+ if (is.defined(options.tileWidth)) {
599
+ if (is.integer(options.tileWidth) && options.tileWidth > 0) {
600
+ this.options.tiffTileWidth = options.tileWidth;
601
+ } else {
602
+ throw is.invalidParameterError('tileWidth', 'integer greater than zero', options.tileWidth);
603
+ }
604
+ }
605
+ if (is.defined(options.tileHeight)) {
606
+ if (is.integer(options.tileHeight) && options.tileHeight > 0) {
607
+ this.options.tiffTileHeight = options.tileHeight;
608
+ } else {
609
+ throw is.invalidParameterError('tileHeight', 'integer greater than zero', options.tileHeight);
610
+ }
611
+ }
612
+ // pyramid
613
+ if (is.defined(options.pyramid)) {
614
+ this._setBooleanOption('tiffPyramid', options.pyramid);
615
+ }
616
+ // resolution
617
+ if (is.defined(options.xres)) {
618
+ if (is.number(options.xres) && options.xres > 0) {
619
+ this.options.tiffXres = options.xres;
620
+ } else {
621
+ throw is.invalidParameterError('xres', 'number greater than zero', options.xres);
622
+ }
623
+ }
624
+ if (is.defined(options.yres)) {
625
+ if (is.number(options.yres) && options.yres > 0) {
626
+ this.options.tiffYres = options.yres;
627
+ } else {
628
+ throw is.invalidParameterError('yres', 'number greater than zero', options.yres);
629
+ }
630
+ }
631
+ // compression
632
+ if (is.defined(options.compression)) {
633
+ if (is.string(options.compression) && is.inArray(options.compression, ['lzw', 'deflate', 'jpeg', 'ccittfax4', 'none'])) {
634
+ this.options.tiffCompression = options.compression;
635
+ } else {
636
+ throw is.invalidParameterError('compression', 'one of: lzw, deflate, jpeg, ccittfax4, none', options.compression);
637
+ }
638
+ }
639
+ // predictor
640
+ if (is.defined(options.predictor)) {
641
+ if (is.string(options.predictor) && is.inArray(options.predictor, ['none', 'horizontal', 'float'])) {
642
+ this.options.tiffPredictor = options.predictor;
643
+ } else {
644
+ throw is.invalidParameterError('predictor', 'one of: none, horizontal, float', options.predictor);
645
+ }
646
+ }
647
+ }
648
+ return this._updateFormatOut('tiff', options);
649
+ }
650
+
651
+ /**
652
+ * Use these AVIF options for output image.
653
+ *
654
+ * Whilst it is possible to create AVIF images smaller than 16x16 pixels,
655
+ * most web browsers do not display these properly.
656
+ *
657
+ * @since 0.27.0
658
+ *
659
+ * @param {Object} [options] - output options
660
+ * @param {number} [options.quality=50] - quality, integer 1-100
661
+ * @param {boolean} [options.lossless=false] - use lossless compression
662
+ * @param {number} [options.speed=5] - CPU effort vs file size, 0 (slowest/smallest) to 8 (fastest/largest)
663
+ * @param {string} [options.chromaSubsampling='4:2:0'] - set to '4:4:4' to prevent chroma subsampling otherwise defaults to '4:2:0' chroma subsampling, requires libvips v8.11.0
664
+ * @returns {Sharp}
665
+ * @throws {Error} Invalid options
666
+ */
667
+ function avif (options) {
668
+ return this.heif({ ...options, compression: 'av1' });
669
+ }
670
+
671
+ /**
672
+ * Use these HEIF options for output image.
673
+ *
674
+ * Support for patent-encumbered HEIC images requires the use of a
675
+ * globally-installed libvips compiled with support for libheif, libde265 and x265.
676
+ *
677
+ * @since 0.23.0
678
+ *
679
+ * @param {Object} [options] - output options
680
+ * @param {number} [options.quality=50] - quality, integer 1-100
681
+ * @param {string} [options.compression='av1'] - compression format: av1, hevc
682
+ * @param {boolean} [options.lossless=false] - use lossless compression
683
+ * @param {number} [options.speed=5] - CPU effort vs file size, 0 (slowest/smallest) to 8 (fastest/largest)
684
+ * @param {string} [options.chromaSubsampling='4:2:0'] - set to '4:4:4' to prevent chroma subsampling otherwise defaults to '4:2:0' chroma subsampling, requires libvips v8.11.0
685
+ * @returns {Sharp}
686
+ * @throws {Error} Invalid options
687
+ */
688
+ function heif (options) {
689
+ if (is.object(options)) {
690
+ if (is.defined(options.quality)) {
691
+ if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) {
692
+ this.options.heifQuality = options.quality;
693
+ } else {
694
+ throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality);
695
+ }
696
+ }
697
+ if (is.defined(options.lossless)) {
698
+ if (is.bool(options.lossless)) {
699
+ this.options.heifLossless = options.lossless;
700
+ } else {
701
+ throw is.invalidParameterError('lossless', 'boolean', options.lossless);
702
+ }
703
+ }
704
+ if (is.defined(options.compression)) {
705
+ if (is.string(options.compression) && is.inArray(options.compression, ['av1', 'hevc'])) {
706
+ this.options.heifCompression = options.compression;
707
+ } else {
708
+ throw is.invalidParameterError('compression', 'one of: av1, hevc', options.compression);
709
+ }
710
+ }
711
+ if (is.defined(options.speed)) {
712
+ if (is.integer(options.speed) && is.inRange(options.speed, 0, 8)) {
713
+ this.options.heifSpeed = options.speed;
714
+ } else {
715
+ throw is.invalidParameterError('speed', 'integer between 0 and 8', options.speed);
716
+ }
717
+ }
718
+ if (is.defined(options.chromaSubsampling)) {
719
+ if (is.string(options.chromaSubsampling) && is.inArray(options.chromaSubsampling, ['4:2:0', '4:4:4'])) {
720
+ this.options.heifChromaSubsampling = options.chromaSubsampling;
721
+ } else {
722
+ throw is.invalidParameterError('chromaSubsampling', 'one of: 4:2:0, 4:4:4', options.chromaSubsampling);
723
+ }
724
+ }
725
+ }
726
+ return this._updateFormatOut('heif', options);
727
+ }
728
+
729
+ /**
730
+ * Force output to be raw, uncompressed, 8-bit unsigned integer (unit8) pixel data.
731
+ * Pixel ordering is left-to-right, top-to-bottom, without padding.
732
+ * Channel ordering will be RGB or RGBA for non-greyscale colourspaces.
733
+ *
734
+ * @example
735
+ * // Extract raw RGB pixel data from JPEG input
736
+ * const { data, info } = await sharp('input.jpg')
737
+ * .raw()
738
+ * .toBuffer({ resolveWithObject: true });
739
+ *
740
+ * @example
741
+ * // Extract alpha channel as raw pixel data from PNG input
742
+ * const data = await sharp('input.png')
743
+ * .ensureAlpha()
744
+ * .extractChannel(3)
745
+ * .toColourspace('b-w')
746
+ * .raw()
747
+ * .toBuffer();
748
+ *
749
+ * @returns {Sharp}
750
+ */
751
+ function raw () {
752
+ return this._updateFormatOut('raw');
753
+ }
754
+
755
+ /**
756
+ * Use tile-based deep zoom (image pyramid) output.
757
+ * Set the format and options for tile images via the `toFormat`, `jpeg`, `png` or `webp` functions.
758
+ * Use a `.zip` or `.szi` file extension with `toFile` to write to a compressed archive file format.
759
+ *
760
+ * Warning: multiple sharp instances concurrently producing tile output can expose a possible race condition in some versions of libgsf.
761
+ *
762
+ * @example
763
+ * sharp('input.tiff')
764
+ * .png()
765
+ * .tile({
766
+ * size: 512
767
+ * })
768
+ * .toFile('output.dz', function(err, info) {
769
+ * // output.dzi is the Deep Zoom XML definition
770
+ * // output_files contains 512x512 tiles grouped by zoom level
771
+ * });
772
+ *
773
+ * @param {Object} [options]
774
+ * @param {number} [options.size=256] tile size in pixels, a value between 1 and 8192.
775
+ * @param {number} [options.overlap=0] tile overlap in pixels, a value between 0 and 8192.
776
+ * @param {number} [options.angle=0] tile angle of rotation, must be a multiple of 90.
777
+ * @param {string|Object} [options.background={r: 255, g: 255, b: 255, alpha: 1}] - background colour, parsed by the [color](https://www.npmjs.org/package/color) module, defaults to white without transparency.
778
+ * @param {string} [options.depth] how deep to make the pyramid, possible values are `onepixel`, `onetile` or `one`, default based on layout.
779
+ * @param {number} [options.skipBlanks=-1] threshold to skip tile generation, a value 0 - 255 for 8-bit images or 0 - 65535 for 16-bit images
780
+ * @param {string} [options.container='fs'] tile container, with value `fs` (filesystem) or `zip` (compressed file).
781
+ * @param {string} [options.layout='dz'] filesystem layout, possible values are `dz`, `iiif`, `zoomify` or `google`.
782
+ * @param {boolean} [options.centre=false] centre image in tile.
783
+ * @param {boolean} [options.center=false] alternative spelling of centre.
784
+ * @param {string} [options.id='https://example.com/iiif'] when `layout` is `iiif`, sets the `@id` attribute of `info.json`
785
+ * @returns {Sharp}
786
+ * @throws {Error} Invalid parameters
787
+ */
788
+ function tile (options) {
789
+ if (is.object(options)) {
790
+ // Size of square tiles, in pixels
791
+ if (is.defined(options.size)) {
792
+ if (is.integer(options.size) && is.inRange(options.size, 1, 8192)) {
793
+ this.options.tileSize = options.size;
794
+ } else {
795
+ throw is.invalidParameterError('size', 'integer between 1 and 8192', options.size);
796
+ }
797
+ }
798
+ // Overlap of tiles, in pixels
799
+ if (is.defined(options.overlap)) {
800
+ if (is.integer(options.overlap) && is.inRange(options.overlap, 0, 8192)) {
801
+ if (options.overlap > this.options.tileSize) {
802
+ throw is.invalidParameterError('overlap', `<= size (${this.options.tileSize})`, options.overlap);
803
+ }
804
+ this.options.tileOverlap = options.overlap;
805
+ } else {
806
+ throw is.invalidParameterError('overlap', 'integer between 0 and 8192', options.overlap);
807
+ }
808
+ }
809
+ // Container
810
+ if (is.defined(options.container)) {
811
+ if (is.string(options.container) && is.inArray(options.container, ['fs', 'zip'])) {
812
+ this.options.tileContainer = options.container;
813
+ } else {
814
+ throw is.invalidParameterError('container', 'one of: fs, zip', options.container);
815
+ }
816
+ }
817
+ // Layout
818
+ if (is.defined(options.layout)) {
819
+ if (is.string(options.layout) && is.inArray(options.layout, ['dz', 'google', 'iiif', 'zoomify'])) {
820
+ this.options.tileLayout = options.layout;
821
+ } else {
822
+ throw is.invalidParameterError('layout', 'one of: dz, google, iiif, zoomify', options.layout);
823
+ }
824
+ }
825
+ // Angle of rotation,
826
+ if (is.defined(options.angle)) {
827
+ if (is.integer(options.angle) && !(options.angle % 90)) {
828
+ this.options.tileAngle = options.angle;
829
+ } else {
830
+ throw is.invalidParameterError('angle', 'positive/negative multiple of 90', options.angle);
831
+ }
832
+ }
833
+ // Background colour
834
+ this._setBackgroundColourOption('tileBackground', options.background);
835
+ // Depth of tiles
836
+ if (is.defined(options.depth)) {
837
+ if (is.string(options.depth) && is.inArray(options.depth, ['onepixel', 'onetile', 'one'])) {
838
+ this.options.tileDepth = options.depth;
839
+ } else {
840
+ throw is.invalidParameterError('depth', 'one of: onepixel, onetile, one', options.depth);
841
+ }
842
+ }
843
+ // Threshold to skip blank tiles
844
+ if (is.defined(options.skipBlanks)) {
845
+ if (is.integer(options.skipBlanks) && is.inRange(options.skipBlanks, -1, 65535)) {
846
+ this.options.tileSkipBlanks = options.skipBlanks;
847
+ } else {
848
+ throw is.invalidParameterError('skipBlanks', 'integer between -1 and 255/65535', options.skipBlanks);
849
+ }
850
+ } else if (is.defined(options.layout) && options.layout === 'google') {
851
+ this.options.tileSkipBlanks = 5;
852
+ }
853
+ // Center image in tile
854
+ const centre = is.bool(options.center) ? options.center : options.centre;
855
+ if (is.defined(centre)) {
856
+ this._setBooleanOption('tileCentre', centre);
857
+ }
858
+ // @id attribute for IIIF layout
859
+ if (is.defined(options.id)) {
860
+ if (is.string(options.id)) {
861
+ this.options.tileId = options.id;
862
+ } else {
863
+ throw is.invalidParameterError('id', 'string', options.id);
864
+ }
865
+ }
866
+ }
867
+ // Format
868
+ if (is.inArray(this.options.formatOut, ['jpeg', 'png', 'webp'])) {
869
+ this.options.tileFormat = this.options.formatOut;
870
+ } else if (this.options.formatOut !== 'input') {
871
+ throw is.invalidParameterError('format', 'one of: jpeg, png, webp', this.options.formatOut);
872
+ }
873
+ return this._updateFormatOut('dz');
874
+ }
875
+
876
+ /**
877
+ * Update the output format unless options.force is false,
878
+ * in which case revert to input format.
879
+ * @private
880
+ * @param {string} formatOut
881
+ * @param {Object} [options]
882
+ * @param {boolean} [options.force=true] - force output format, otherwise attempt to use input format
883
+ * @returns {Sharp}
884
+ */
885
+ function _updateFormatOut (formatOut, options) {
886
+ if (!(is.object(options) && options.force === false)) {
887
+ this.options.formatOut = formatOut;
888
+ }
889
+ return this;
890
+ }
891
+
892
+ /**
893
+ * Update a boolean attribute of the this.options Object.
894
+ * @private
895
+ * @param {string} key
896
+ * @param {boolean} val
897
+ * @throws {Error} Invalid key
898
+ */
899
+ function _setBooleanOption (key, val) {
900
+ if (is.bool(val)) {
901
+ this.options[key] = val;
902
+ } else {
903
+ throw is.invalidParameterError(key, 'boolean', val);
904
+ }
905
+ }
906
+
907
+ /**
908
+ * Called by a WriteableStream to notify us it is ready for data.
909
+ * @private
910
+ */
911
+ function _read () {
912
+ /* istanbul ignore else */
913
+ if (!this.options.streamOut) {
914
+ this.options.streamOut = true;
915
+ this._pipeline();
916
+ }
917
+ }
918
+
919
+ /**
920
+ * Invoke the C++ image processing pipeline
921
+ * Supports callback, stream and promise variants
922
+ * @private
923
+ */
924
+ function _pipeline (callback) {
925
+ if (typeof callback === 'function') {
926
+ // output=file/buffer
927
+ if (this._isStreamInput()) {
928
+ // output=file/buffer, input=stream
929
+ this.on('finish', () => {
930
+ this._flattenBufferIn();
931
+ sharp.pipeline(this.options, callback);
932
+ });
933
+ } else {
934
+ // output=file/buffer, input=file/buffer
935
+ sharp.pipeline(this.options, callback);
936
+ }
937
+ return this;
938
+ } else if (this.options.streamOut) {
939
+ // output=stream
940
+ if (this._isStreamInput()) {
941
+ // output=stream, input=stream
942
+ this.once('finish', () => {
943
+ this._flattenBufferIn();
944
+ sharp.pipeline(this.options, (err, data, info) => {
945
+ if (err) {
946
+ this.emit('error', err);
947
+ } else {
948
+ this.emit('info', info);
949
+ this.push(data);
950
+ }
951
+ this.push(null);
952
+ });
953
+ });
954
+ if (this.streamInFinished) {
955
+ this.emit('finish');
956
+ }
957
+ } else {
958
+ // output=stream, input=file/buffer
959
+ sharp.pipeline(this.options, (err, data, info) => {
960
+ if (err) {
961
+ this.emit('error', err);
962
+ } else {
963
+ this.emit('info', info);
964
+ this.push(data);
965
+ }
966
+ this.push(null);
967
+ });
968
+ }
969
+ return this;
970
+ } else {
971
+ // output=promise
972
+ if (this._isStreamInput()) {
973
+ // output=promise, input=stream
974
+ return new Promise((resolve, reject) => {
975
+ this.once('finish', () => {
976
+ this._flattenBufferIn();
977
+ sharp.pipeline(this.options, (err, data, info) => {
978
+ if (err) {
979
+ reject(err);
980
+ } else {
981
+ if (this.options.resolveWithObject) {
982
+ resolve({ data, info });
983
+ } else {
984
+ resolve(data);
985
+ }
986
+ }
987
+ });
988
+ });
989
+ });
990
+ } else {
991
+ // output=promise, input=file/buffer
992
+ return new Promise((resolve, reject) => {
993
+ sharp.pipeline(this.options, (err, data, info) => {
994
+ if (err) {
995
+ reject(err);
996
+ } else {
997
+ if (this.options.resolveWithObject) {
998
+ resolve({ data: data, info: info });
999
+ } else {
1000
+ resolve(data);
1001
+ }
1002
+ }
1003
+ });
1004
+ });
1005
+ }
1006
+ }
1007
+ }
1008
+
1009
+ /**
1010
+ * Decorate the Sharp prototype with output-related functions.
1011
+ * @private
1012
+ */
1013
+ module.exports = function (Sharp) {
1014
+ Object.assign(Sharp.prototype, {
1015
+ // Public
1016
+ toFile,
1017
+ toBuffer,
1018
+ withMetadata,
1019
+ toFormat,
1020
+ jpeg,
1021
+ png,
1022
+ webp,
1023
+ tiff,
1024
+ avif,
1025
+ heif,
1026
+ gif,
1027
+ raw,
1028
+ tile,
1029
+ // Private
1030
+ _updateFormatOut,
1031
+ _setBooleanOption,
1032
+ _read,
1033
+ _pipeline
1034
+ });
1035
+ };