@basemaps/lambda-tiler 6.20.0 → 6.22.1

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