@basemaps/lambda-tiler 6.41.0 → 6.43.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 (443) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/build/__tests__/index.test.js +17 -5
  3. package/build/__tests__/index.test.js.map +1 -1
  4. package/build/cli/render.tile.js +25 -10
  5. package/build/cli/render.tile.js.map +1 -1
  6. package/build/routes/attribution.d.ts.map +1 -1
  7. package/build/routes/attribution.js +1 -3
  8. package/build/routes/attribution.js.map +1 -1
  9. package/build/routes/tile.xyz.raster.d.ts.map +1 -1
  10. package/build/routes/tile.xyz.raster.js +0 -2
  11. package/build/routes/tile.xyz.raster.js.map +1 -1
  12. package/build/routes/version.d.ts.map +1 -1
  13. package/build/routes/version.js +17 -1
  14. package/build/routes/version.js.map +1 -1
  15. package/package.json +9 -9
  16. package/src/__tests__/index.test.ts +20 -5
  17. package/src/cli/render.tile.ts +26 -10
  18. package/src/routes/attribution.ts +1 -3
  19. package/src/routes/tile.xyz.raster.ts +0 -1
  20. package/src/routes/version.ts +17 -1
  21. package/tsconfig.tsbuildinfo +1 -1
  22. package/dist/index.js +0 -229
  23. package/dist/node_modules/.package-lock.json +0 -491
  24. package/dist/node_modules/base64-js/LICENSE +0 -21
  25. package/dist/node_modules/base64-js/README.md +0 -34
  26. package/dist/node_modules/base64-js/base64js.min.js +0 -1
  27. package/dist/node_modules/base64-js/index.d.ts +0 -3
  28. package/dist/node_modules/base64-js/index.js +0 -150
  29. package/dist/node_modules/base64-js/package.json +0 -47
  30. package/dist/node_modules/bl/.travis.yml +0 -17
  31. package/dist/node_modules/bl/BufferList.js +0 -396
  32. package/dist/node_modules/bl/LICENSE.md +0 -13
  33. package/dist/node_modules/bl/README.md +0 -247
  34. package/dist/node_modules/bl/bl.js +0 -84
  35. package/dist/node_modules/bl/package.json +0 -37
  36. package/dist/node_modules/bl/test/convert.js +0 -21
  37. package/dist/node_modules/bl/test/indexOf.js +0 -492
  38. package/dist/node_modules/bl/test/isBufferList.js +0 -32
  39. package/dist/node_modules/bl/test/test.js +0 -869
  40. package/dist/node_modules/buffer/AUTHORS.md +0 -70
  41. package/dist/node_modules/buffer/LICENSE +0 -21
  42. package/dist/node_modules/buffer/README.md +0 -410
  43. package/dist/node_modules/buffer/index.d.ts +0 -186
  44. package/dist/node_modules/buffer/index.js +0 -1817
  45. package/dist/node_modules/buffer/package.json +0 -96
  46. package/dist/node_modules/chownr/LICENSE +0 -15
  47. package/dist/node_modules/chownr/README.md +0 -3
  48. package/dist/node_modules/chownr/chownr.js +0 -167
  49. package/dist/node_modules/chownr/package.json +0 -29
  50. package/dist/node_modules/color/LICENSE +0 -21
  51. package/dist/node_modules/color/README.md +0 -123
  52. package/dist/node_modules/color/index.js +0 -496
  53. package/dist/node_modules/color/package.json +0 -47
  54. package/dist/node_modules/color-convert/CHANGELOG.md +0 -54
  55. package/dist/node_modules/color-convert/LICENSE +0 -21
  56. package/dist/node_modules/color-convert/README.md +0 -68
  57. package/dist/node_modules/color-convert/conversions.js +0 -839
  58. package/dist/node_modules/color-convert/index.js +0 -81
  59. package/dist/node_modules/color-convert/package.json +0 -48
  60. package/dist/node_modules/color-convert/route.js +0 -97
  61. package/dist/node_modules/color-name/LICENSE +0 -8
  62. package/dist/node_modules/color-name/README.md +0 -11
  63. package/dist/node_modules/color-name/index.js +0 -152
  64. package/dist/node_modules/color-name/package.json +0 -28
  65. package/dist/node_modules/color-string/LICENSE +0 -21
  66. package/dist/node_modules/color-string/README.md +0 -62
  67. package/dist/node_modules/color-string/index.js +0 -242
  68. package/dist/node_modules/color-string/package.json +0 -39
  69. package/dist/node_modules/decompress-response/index.d.ts +0 -22
  70. package/dist/node_modules/decompress-response/index.js +0 -58
  71. package/dist/node_modules/decompress-response/license +0 -9
  72. package/dist/node_modules/decompress-response/package.json +0 -56
  73. package/dist/node_modules/decompress-response/readme.md +0 -48
  74. package/dist/node_modules/deep-extend/CHANGELOG.md +0 -46
  75. package/dist/node_modules/deep-extend/LICENSE +0 -20
  76. package/dist/node_modules/deep-extend/README.md +0 -91
  77. package/dist/node_modules/deep-extend/index.js +0 -1
  78. package/dist/node_modules/deep-extend/lib/deep-extend.js +0 -150
  79. package/dist/node_modules/deep-extend/package.json +0 -62
  80. package/dist/node_modules/detect-libc/LICENSE +0 -201
  81. package/dist/node_modules/detect-libc/README.md +0 -163
  82. package/dist/node_modules/detect-libc/index.d.ts +0 -14
  83. package/dist/node_modules/detect-libc/lib/detect-libc.js +0 -279
  84. package/dist/node_modules/detect-libc/lib/filesystem.js +0 -41
  85. package/dist/node_modules/detect-libc/lib/process.js +0 -19
  86. package/dist/node_modules/detect-libc/package.json +0 -40
  87. package/dist/node_modules/end-of-stream/LICENSE +0 -21
  88. package/dist/node_modules/end-of-stream/README.md +0 -54
  89. package/dist/node_modules/end-of-stream/index.js +0 -94
  90. package/dist/node_modules/end-of-stream/package.json +0 -37
  91. package/dist/node_modules/expand-template/.travis.yml +0 -6
  92. package/dist/node_modules/expand-template/LICENSE +0 -21
  93. package/dist/node_modules/expand-template/README.md +0 -43
  94. package/dist/node_modules/expand-template/index.js +0 -26
  95. package/dist/node_modules/expand-template/package.json +0 -29
  96. package/dist/node_modules/expand-template/test.js +0 -67
  97. package/dist/node_modules/fs-constants/LICENSE +0 -21
  98. package/dist/node_modules/fs-constants/README.md +0 -26
  99. package/dist/node_modules/fs-constants/browser.js +0 -1
  100. package/dist/node_modules/fs-constants/index.js +0 -1
  101. package/dist/node_modules/fs-constants/package.json +0 -19
  102. package/dist/node_modules/github-from-package/.travis.yml +0 -4
  103. package/dist/node_modules/github-from-package/LICENSE +0 -18
  104. package/dist/node_modules/github-from-package/example/package.json +0 -8
  105. package/dist/node_modules/github-from-package/example/url.js +0 -3
  106. package/dist/node_modules/github-from-package/index.js +0 -17
  107. package/dist/node_modules/github-from-package/package.json +0 -30
  108. package/dist/node_modules/github-from-package/readme.markdown +0 -53
  109. package/dist/node_modules/github-from-package/test/a.json +0 -8
  110. package/dist/node_modules/github-from-package/test/b.json +0 -5
  111. package/dist/node_modules/github-from-package/test/c.json +0 -5
  112. package/dist/node_modules/github-from-package/test/d.json +0 -7
  113. package/dist/node_modules/github-from-package/test/e.json +0 -5
  114. package/dist/node_modules/github-from-package/test/url.js +0 -19
  115. package/dist/node_modules/ieee754/LICENSE +0 -11
  116. package/dist/node_modules/ieee754/README.md +0 -51
  117. package/dist/node_modules/ieee754/index.d.ts +0 -10
  118. package/dist/node_modules/ieee754/index.js +0 -85
  119. package/dist/node_modules/ieee754/package.json +0 -52
  120. package/dist/node_modules/inherits/LICENSE +0 -16
  121. package/dist/node_modules/inherits/README.md +0 -42
  122. package/dist/node_modules/inherits/inherits.js +0 -9
  123. package/dist/node_modules/inherits/inherits_browser.js +0 -27
  124. package/dist/node_modules/inherits/package.json +0 -29
  125. package/dist/node_modules/ini/LICENSE +0 -15
  126. package/dist/node_modules/ini/README.md +0 -102
  127. package/dist/node_modules/ini/ini.js +0 -206
  128. package/dist/node_modules/ini/package.json +0 -33
  129. package/dist/node_modules/is-arrayish/LICENSE +0 -21
  130. package/dist/node_modules/is-arrayish/README.md +0 -16
  131. package/dist/node_modules/is-arrayish/index.js +0 -9
  132. package/dist/node_modules/is-arrayish/package.json +0 -45
  133. package/dist/node_modules/is-arrayish/yarn-error.log +0 -1443
  134. package/dist/node_modules/lru-cache/LICENSE +0 -15
  135. package/dist/node_modules/lru-cache/README.md +0 -166
  136. package/dist/node_modules/lru-cache/index.js +0 -334
  137. package/dist/node_modules/lru-cache/package.json +0 -34
  138. package/dist/node_modules/mimic-response/index.d.ts +0 -17
  139. package/dist/node_modules/mimic-response/index.js +0 -77
  140. package/dist/node_modules/mimic-response/license +0 -9
  141. package/dist/node_modules/mimic-response/package.json +0 -42
  142. package/dist/node_modules/mimic-response/readme.md +0 -78
  143. package/dist/node_modules/minimist/.eslintrc +0 -29
  144. package/dist/node_modules/minimist/.github/FUNDING.yml +0 -12
  145. package/dist/node_modules/minimist/.nycrc +0 -14
  146. package/dist/node_modules/minimist/CHANGELOG.md +0 -298
  147. package/dist/node_modules/minimist/LICENSE +0 -18
  148. package/dist/node_modules/minimist/README.md +0 -121
  149. package/dist/node_modules/minimist/example/parse.js +0 -4
  150. package/dist/node_modules/minimist/index.js +0 -263
  151. package/dist/node_modules/minimist/package.json +0 -75
  152. package/dist/node_modules/minimist/test/all_bool.js +0 -34
  153. package/dist/node_modules/minimist/test/bool.js +0 -177
  154. package/dist/node_modules/minimist/test/dash.js +0 -43
  155. package/dist/node_modules/minimist/test/default_bool.js +0 -37
  156. package/dist/node_modules/minimist/test/dotted.js +0 -24
  157. package/dist/node_modules/minimist/test/kv_short.js +0 -32
  158. package/dist/node_modules/minimist/test/long.js +0 -33
  159. package/dist/node_modules/minimist/test/num.js +0 -38
  160. package/dist/node_modules/minimist/test/parse.js +0 -209
  161. package/dist/node_modules/minimist/test/parse_modified.js +0 -11
  162. package/dist/node_modules/minimist/test/proto.js +0 -64
  163. package/dist/node_modules/minimist/test/short.js +0 -69
  164. package/dist/node_modules/minimist/test/stop_early.js +0 -17
  165. package/dist/node_modules/minimist/test/unknown.js +0 -104
  166. package/dist/node_modules/minimist/test/whitespace.js +0 -10
  167. package/dist/node_modules/mkdirp-classic/LICENSE +0 -21
  168. package/dist/node_modules/mkdirp-classic/README.md +0 -18
  169. package/dist/node_modules/mkdirp-classic/index.js +0 -98
  170. package/dist/node_modules/mkdirp-classic/package.json +0 -18
  171. package/dist/node_modules/napi-build-utils/LICENSE +0 -21
  172. package/dist/node_modules/napi-build-utils/README.md +0 -48
  173. package/dist/node_modules/napi-build-utils/index.js +0 -213
  174. package/dist/node_modules/napi-build-utils/index.md +0 -81
  175. package/dist/node_modules/napi-build-utils/package.json +0 -41
  176. package/dist/node_modules/node-abi/.circleci/config.yml +0 -45
  177. package/dist/node_modules/node-abi/.github/CODEOWNERS +0 -1
  178. package/dist/node_modules/node-abi/.github/workflows/semantic.yml +0 -26
  179. package/dist/node_modules/node-abi/.github/workflows/update-abi.yml +0 -42
  180. package/dist/node_modules/node-abi/.releaserc.json +0 -9
  181. package/dist/node_modules/node-abi/CODE_OF_CONDUCT.md +0 -73
  182. package/dist/node_modules/node-abi/CONTRIBUTING.md +0 -62
  183. package/dist/node_modules/node-abi/LICENSE +0 -21
  184. package/dist/node_modules/node-abi/README.md +0 -52
  185. package/dist/node_modules/node-abi/abi_registry.json +0 -269
  186. package/dist/node_modules/node-abi/index.js +0 -179
  187. package/dist/node_modules/node-abi/package.json +0 -38
  188. package/dist/node_modules/node-abi/scripts/update-abi-registry.js +0 -119
  189. package/dist/node_modules/node-abi/test/index.js +0 -166
  190. package/dist/node_modules/node-addon-api/LICENSE.md +0 -13
  191. package/dist/node_modules/node-addon-api/README.md +0 -317
  192. package/dist/node_modules/node-addon-api/common.gypi +0 -21
  193. package/dist/node_modules/node-addon-api/except.gypi +0 -25
  194. package/dist/node_modules/node-addon-api/index.js +0 -11
  195. package/dist/node_modules/node-addon-api/napi-inl.deprecated.h +0 -186
  196. package/dist/node_modules/node-addon-api/napi-inl.h +0 -6303
  197. package/dist/node_modules/node-addon-api/napi.h +0 -3114
  198. package/dist/node_modules/node-addon-api/node_api.gyp +0 -9
  199. package/dist/node_modules/node-addon-api/noexcept.gypi +0 -26
  200. package/dist/node_modules/node-addon-api/nothing.c +0 -0
  201. package/dist/node_modules/node-addon-api/package-support.json +0 -21
  202. package/dist/node_modules/node-addon-api/package.json +0 -456
  203. package/dist/node_modules/node-addon-api/tools/README.md +0 -73
  204. package/dist/node_modules/node-addon-api/tools/check-napi.js +0 -99
  205. package/dist/node_modules/node-addon-api/tools/clang-format.js +0 -71
  206. package/dist/node_modules/node-addon-api/tools/conversion.js +0 -301
  207. package/dist/node_modules/node-addon-api/tools/eslint-format.js +0 -79
  208. package/dist/node_modules/once/LICENSE +0 -15
  209. package/dist/node_modules/once/README.md +0 -79
  210. package/dist/node_modules/once/once.js +0 -42
  211. package/dist/node_modules/once/package.json +0 -33
  212. package/dist/node_modules/prebuild-install/CHANGELOG.md +0 -116
  213. package/dist/node_modules/prebuild-install/CONTRIBUTING.md +0 -6
  214. package/dist/node_modules/prebuild-install/LICENSE +0 -21
  215. package/dist/node_modules/prebuild-install/README.md +0 -163
  216. package/dist/node_modules/prebuild-install/asset.js +0 -44
  217. package/dist/node_modules/prebuild-install/bin.js +0 -78
  218. package/dist/node_modules/prebuild-install/download.js +0 -142
  219. package/dist/node_modules/prebuild-install/error.js +0 -14
  220. package/dist/node_modules/prebuild-install/help.txt +0 -16
  221. package/dist/node_modules/prebuild-install/index.js +0 -1
  222. package/dist/node_modules/prebuild-install/log.js +0 -33
  223. package/dist/node_modules/prebuild-install/package.json +0 -67
  224. package/dist/node_modules/prebuild-install/proxy.js +0 -35
  225. package/dist/node_modules/prebuild-install/rc.js +0 -64
  226. package/dist/node_modules/prebuild-install/util.js +0 -143
  227. package/dist/node_modules/pump/.travis.yml +0 -5
  228. package/dist/node_modules/pump/LICENSE +0 -21
  229. package/dist/node_modules/pump/README.md +0 -65
  230. package/dist/node_modules/pump/index.js +0 -82
  231. package/dist/node_modules/pump/package.json +0 -24
  232. package/dist/node_modules/pump/test-browser.js +0 -66
  233. package/dist/node_modules/pump/test-node.js +0 -53
  234. package/dist/node_modules/rc/LICENSE.APACHE2 +0 -15
  235. package/dist/node_modules/rc/LICENSE.BSD +0 -26
  236. package/dist/node_modules/rc/LICENSE.MIT +0 -24
  237. package/dist/node_modules/rc/README.md +0 -227
  238. package/dist/node_modules/rc/browser.js +0 -7
  239. package/dist/node_modules/rc/cli.js +0 -4
  240. package/dist/node_modules/rc/index.js +0 -53
  241. package/dist/node_modules/rc/lib/utils.js +0 -104
  242. package/dist/node_modules/rc/package.json +0 -29
  243. package/dist/node_modules/rc/test/ini.js +0 -16
  244. package/dist/node_modules/rc/test/nested-env-vars.js +0 -50
  245. package/dist/node_modules/rc/test/test.js +0 -59
  246. package/dist/node_modules/readable-stream/CONTRIBUTING.md +0 -38
  247. package/dist/node_modules/readable-stream/GOVERNANCE.md +0 -136
  248. package/dist/node_modules/readable-stream/LICENSE +0 -47
  249. package/dist/node_modules/readable-stream/README.md +0 -106
  250. package/dist/node_modules/readable-stream/errors-browser.js +0 -127
  251. package/dist/node_modules/readable-stream/errors.js +0 -116
  252. package/dist/node_modules/readable-stream/experimentalWarning.js +0 -17
  253. package/dist/node_modules/readable-stream/lib/_stream_duplex.js +0 -126
  254. package/dist/node_modules/readable-stream/lib/_stream_passthrough.js +0 -37
  255. package/dist/node_modules/readable-stream/lib/_stream_readable.js +0 -1027
  256. package/dist/node_modules/readable-stream/lib/_stream_transform.js +0 -190
  257. package/dist/node_modules/readable-stream/lib/_stream_writable.js +0 -641
  258. package/dist/node_modules/readable-stream/lib/internal/streams/async_iterator.js +0 -180
  259. package/dist/node_modules/readable-stream/lib/internal/streams/buffer_list.js +0 -183
  260. package/dist/node_modules/readable-stream/lib/internal/streams/destroy.js +0 -96
  261. package/dist/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +0 -86
  262. package/dist/node_modules/readable-stream/lib/internal/streams/from-browser.js +0 -3
  263. package/dist/node_modules/readable-stream/lib/internal/streams/from.js +0 -52
  264. package/dist/node_modules/readable-stream/lib/internal/streams/pipeline.js +0 -86
  265. package/dist/node_modules/readable-stream/lib/internal/streams/state.js +0 -22
  266. package/dist/node_modules/readable-stream/lib/internal/streams/stream-browser.js +0 -1
  267. package/dist/node_modules/readable-stream/lib/internal/streams/stream.js +0 -1
  268. package/dist/node_modules/readable-stream/package.json +0 -68
  269. package/dist/node_modules/readable-stream/readable-browser.js +0 -9
  270. package/dist/node_modules/readable-stream/readable.js +0 -16
  271. package/dist/node_modules/safe-buffer/LICENSE +0 -21
  272. package/dist/node_modules/safe-buffer/README.md +0 -584
  273. package/dist/node_modules/safe-buffer/index.d.ts +0 -187
  274. package/dist/node_modules/safe-buffer/index.js +0 -65
  275. package/dist/node_modules/safe-buffer/package.json +0 -51
  276. package/dist/node_modules/semver/LICENSE +0 -15
  277. package/dist/node_modules/semver/README.md +0 -637
  278. package/dist/node_modules/semver/bin/semver.js +0 -197
  279. package/dist/node_modules/semver/classes/comparator.js +0 -141
  280. package/dist/node_modules/semver/classes/index.js +0 -5
  281. package/dist/node_modules/semver/classes/range.js +0 -539
  282. package/dist/node_modules/semver/classes/semver.js +0 -302
  283. package/dist/node_modules/semver/functions/clean.js +0 -6
  284. package/dist/node_modules/semver/functions/cmp.js +0 -52
  285. package/dist/node_modules/semver/functions/coerce.js +0 -52
  286. package/dist/node_modules/semver/functions/compare-build.js +0 -7
  287. package/dist/node_modules/semver/functions/compare-loose.js +0 -3
  288. package/dist/node_modules/semver/functions/compare.js +0 -5
  289. package/dist/node_modules/semver/functions/diff.js +0 -65
  290. package/dist/node_modules/semver/functions/eq.js +0 -3
  291. package/dist/node_modules/semver/functions/gt.js +0 -3
  292. package/dist/node_modules/semver/functions/gte.js +0 -3
  293. package/dist/node_modules/semver/functions/inc.js +0 -19
  294. package/dist/node_modules/semver/functions/lt.js +0 -3
  295. package/dist/node_modules/semver/functions/lte.js +0 -3
  296. package/dist/node_modules/semver/functions/major.js +0 -3
  297. package/dist/node_modules/semver/functions/minor.js +0 -3
  298. package/dist/node_modules/semver/functions/neq.js +0 -3
  299. package/dist/node_modules/semver/functions/parse.js +0 -16
  300. package/dist/node_modules/semver/functions/patch.js +0 -3
  301. package/dist/node_modules/semver/functions/prerelease.js +0 -6
  302. package/dist/node_modules/semver/functions/rcompare.js +0 -3
  303. package/dist/node_modules/semver/functions/rsort.js +0 -3
  304. package/dist/node_modules/semver/functions/satisfies.js +0 -10
  305. package/dist/node_modules/semver/functions/sort.js +0 -3
  306. package/dist/node_modules/semver/functions/valid.js +0 -6
  307. package/dist/node_modules/semver/index.js +0 -89
  308. package/dist/node_modules/semver/internal/constants.js +0 -35
  309. package/dist/node_modules/semver/internal/debug.js +0 -9
  310. package/dist/node_modules/semver/internal/identifiers.js +0 -23
  311. package/dist/node_modules/semver/internal/parse-options.js +0 -15
  312. package/dist/node_modules/semver/internal/re.js +0 -212
  313. package/dist/node_modules/semver/package.json +0 -87
  314. package/dist/node_modules/semver/preload.js +0 -2
  315. package/dist/node_modules/semver/range.bnf +0 -16
  316. package/dist/node_modules/semver/ranges/gtr.js +0 -4
  317. package/dist/node_modules/semver/ranges/intersects.js +0 -7
  318. package/dist/node_modules/semver/ranges/ltr.js +0 -4
  319. package/dist/node_modules/semver/ranges/max-satisfying.js +0 -25
  320. package/dist/node_modules/semver/ranges/min-satisfying.js +0 -24
  321. package/dist/node_modules/semver/ranges/min-version.js +0 -61
  322. package/dist/node_modules/semver/ranges/outside.js +0 -80
  323. package/dist/node_modules/semver/ranges/simplify.js +0 -47
  324. package/dist/node_modules/semver/ranges/subset.js +0 -247
  325. package/dist/node_modules/semver/ranges/to-comparators.js +0 -8
  326. package/dist/node_modules/semver/ranges/valid.js +0 -11
  327. package/dist/node_modules/sharp/LICENSE +0 -191
  328. package/dist/node_modules/sharp/README.md +0 -117
  329. package/dist/node_modules/sharp/binding.gyp +0 -233
  330. package/dist/node_modules/sharp/build/Release/sharp-linux-x64.node +0 -0
  331. package/dist/node_modules/sharp/install/can-compile.js +0 -11
  332. package/dist/node_modules/sharp/install/dll-copy.js +0 -37
  333. package/dist/node_modules/sharp/install/libvips.js +0 -215
  334. package/dist/node_modules/sharp/lib/agent.js +0 -40
  335. package/dist/node_modules/sharp/lib/channel.js +0 -171
  336. package/dist/node_modules/sharp/lib/colour.js +0 -180
  337. package/dist/node_modules/sharp/lib/composite.js +0 -193
  338. package/dist/node_modules/sharp/lib/constructor.js +0 -386
  339. package/dist/node_modules/sharp/lib/index.js +0 -13
  340. package/dist/node_modules/sharp/lib/input.js +0 -507
  341. package/dist/node_modules/sharp/lib/is.js +0 -143
  342. package/dist/node_modules/sharp/lib/libvips.js +0 -136
  343. package/dist/node_modules/sharp/lib/operation.js +0 -803
  344. package/dist/node_modules/sharp/lib/output.js +0 -1231
  345. package/dist/node_modules/sharp/lib/platform.js +0 -27
  346. package/dist/node_modules/sharp/lib/resize.js +0 -473
  347. package/dist/node_modules/sharp/lib/sharp.js +0 -35
  348. package/dist/node_modules/sharp/lib/utility.js +0 -211
  349. package/dist/node_modules/sharp/package.json +0 -196
  350. package/dist/node_modules/sharp/src/common.cc +0 -966
  351. package/dist/node_modules/sharp/src/common.h +0 -352
  352. package/dist/node_modules/sharp/src/libvips/cplusplus/VConnection.cpp +0 -152
  353. package/dist/node_modules/sharp/src/libvips/cplusplus/VError.cpp +0 -50
  354. package/dist/node_modules/sharp/src/libvips/cplusplus/VImage.cpp +0 -1523
  355. package/dist/node_modules/sharp/src/libvips/cplusplus/VInterpolate.cpp +0 -63
  356. package/dist/node_modules/sharp/src/libvips/cplusplus/vips-operators.cpp +0 -3738
  357. package/dist/node_modules/sharp/src/metadata.cc +0 -291
  358. package/dist/node_modules/sharp/src/metadata.h +0 -92
  359. package/dist/node_modules/sharp/src/operations.cc +0 -412
  360. package/dist/node_modules/sharp/src/operations.h +0 -126
  361. package/dist/node_modules/sharp/src/pipeline.cc +0 -1624
  362. package/dist/node_modules/sharp/src/pipeline.h +0 -349
  363. package/dist/node_modules/sharp/src/sharp.cc +0 -52
  364. package/dist/node_modules/sharp/src/stats.cc +0 -193
  365. package/dist/node_modules/sharp/src/stats.h +0 -70
  366. package/dist/node_modules/sharp/src/utilities.cc +0 -243
  367. package/dist/node_modules/sharp/src/utilities.h +0 -29
  368. package/dist/node_modules/sharp/vendor/8.12.2/linux-x64/THIRD-PARTY-NOTICES.md +0 -43
  369. package/dist/node_modules/sharp/vendor/8.12.2/linux-x64/lib/libvips-cpp.so.42 +0 -0
  370. package/dist/node_modules/sharp/vendor/8.12.2/linux-x64/platform.json +0 -1
  371. package/dist/node_modules/sharp/vendor/8.12.2/linux-x64/versions.json +0 -31
  372. package/dist/node_modules/simple-concat/.travis.yml +0 -3
  373. package/dist/node_modules/simple-concat/LICENSE +0 -20
  374. package/dist/node_modules/simple-concat/README.md +0 -44
  375. package/dist/node_modules/simple-concat/index.js +0 -15
  376. package/dist/node_modules/simple-concat/package.json +0 -47
  377. package/dist/node_modules/simple-concat/test/basic.js +0 -41
  378. package/dist/node_modules/simple-get/.github/dependabot.yml +0 -15
  379. package/dist/node_modules/simple-get/.github/workflows/ci.yml +0 -23
  380. package/dist/node_modules/simple-get/LICENSE +0 -20
  381. package/dist/node_modules/simple-get/README.md +0 -333
  382. package/dist/node_modules/simple-get/index.js +0 -108
  383. package/dist/node_modules/simple-get/package.json +0 -67
  384. package/dist/node_modules/simple-swizzle/LICENSE +0 -21
  385. package/dist/node_modules/simple-swizzle/README.md +0 -39
  386. package/dist/node_modules/simple-swizzle/index.js +0 -29
  387. package/dist/node_modules/simple-swizzle/package.json +0 -36
  388. package/dist/node_modules/string_decoder/LICENSE +0 -48
  389. package/dist/node_modules/string_decoder/README.md +0 -47
  390. package/dist/node_modules/string_decoder/lib/string_decoder.js +0 -296
  391. package/dist/node_modules/string_decoder/package.json +0 -34
  392. package/dist/node_modules/strip-json-comments/index.js +0 -70
  393. package/dist/node_modules/strip-json-comments/license +0 -21
  394. package/dist/node_modules/strip-json-comments/package.json +0 -42
  395. package/dist/node_modules/strip-json-comments/readme.md +0 -64
  396. package/dist/node_modules/tar-fs/.travis.yml +0 -6
  397. package/dist/node_modules/tar-fs/LICENSE +0 -21
  398. package/dist/node_modules/tar-fs/README.md +0 -165
  399. package/dist/node_modules/tar-fs/index.js +0 -351
  400. package/dist/node_modules/tar-fs/package.json +0 -41
  401. package/dist/node_modules/tar-fs/test/fixtures/a/hello.txt +0 -1
  402. package/dist/node_modules/tar-fs/test/fixtures/b/a/test.txt +0 -1
  403. package/dist/node_modules/tar-fs/test/fixtures/d/file1 +0 -0
  404. package/dist/node_modules/tar-fs/test/fixtures/d/file2 +0 -0
  405. package/dist/node_modules/tar-fs/test/fixtures/d/sub-dir/file5 +0 -0
  406. package/dist/node_modules/tar-fs/test/fixtures/d/sub-files/file3 +0 -0
  407. package/dist/node_modules/tar-fs/test/fixtures/d/sub-files/file4 +0 -0
  408. package/dist/node_modules/tar-fs/test/fixtures/e/directory/.ignore +0 -0
  409. package/dist/node_modules/tar-fs/test/fixtures/e/file +0 -0
  410. package/dist/node_modules/tar-fs/test/fixtures/invalid.tar +0 -0
  411. package/dist/node_modules/tar-fs/test/index.js +0 -346
  412. package/dist/node_modules/tar-stream/LICENSE +0 -21
  413. package/dist/node_modules/tar-stream/README.md +0 -168
  414. package/dist/node_modules/tar-stream/extract.js +0 -257
  415. package/dist/node_modules/tar-stream/headers.js +0 -295
  416. package/dist/node_modules/tar-stream/index.js +0 -2
  417. package/dist/node_modules/tar-stream/pack.js +0 -255
  418. package/dist/node_modules/tar-stream/package.json +0 -58
  419. package/dist/node_modules/tar-stream/sandbox.js +0 -11
  420. package/dist/node_modules/tunnel-agent/LICENSE +0 -55
  421. package/dist/node_modules/tunnel-agent/README.md +0 -4
  422. package/dist/node_modules/tunnel-agent/index.js +0 -244
  423. package/dist/node_modules/tunnel-agent/package.json +0 -22
  424. package/dist/node_modules/util-deprecate/History.md +0 -16
  425. package/dist/node_modules/util-deprecate/LICENSE +0 -24
  426. package/dist/node_modules/util-deprecate/README.md +0 -53
  427. package/dist/node_modules/util-deprecate/browser.js +0 -67
  428. package/dist/node_modules/util-deprecate/node.js +0 -6
  429. package/dist/node_modules/util-deprecate/package.json +0 -27
  430. package/dist/node_modules/wrappy/LICENSE +0 -15
  431. package/dist/node_modules/wrappy/README.md +0 -36
  432. package/dist/node_modules/wrappy/package.json +0 -29
  433. package/dist/node_modules/wrappy/wrappy.js +0 -33
  434. package/dist/node_modules/yallist/LICENSE +0 -15
  435. package/dist/node_modules/yallist/README.md +0 -204
  436. package/dist/node_modules/yallist/iterator.js +0 -8
  437. package/dist/node_modules/yallist/package.json +0 -29
  438. package/dist/node_modules/yallist/yallist.js +0 -426
  439. package/dist/package-lock.json +0 -502
  440. package/dist/package.json +0 -38
  441. package/dist/static/expected_tile_2193_153_255_z7.png +0 -0
  442. package/dist/static/expected_tile_NZTM2000Quad_30_33_z6.png +0 -0
  443. package/dist/static/expected_tile_WebMercatorQuad_252_156_z8.png +0 -0
@@ -1,966 +0,0 @@
1
- // Copyright 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Lovell Fuller and contributors.
2
- //
3
- // Licensed under the Apache License, Version 2.0 (the "License");
4
- // you may not use this file except in compliance with the License.
5
- // You may obtain a copy of the License at
6
- //
7
- // http://www.apache.org/licenses/LICENSE-2.0
8
- //
9
- // Unless required by applicable law or agreed to in writing, software
10
- // distributed under the License is distributed on an "AS IS" BASIS,
11
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- // See the License for the specific language governing permissions and
13
- // limitations under the License.
14
-
15
- #include <cstdlib>
16
- #include <string>
17
- #include <string.h>
18
- #include <vector>
19
- #include <queue>
20
- #include <map>
21
- #include <mutex> // NOLINT(build/c++11)
22
-
23
- #include <napi.h>
24
- #include <vips/vips8>
25
-
26
- #include "common.h"
27
-
28
- using vips::VImage;
29
-
30
- namespace sharp {
31
-
32
- // Convenience methods to access the attributes of a Napi::Object
33
- bool HasAttr(Napi::Object obj, std::string attr) {
34
- return obj.Has(attr);
35
- }
36
- std::string AttrAsStr(Napi::Object obj, std::string attr) {
37
- return obj.Get(attr).As<Napi::String>();
38
- }
39
- std::string AttrAsStr(Napi::Object obj, unsigned int const attr) {
40
- return obj.Get(attr).As<Napi::String>();
41
- }
42
- uint32_t AttrAsUint32(Napi::Object obj, std::string attr) {
43
- return obj.Get(attr).As<Napi::Number>().Uint32Value();
44
- }
45
- int32_t AttrAsInt32(Napi::Object obj, std::string attr) {
46
- return obj.Get(attr).As<Napi::Number>().Int32Value();
47
- }
48
- int32_t AttrAsInt32(Napi::Object obj, unsigned int const attr) {
49
- return obj.Get(attr).As<Napi::Number>().Int32Value();
50
- }
51
- int64_t AttrAsInt64(Napi::Object obj, std::string attr) {
52
- return obj.Get(attr).As<Napi::Number>().Int64Value();
53
- }
54
- double AttrAsDouble(Napi::Object obj, std::string attr) {
55
- return obj.Get(attr).As<Napi::Number>().DoubleValue();
56
- }
57
- double AttrAsDouble(Napi::Object obj, unsigned int const attr) {
58
- return obj.Get(attr).As<Napi::Number>().DoubleValue();
59
- }
60
- bool AttrAsBool(Napi::Object obj, std::string attr) {
61
- return obj.Get(attr).As<Napi::Boolean>().Value();
62
- }
63
- std::vector<double> AttrAsVectorOfDouble(Napi::Object obj, std::string attr) {
64
- Napi::Array napiArray = obj.Get(attr).As<Napi::Array>();
65
- std::vector<double> vectorOfDouble(napiArray.Length());
66
- for (unsigned int i = 0; i < napiArray.Length(); i++) {
67
- vectorOfDouble[i] = AttrAsDouble(napiArray, i);
68
- }
69
- return vectorOfDouble;
70
- }
71
- std::vector<int32_t> AttrAsInt32Vector(Napi::Object obj, std::string attr) {
72
- Napi::Array array = obj.Get(attr).As<Napi::Array>();
73
- std::vector<int32_t> vector(array.Length());
74
- for (unsigned int i = 0; i < array.Length(); i++) {
75
- vector[i] = AttrAsInt32(array, i);
76
- }
77
- return vector;
78
- }
79
-
80
- // Create an InputDescriptor instance from a Napi::Object describing an input image
81
- InputDescriptor* CreateInputDescriptor(Napi::Object input) {
82
- InputDescriptor *descriptor = new InputDescriptor;
83
- if (HasAttr(input, "file")) {
84
- descriptor->file = AttrAsStr(input, "file");
85
- } else if (HasAttr(input, "buffer")) {
86
- Napi::Buffer<char> buffer = input.Get("buffer").As<Napi::Buffer<char>>();
87
- descriptor->bufferLength = buffer.Length();
88
- descriptor->buffer = buffer.Data();
89
- descriptor->isBuffer = TRUE;
90
- }
91
- descriptor->failOn = static_cast<VipsFailOn>(
92
- vips_enum_from_nick(nullptr, VIPS_TYPE_FAIL_ON,
93
- AttrAsStr(input, "failOn").data()));
94
- // Density for vector-based input
95
- if (HasAttr(input, "density")) {
96
- descriptor->density = AttrAsDouble(input, "density");
97
- }
98
- // Raw pixel input
99
- if (HasAttr(input, "rawChannels")) {
100
- descriptor->rawDepth = static_cast<VipsBandFormat>(
101
- vips_enum_from_nick(nullptr, VIPS_TYPE_BAND_FORMAT,
102
- AttrAsStr(input, "rawDepth").data()));
103
- descriptor->rawChannels = AttrAsUint32(input, "rawChannels");
104
- descriptor->rawWidth = AttrAsUint32(input, "rawWidth");
105
- descriptor->rawHeight = AttrAsUint32(input, "rawHeight");
106
- descriptor->rawPremultiplied = AttrAsBool(input, "rawPremultiplied");
107
- }
108
- // Multi-page input (GIF, TIFF, PDF)
109
- if (HasAttr(input, "pages")) {
110
- descriptor->pages = AttrAsInt32(input, "pages");
111
- }
112
- if (HasAttr(input, "page")) {
113
- descriptor->page = AttrAsUint32(input, "page");
114
- }
115
- // Multi-level input (OpenSlide)
116
- if (HasAttr(input, "level")) {
117
- descriptor->level = AttrAsUint32(input, "level");
118
- }
119
- // subIFD (OME-TIFF)
120
- if (HasAttr(input, "subifd")) {
121
- descriptor->subifd = AttrAsInt32(input, "subifd");
122
- }
123
- // Create new image
124
- if (HasAttr(input, "createChannels")) {
125
- descriptor->createChannels = AttrAsUint32(input, "createChannels");
126
- descriptor->createWidth = AttrAsUint32(input, "createWidth");
127
- descriptor->createHeight = AttrAsUint32(input, "createHeight");
128
- if (HasAttr(input, "createNoiseType")) {
129
- descriptor->createNoiseType = AttrAsStr(input, "createNoiseType");
130
- descriptor->createNoiseMean = AttrAsDouble(input, "createNoiseMean");
131
- descriptor->createNoiseSigma = AttrAsDouble(input, "createNoiseSigma");
132
- } else {
133
- descriptor->createBackground = AttrAsVectorOfDouble(input, "createBackground");
134
- }
135
- }
136
- // Limit input images to a given number of pixels, where pixels = width * height
137
- descriptor->limitInputPixels = static_cast<uint64_t>(AttrAsInt64(input, "limitInputPixels"));
138
- // Allow switch from random to sequential access
139
- descriptor->access = AttrAsBool(input, "sequentialRead") ? VIPS_ACCESS_SEQUENTIAL : VIPS_ACCESS_RANDOM;
140
- // Remove safety features and allow unlimited SVG/PNG input
141
- descriptor->unlimited = AttrAsBool(input, "unlimited");
142
- return descriptor;
143
- }
144
-
145
- // How many tasks are in the queue?
146
- volatile int counterQueue = 0;
147
-
148
- // How many tasks are being processed?
149
- volatile int counterProcess = 0;
150
-
151
- // Filename extension checkers
152
- static bool EndsWith(std::string const &str, std::string const &end) {
153
- return str.length() >= end.length() && 0 == str.compare(str.length() - end.length(), end.length(), end);
154
- }
155
- bool IsJpeg(std::string const &str) {
156
- return EndsWith(str, ".jpg") || EndsWith(str, ".jpeg") || EndsWith(str, ".JPG") || EndsWith(str, ".JPEG");
157
- }
158
- bool IsPng(std::string const &str) {
159
- return EndsWith(str, ".png") || EndsWith(str, ".PNG");
160
- }
161
- bool IsWebp(std::string const &str) {
162
- return EndsWith(str, ".webp") || EndsWith(str, ".WEBP");
163
- }
164
- bool IsGif(std::string const &str) {
165
- return EndsWith(str, ".gif") || EndsWith(str, ".GIF");
166
- }
167
- bool IsJp2(std::string const &str) {
168
- return EndsWith(str, ".jp2") || EndsWith(str, ".jpx") || EndsWith(str, ".j2k") || EndsWith(str, ".j2c")
169
- || EndsWith(str, ".JP2") || EndsWith(str, ".JPX") || EndsWith(str, ".J2K") || EndsWith(str, ".J2C");
170
- }
171
- bool IsTiff(std::string const &str) {
172
- return EndsWith(str, ".tif") || EndsWith(str, ".tiff") || EndsWith(str, ".TIF") || EndsWith(str, ".TIFF");
173
- }
174
- bool IsHeic(std::string const &str) {
175
- return EndsWith(str, ".heic") || EndsWith(str, ".HEIC");
176
- }
177
- bool IsHeif(std::string const &str) {
178
- return EndsWith(str, ".heif") || EndsWith(str, ".HEIF") || IsHeic(str) || IsAvif(str);
179
- }
180
- bool IsAvif(std::string const &str) {
181
- return EndsWith(str, ".avif") || EndsWith(str, ".AVIF");
182
- }
183
- bool IsDz(std::string const &str) {
184
- return EndsWith(str, ".dzi") || EndsWith(str, ".DZI");
185
- }
186
- bool IsDzZip(std::string const &str) {
187
- return EndsWith(str, ".zip") || EndsWith(str, ".ZIP") || EndsWith(str, ".szi") || EndsWith(str, ".SZI");
188
- }
189
- bool IsV(std::string const &str) {
190
- return EndsWith(str, ".v") || EndsWith(str, ".V") || EndsWith(str, ".vips") || EndsWith(str, ".VIPS");
191
- }
192
-
193
- /*
194
- Provide a string identifier for the given image type.
195
- */
196
- std::string ImageTypeId(ImageType const imageType) {
197
- std::string id;
198
- switch (imageType) {
199
- case ImageType::JPEG: id = "jpeg"; break;
200
- case ImageType::PNG: id = "png"; break;
201
- case ImageType::WEBP: id = "webp"; break;
202
- case ImageType::TIFF: id = "tiff"; break;
203
- case ImageType::GIF: id = "gif"; break;
204
- case ImageType::JP2: id = "jp2"; break;
205
- case ImageType::SVG: id = "svg"; break;
206
- case ImageType::HEIF: id = "heif"; break;
207
- case ImageType::PDF: id = "pdf"; break;
208
- case ImageType::MAGICK: id = "magick"; break;
209
- case ImageType::OPENSLIDE: id = "openslide"; break;
210
- case ImageType::PPM: id = "ppm"; break;
211
- case ImageType::FITS: id = "fits"; break;
212
- case ImageType::EXR: id = "exr"; break;
213
- case ImageType::VIPS: id = "vips"; break;
214
- case ImageType::RAW: id = "raw"; break;
215
- case ImageType::UNKNOWN: id = "unknown"; break;
216
- case ImageType::MISSING: id = "missing"; break;
217
- }
218
- return id;
219
- }
220
-
221
- /**
222
- * Regenerate this table with something like:
223
- *
224
- * $ vips -l foreign | grep -i load | awk '{ print $2, $1; }'
225
- *
226
- * Plus a bit of editing.
227
- */
228
- std::map<std::string, ImageType> loaderToType = {
229
- { "VipsForeignLoadJpegFile", ImageType::JPEG },
230
- { "VipsForeignLoadJpegBuffer", ImageType::JPEG },
231
- { "VipsForeignLoadPngFile", ImageType::PNG },
232
- { "VipsForeignLoadPngBuffer", ImageType::PNG },
233
- { "VipsForeignLoadWebpFile", ImageType::WEBP },
234
- { "VipsForeignLoadWebpBuffer", ImageType::WEBP },
235
- { "VipsForeignLoadTiffFile", ImageType::TIFF },
236
- { "VipsForeignLoadTiffBuffer", ImageType::TIFF },
237
- { "VipsForeignLoadGifFile", ImageType::GIF },
238
- { "VipsForeignLoadGifBuffer", ImageType::GIF },
239
- { "VipsForeignLoadNsgifFile", ImageType::GIF },
240
- { "VipsForeignLoadNsgifBuffer", ImageType::GIF },
241
- { "VipsForeignLoadJp2kBuffer", ImageType::JP2 },
242
- { "VipsForeignLoadJp2kFile", ImageType::JP2 },
243
- { "VipsForeignLoadSvgFile", ImageType::SVG },
244
- { "VipsForeignLoadSvgBuffer", ImageType::SVG },
245
- { "VipsForeignLoadHeifFile", ImageType::HEIF },
246
- { "VipsForeignLoadHeifBuffer", ImageType::HEIF },
247
- { "VipsForeignLoadPdfFile", ImageType::PDF },
248
- { "VipsForeignLoadPdfBuffer", ImageType::PDF },
249
- { "VipsForeignLoadMagickFile", ImageType::MAGICK },
250
- { "VipsForeignLoadMagickBuffer", ImageType::MAGICK },
251
- { "VipsForeignLoadMagick7File", ImageType::MAGICK },
252
- { "VipsForeignLoadMagick7Buffer", ImageType::MAGICK },
253
- { "VipsForeignLoadOpenslide", ImageType::OPENSLIDE },
254
- { "VipsForeignLoadPpmFile", ImageType::PPM },
255
- { "VipsForeignLoadFits", ImageType::FITS },
256
- { "VipsForeignLoadOpenexr", ImageType::EXR },
257
- { "VipsForeignLoadVips", ImageType::VIPS },
258
- { "VipsForeignLoadVipsFile", ImageType::VIPS },
259
- { "VipsForeignLoadRaw", ImageType::RAW }
260
- };
261
-
262
- /*
263
- Determine image format of a buffer.
264
- */
265
- ImageType DetermineImageType(void *buffer, size_t const length) {
266
- ImageType imageType = ImageType::UNKNOWN;
267
- char const *load = vips_foreign_find_load_buffer(buffer, length);
268
- if (load != nullptr) {
269
- auto it = loaderToType.find(load);
270
- if (it != loaderToType.end()) {
271
- imageType = it->second;
272
- }
273
- }
274
- return imageType;
275
- }
276
-
277
- /*
278
- Determine image format, reads the first few bytes of the file
279
- */
280
- ImageType DetermineImageType(char const *file) {
281
- ImageType imageType = ImageType::UNKNOWN;
282
- char const *load = vips_foreign_find_load(file);
283
- if (load != nullptr) {
284
- auto it = loaderToType.find(load);
285
- if (it != loaderToType.end()) {
286
- imageType = it->second;
287
- }
288
- } else {
289
- if (EndsWith(vips::VError().what(), " does not exist\n")) {
290
- imageType = ImageType::MISSING;
291
- }
292
- }
293
- return imageType;
294
- }
295
-
296
- /*
297
- Does this image type support multiple pages?
298
- */
299
- bool ImageTypeSupportsPage(ImageType imageType) {
300
- return
301
- imageType == ImageType::WEBP ||
302
- imageType == ImageType::MAGICK ||
303
- imageType == ImageType::GIF ||
304
- imageType == ImageType::JP2 ||
305
- imageType == ImageType::TIFF ||
306
- imageType == ImageType::HEIF ||
307
- imageType == ImageType::PDF;
308
- }
309
-
310
- /*
311
- Open an image from the given InputDescriptor (filesystem, compressed buffer, raw pixel data)
312
- */
313
- std::tuple<VImage, ImageType> OpenInput(InputDescriptor *descriptor) {
314
- VImage image;
315
- ImageType imageType;
316
- if (descriptor->isBuffer) {
317
- if (descriptor->rawChannels > 0) {
318
- // Raw, uncompressed pixel data
319
- image = VImage::new_from_memory(descriptor->buffer, descriptor->bufferLength,
320
- descriptor->rawWidth, descriptor->rawHeight, descriptor->rawChannels, descriptor->rawDepth);
321
- if (descriptor->rawChannels < 3) {
322
- image.get_image()->Type = VIPS_INTERPRETATION_B_W;
323
- } else {
324
- image.get_image()->Type = VIPS_INTERPRETATION_sRGB;
325
- }
326
- if (descriptor->rawPremultiplied) {
327
- image = image.unpremultiply();
328
- }
329
- imageType = ImageType::RAW;
330
- } else {
331
- // Compressed data
332
- imageType = DetermineImageType(descriptor->buffer, descriptor->bufferLength);
333
- if (imageType != ImageType::UNKNOWN) {
334
- try {
335
- vips::VOption *option = VImage::option()
336
- ->set("access", descriptor->access)
337
- ->set("fail_on", descriptor->failOn);
338
- if (descriptor->unlimited && (imageType == ImageType::SVG || imageType == ImageType::PNG)) {
339
- option->set("unlimited", TRUE);
340
- }
341
- if (imageType == ImageType::SVG || imageType == ImageType::PDF) {
342
- option->set("dpi", descriptor->density);
343
- }
344
- if (imageType == ImageType::MAGICK) {
345
- option->set("density", std::to_string(descriptor->density).data());
346
- }
347
- if (ImageTypeSupportsPage(imageType)) {
348
- option->set("n", descriptor->pages);
349
- option->set("page", descriptor->page);
350
- }
351
- if (imageType == ImageType::OPENSLIDE) {
352
- option->set("level", descriptor->level);
353
- }
354
- if (imageType == ImageType::TIFF) {
355
- option->set("subifd", descriptor->subifd);
356
- }
357
- image = VImage::new_from_buffer(descriptor->buffer, descriptor->bufferLength, nullptr, option);
358
- if (imageType == ImageType::SVG || imageType == ImageType::PDF || imageType == ImageType::MAGICK) {
359
- image = SetDensity(image, descriptor->density);
360
- }
361
- } catch (vips::VError const &err) {
362
- throw vips::VError(std::string("Input buffer has corrupt header: ") + err.what());
363
- }
364
- } else {
365
- throw vips::VError("Input buffer contains unsupported image format");
366
- }
367
- }
368
- } else {
369
- if (descriptor->createChannels > 0) {
370
- // Create new image
371
- if (descriptor->createNoiseType == "gaussian") {
372
- int const channels = descriptor->createChannels;
373
- image = VImage::new_matrix(descriptor->createWidth, descriptor->createHeight);
374
- std::vector<VImage> bands = {};
375
- bands.reserve(channels);
376
- for (int _band = 0; _band < channels; _band++) {
377
- bands.push_back(image.gaussnoise(
378
- descriptor->createWidth,
379
- descriptor->createHeight,
380
- VImage::option()->set("mean", descriptor->createNoiseMean)->set("sigma", descriptor->createNoiseSigma)));
381
- }
382
- image = image.bandjoin(bands);
383
- } else {
384
- std::vector<double> background = {
385
- descriptor->createBackground[0],
386
- descriptor->createBackground[1],
387
- descriptor->createBackground[2]
388
- };
389
- if (descriptor->createChannels == 4) {
390
- background.push_back(descriptor->createBackground[3]);
391
- }
392
- image = VImage::new_matrix(descriptor->createWidth, descriptor->createHeight).new_from_image(background);
393
- }
394
- image.get_image()->Type = image.guess_interpretation();
395
- image = image.cast(VIPS_FORMAT_UCHAR);
396
- imageType = ImageType::RAW;
397
- } else {
398
- // From filesystem
399
- imageType = DetermineImageType(descriptor->file.data());
400
- if (imageType == ImageType::MISSING) {
401
- if (descriptor->file.find("<svg") != std::string::npos) {
402
- throw vips::VError("Input file is missing, did you mean "
403
- "sharp(Buffer.from('" + descriptor->file.substr(0, 8) + "...')?");
404
- }
405
- throw vips::VError("Input file is missing: " + descriptor->file);
406
- }
407
- if (imageType != ImageType::UNKNOWN) {
408
- try {
409
- vips::VOption *option = VImage::option()
410
- ->set("access", descriptor->access)
411
- ->set("fail_on", descriptor->failOn);
412
- if (descriptor->unlimited && (imageType == ImageType::SVG || imageType == ImageType::PNG)) {
413
- option->set("unlimited", TRUE);
414
- }
415
- if (imageType == ImageType::SVG || imageType == ImageType::PDF) {
416
- option->set("dpi", descriptor->density);
417
- }
418
- if (imageType == ImageType::MAGICK) {
419
- option->set("density", std::to_string(descriptor->density).data());
420
- }
421
- if (ImageTypeSupportsPage(imageType)) {
422
- option->set("n", descriptor->pages);
423
- option->set("page", descriptor->page);
424
- }
425
- if (imageType == ImageType::OPENSLIDE) {
426
- option->set("level", descriptor->level);
427
- }
428
- if (imageType == ImageType::TIFF) {
429
- option->set("subifd", descriptor->subifd);
430
- }
431
- image = VImage::new_from_file(descriptor->file.data(), option);
432
- if (imageType == ImageType::SVG || imageType == ImageType::PDF || imageType == ImageType::MAGICK) {
433
- image = SetDensity(image, descriptor->density);
434
- }
435
- } catch (vips::VError const &err) {
436
- throw vips::VError(std::string("Input file has corrupt header: ") + err.what());
437
- }
438
- } else {
439
- throw vips::VError("Input file contains unsupported image format");
440
- }
441
- }
442
- }
443
- // Limit input images to a given number of pixels, where pixels = width * height
444
- if (descriptor->limitInputPixels > 0 &&
445
- static_cast<uint64_t>(image.width() * image.height()) > descriptor->limitInputPixels) {
446
- throw vips::VError("Input image exceeds pixel limit");
447
- }
448
- return std::make_tuple(image, imageType);
449
- }
450
-
451
- /*
452
- Does this image have an embedded profile?
453
- */
454
- bool HasProfile(VImage image) {
455
- return (image.get_typeof(VIPS_META_ICC_NAME) != 0) ? TRUE : FALSE;
456
- }
457
-
458
- /*
459
- Does this image have an alpha channel?
460
- Uses colour space interpretation with number of channels to guess this.
461
- */
462
- bool HasAlpha(VImage image) {
463
- return image.has_alpha();
464
- }
465
-
466
- /*
467
- Get EXIF Orientation of image, if any.
468
- */
469
- int ExifOrientation(VImage image) {
470
- int orientation = 0;
471
- if (image.get_typeof(VIPS_META_ORIENTATION) != 0) {
472
- orientation = image.get_int(VIPS_META_ORIENTATION);
473
- }
474
- return orientation;
475
- }
476
-
477
- /*
478
- Set EXIF Orientation of image.
479
- */
480
- VImage SetExifOrientation(VImage image, int const orientation) {
481
- VImage copy = image.copy();
482
- copy.set(VIPS_META_ORIENTATION, orientation);
483
- return copy;
484
- }
485
-
486
- /*
487
- Remove EXIF Orientation from image.
488
- */
489
- VImage RemoveExifOrientation(VImage image) {
490
- VImage copy = image.copy();
491
- copy.remove(VIPS_META_ORIENTATION);
492
- return copy;
493
- }
494
-
495
- /*
496
- Set animation properties if necessary.
497
- */
498
- VImage SetAnimationProperties(VImage image, int nPages, int pageHeight, std::vector<int> delay, int loop) {
499
- bool hasDelay = !delay.empty();
500
-
501
- // Avoid a copy if none of the animation properties are needed.
502
- if (nPages == 1 && !hasDelay && loop == -1) return image;
503
-
504
- if (delay.size() == 1) {
505
- // We have just one delay, repeat that value for all frames.
506
- delay.insert(delay.end(), nPages - 1, delay[0]);
507
- }
508
-
509
- // Attaching metadata, need to copy the image.
510
- VImage copy = image.copy();
511
-
512
- // Only set page-height if we have more than one page, or this could
513
- // accidentally turn into an animated image later.
514
- if (nPages > 1) copy.set(VIPS_META_PAGE_HEIGHT, pageHeight);
515
- if (hasDelay) copy.set("delay", delay);
516
- if (loop != -1) copy.set("loop", loop);
517
-
518
- return copy;
519
- }
520
-
521
- /*
522
- Remove animation properties from image.
523
- */
524
- VImage RemoveAnimationProperties(VImage image) {
525
- VImage copy = image.copy();
526
- copy.remove(VIPS_META_PAGE_HEIGHT);
527
- copy.remove("delay");
528
- copy.remove("loop");
529
- return copy;
530
- }
531
-
532
- /*
533
- Does this image have a non-default density?
534
- */
535
- bool HasDensity(VImage image) {
536
- return image.xres() > 1.0;
537
- }
538
-
539
- /*
540
- Get pixels/mm resolution as pixels/inch density.
541
- */
542
- int GetDensity(VImage image) {
543
- return static_cast<int>(round(image.xres() * 25.4));
544
- }
545
-
546
- /*
547
- Set pixels/mm resolution based on a pixels/inch density.
548
- */
549
- VImage SetDensity(VImage image, const double density) {
550
- const double pixelsPerMm = density / 25.4;
551
- VImage copy = image.copy();
552
- copy.get_image()->Xres = pixelsPerMm;
553
- copy.get_image()->Yres = pixelsPerMm;
554
- return copy;
555
- }
556
-
557
- /*
558
- Multi-page images can have a page height. Fetch it, and sanity check it.
559
- If page-height is not set, it defaults to the image height
560
- */
561
- int GetPageHeight(VImage image) {
562
- return vips_image_get_page_height(image.get_image());
563
- }
564
-
565
- /*
566
- Check the proposed format supports the current dimensions.
567
- */
568
- void AssertImageTypeDimensions(VImage image, ImageType const imageType) {
569
- const int height = image.get_typeof(VIPS_META_PAGE_HEIGHT) == G_TYPE_INT
570
- ? image.get_int(VIPS_META_PAGE_HEIGHT)
571
- : image.height();
572
- if (imageType == ImageType::JPEG) {
573
- if (image.width() > 65535 || height > 65535) {
574
- throw vips::VError("Processed image is too large for the JPEG format");
575
- }
576
- } else if (imageType == ImageType::WEBP) {
577
- if (image.width() > 16383 || height > 16383) {
578
- throw vips::VError("Processed image is too large for the WebP format");
579
- }
580
- } else if (imageType == ImageType::GIF) {
581
- if (image.width() > 65535 || height > 65535) {
582
- throw vips::VError("Processed image is too large for the GIF format");
583
- }
584
- }
585
- }
586
-
587
- /*
588
- Called when a Buffer undergoes GC, required to support mixed runtime libraries in Windows
589
- */
590
- std::function<void(void*, char*)> FreeCallback = [](void*, char* data) {
591
- g_free(data);
592
- };
593
-
594
- /*
595
- Temporary buffer of warnings
596
- */
597
- std::queue<std::string> vipsWarnings;
598
- std::mutex vipsWarningsMutex;
599
-
600
- /*
601
- Called with warnings from the glib-registered "VIPS" domain
602
- */
603
- void VipsWarningCallback(char const* log_domain, GLogLevelFlags log_level, char const* message, void* ignore) {
604
- std::lock_guard<std::mutex> lock(vipsWarningsMutex);
605
- vipsWarnings.emplace(message);
606
- }
607
-
608
- /*
609
- Pop the oldest warning message from the queue
610
- */
611
- std::string VipsWarningPop() {
612
- std::string warning;
613
- std::lock_guard<std::mutex> lock(vipsWarningsMutex);
614
- if (!vipsWarnings.empty()) {
615
- warning = vipsWarnings.front();
616
- vipsWarnings.pop();
617
- }
618
- return warning;
619
- }
620
-
621
- /*
622
- Attach an event listener for progress updates, used to detect timeout
623
- */
624
- void SetTimeout(VImage image, int const seconds) {
625
- if (seconds > 0) {
626
- VipsImage *im = image.get_image();
627
- if (im->progress_signal == NULL) {
628
- int *timeout = VIPS_NEW(im, int);
629
- *timeout = seconds;
630
- g_signal_connect(im, "eval", G_CALLBACK(VipsProgressCallBack), timeout);
631
- vips_image_set_progress(im, TRUE);
632
- }
633
- }
634
- }
635
-
636
- /*
637
- Event listener for progress updates, used to detect timeout
638
- */
639
- void VipsProgressCallBack(VipsImage *im, VipsProgress *progress, int *timeout) {
640
- // printf("VipsProgressCallBack progress=%d run=%d timeout=%d\n", progress->percent, progress->run, *timeout);
641
- if (*timeout > 0 && progress->run >= *timeout) {
642
- vips_image_set_kill(im, TRUE);
643
- vips_error("timeout", "%d%% complete", progress->percent);
644
- *timeout = 0;
645
- }
646
- }
647
-
648
- /*
649
- Calculate the (left, top) coordinates of the output image
650
- within the input image, applying the given gravity during an embed.
651
-
652
- @Azurebyte: We are basically swapping the inWidth and outWidth, inHeight and outHeight from the CalculateCrop function.
653
- */
654
- std::tuple<int, int> CalculateEmbedPosition(int const inWidth, int const inHeight,
655
- int const outWidth, int const outHeight, int const gravity) {
656
-
657
- int left = 0;
658
- int top = 0;
659
- switch (gravity) {
660
- case 1:
661
- // North
662
- left = (outWidth - inWidth) / 2;
663
- break;
664
- case 2:
665
- // East
666
- left = outWidth - inWidth;
667
- top = (outHeight - inHeight) / 2;
668
- break;
669
- case 3:
670
- // South
671
- left = (outWidth - inWidth) / 2;
672
- top = outHeight - inHeight;
673
- break;
674
- case 4:
675
- // West
676
- top = (outHeight - inHeight) / 2;
677
- break;
678
- case 5:
679
- // Northeast
680
- left = outWidth - inWidth;
681
- break;
682
- case 6:
683
- // Southeast
684
- left = outWidth - inWidth;
685
- top = outHeight - inHeight;
686
- break;
687
- case 7:
688
- // Southwest
689
- top = outHeight - inHeight;
690
- break;
691
- case 8:
692
- // Northwest
693
- // Which is the default is 0,0 so we do not assign anything here.
694
- break;
695
- default:
696
- // Centre
697
- left = (outWidth - inWidth) / 2;
698
- top = (outHeight - inHeight) / 2;
699
- }
700
- return std::make_tuple(left, top);
701
- }
702
-
703
- /*
704
- Calculate the (left, top) coordinates of the output image
705
- within the input image, applying the given gravity during a crop.
706
- */
707
- std::tuple<int, int> CalculateCrop(int const inWidth, int const inHeight,
708
- int const outWidth, int const outHeight, int const gravity) {
709
-
710
- int left = 0;
711
- int top = 0;
712
- switch (gravity) {
713
- case 1:
714
- // North
715
- left = (inWidth - outWidth + 1) / 2;
716
- break;
717
- case 2:
718
- // East
719
- left = inWidth - outWidth;
720
- top = (inHeight - outHeight + 1) / 2;
721
- break;
722
- case 3:
723
- // South
724
- left = (inWidth - outWidth + 1) / 2;
725
- top = inHeight - outHeight;
726
- break;
727
- case 4:
728
- // West
729
- top = (inHeight - outHeight + 1) / 2;
730
- break;
731
- case 5:
732
- // Northeast
733
- left = inWidth - outWidth;
734
- break;
735
- case 6:
736
- // Southeast
737
- left = inWidth - outWidth;
738
- top = inHeight - outHeight;
739
- break;
740
- case 7:
741
- // Southwest
742
- top = inHeight - outHeight;
743
- break;
744
- case 8:
745
- // Northwest
746
- break;
747
- default:
748
- // Centre
749
- left = (inWidth - outWidth + 1) / 2;
750
- top = (inHeight - outHeight + 1) / 2;
751
- }
752
- return std::make_tuple(left, top);
753
- }
754
-
755
- /*
756
- Calculate the (left, top) coordinates of the output image
757
- within the input image, applying the given x and y offsets.
758
- */
759
- std::tuple<int, int> CalculateCrop(int const inWidth, int const inHeight,
760
- int const outWidth, int const outHeight, int const x, int const y) {
761
-
762
- // default values
763
- int left = 0;
764
- int top = 0;
765
-
766
- // assign only if valid
767
- if (x < (inWidth - outWidth)) {
768
- left = x;
769
- } else if (x >= (inWidth - outWidth)) {
770
- left = inWidth - outWidth;
771
- }
772
-
773
- if (y < (inHeight - outHeight)) {
774
- top = y;
775
- } else if (y >= (inHeight - outHeight)) {
776
- top = inHeight - outHeight;
777
- }
778
-
779
- return std::make_tuple(left, top);
780
- }
781
-
782
- /*
783
- Are pixel values in this image 16-bit integer?
784
- */
785
- bool Is16Bit(VipsInterpretation const interpretation) {
786
- return interpretation == VIPS_INTERPRETATION_RGB16 || interpretation == VIPS_INTERPRETATION_GREY16;
787
- }
788
-
789
- /*
790
- Return the image alpha maximum. Useful for combining alpha bands. scRGB
791
- images are 0 - 1 for image data, but the alpha is 0 - 255.
792
- */
793
- double MaximumImageAlpha(VipsInterpretation const interpretation) {
794
- return Is16Bit(interpretation) ? 65535.0 : 255.0;
795
- }
796
-
797
- /*
798
- Get boolean operation type from string
799
- */
800
- VipsOperationBoolean GetBooleanOperation(std::string const opStr) {
801
- return static_cast<VipsOperationBoolean>(
802
- vips_enum_from_nick(nullptr, VIPS_TYPE_OPERATION_BOOLEAN, opStr.data()));
803
- }
804
-
805
- /*
806
- Get interpretation type from string
807
- */
808
- VipsInterpretation GetInterpretation(std::string const typeStr) {
809
- return static_cast<VipsInterpretation>(
810
- vips_enum_from_nick(nullptr, VIPS_TYPE_INTERPRETATION, typeStr.data()));
811
- }
812
-
813
- /*
814
- Convert RGBA value to another colourspace
815
- */
816
- std::vector<double> GetRgbaAsColourspace(std::vector<double> const rgba,
817
- VipsInterpretation const interpretation, bool premultiply) {
818
- int const bands = static_cast<int>(rgba.size());
819
- if (bands < 3) {
820
- return rgba;
821
- }
822
- VImage pixel = VImage::new_matrix(1, 1);
823
- pixel.set("bands", bands);
824
- pixel = pixel
825
- .new_from_image(rgba)
826
- .colourspace(interpretation, VImage::option()->set("source_space", VIPS_INTERPRETATION_sRGB));
827
- if (premultiply) {
828
- pixel = pixel.premultiply();
829
- }
830
- return pixel(0, 0);
831
- }
832
-
833
- /*
834
- Apply the alpha channel to a given colour
835
- */
836
- std::tuple<VImage, std::vector<double>> ApplyAlpha(VImage image, std::vector<double> colour, bool premultiply) {
837
- // Scale up 8-bit values to match 16-bit input image
838
- double const multiplier = sharp::Is16Bit(image.interpretation()) ? 256.0 : 1.0;
839
- // Create alphaColour colour
840
- std::vector<double> alphaColour;
841
- if (image.bands() > 2) {
842
- alphaColour = {
843
- multiplier * colour[0],
844
- multiplier * colour[1],
845
- multiplier * colour[2]
846
- };
847
- } else {
848
- // Convert sRGB to greyscale
849
- alphaColour = { multiplier * (
850
- 0.2126 * colour[0] +
851
- 0.7152 * colour[1] +
852
- 0.0722 * colour[2])
853
- };
854
- }
855
- // Add alpha channel to alphaColour colour
856
- if (colour[3] < 255.0 || HasAlpha(image)) {
857
- alphaColour.push_back(colour[3] * multiplier);
858
- }
859
- // Ensure alphaColour colour uses correct colourspace
860
- alphaColour = sharp::GetRgbaAsColourspace(alphaColour, image.interpretation(), premultiply);
861
- // Add non-transparent alpha channel, if required
862
- if (colour[3] < 255.0 && !HasAlpha(image)) {
863
- image = image.bandjoin(
864
- VImage::new_matrix(image.width(), image.height()).new_from_image(255 * multiplier));
865
- }
866
- return std::make_tuple(image, alphaColour);
867
- }
868
-
869
- /*
870
- Removes alpha channel, if any.
871
- */
872
- VImage RemoveAlpha(VImage image) {
873
- if (HasAlpha(image)) {
874
- image = image.extract_band(0, VImage::option()->set("n", image.bands() - 1));
875
- }
876
- return image;
877
- }
878
-
879
- /*
880
- Ensures alpha channel, if missing.
881
- */
882
- VImage EnsureAlpha(VImage image, double const value) {
883
- if (!HasAlpha(image)) {
884
- std::vector<double> alpha;
885
- alpha.push_back(value * sharp::MaximumImageAlpha(image.interpretation()));
886
- image = image.bandjoin_const(alpha);
887
- }
888
- return image;
889
- }
890
-
891
- std::pair<double, double> ResolveShrink(int width, int height, int targetWidth, int targetHeight,
892
- Canvas canvas, bool swap, bool withoutEnlargement, bool withoutReduction) {
893
- if (swap) {
894
- // Swap input width and height when requested.
895
- std::swap(width, height);
896
- }
897
-
898
- double hshrink = 1.0;
899
- double vshrink = 1.0;
900
-
901
- if (targetWidth > 0 && targetHeight > 0) {
902
- // Fixed width and height
903
- hshrink = static_cast<double>(width) / targetWidth;
904
- vshrink = static_cast<double>(height) / targetHeight;
905
-
906
- switch (canvas) {
907
- case Canvas::CROP:
908
- case Canvas::MIN:
909
- if (hshrink < vshrink) {
910
- vshrink = hshrink;
911
- } else {
912
- hshrink = vshrink;
913
- }
914
- break;
915
- case Canvas::EMBED:
916
- case Canvas::MAX:
917
- if (hshrink > vshrink) {
918
- vshrink = hshrink;
919
- } else {
920
- hshrink = vshrink;
921
- }
922
- break;
923
- case Canvas::IGNORE_ASPECT:
924
- if (swap) {
925
- std::swap(hshrink, vshrink);
926
- }
927
- break;
928
- }
929
- } else if (targetWidth > 0) {
930
- // Fixed width
931
- hshrink = static_cast<double>(width) / targetWidth;
932
-
933
- if (canvas != Canvas::IGNORE_ASPECT) {
934
- // Auto height
935
- vshrink = hshrink;
936
- }
937
- } else if (targetHeight > 0) {
938
- // Fixed height
939
- vshrink = static_cast<double>(height) / targetHeight;
940
-
941
- if (canvas != Canvas::IGNORE_ASPECT) {
942
- // Auto width
943
- hshrink = vshrink;
944
- }
945
- }
946
-
947
- // We should not reduce or enlarge the output image, if
948
- // withoutReduction or withoutEnlargement is specified.
949
- if (withoutReduction) {
950
- // Equivalent of VIPS_SIZE_UP
951
- hshrink = std::min(1.0, hshrink);
952
- vshrink = std::min(1.0, vshrink);
953
- } else if (withoutEnlargement) {
954
- // Equivalent of VIPS_SIZE_DOWN
955
- hshrink = std::max(1.0, hshrink);
956
- vshrink = std::max(1.0, vshrink);
957
- }
958
-
959
- // We don't want to shrink so much that we send an axis to 0
960
- hshrink = std::min(hshrink, static_cast<double>(width));
961
- vshrink = std::min(vshrink, static_cast<double>(height));
962
-
963
- return std::make_pair(hshrink, vshrink);
964
- }
965
-
966
- } // namespace sharp