@basemaps/lambda-tiler 6.41.0 → 6.44.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 (474) hide show
  1. package/CHANGELOG.md +31 -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.preview.d.ts +2 -0
  5. package/build/cli/render.preview.d.ts.map +1 -0
  6. package/build/cli/render.preview.js +38 -0
  7. package/build/cli/render.preview.js.map +1 -0
  8. package/build/cli/render.tile.js +25 -10
  9. package/build/cli/render.tile.js.map +1 -1
  10. package/build/index.d.ts.map +1 -1
  11. package/build/index.js +6 -0
  12. package/build/index.js.map +1 -1
  13. package/build/routes/__tests__/preview.index.test.d.ts +2 -0
  14. package/build/routes/__tests__/preview.index.test.d.ts.map +1 -0
  15. package/build/routes/__tests__/preview.index.test.js +82 -0
  16. package/build/routes/__tests__/preview.index.test.js.map +1 -0
  17. package/build/routes/attribution.d.ts.map +1 -1
  18. package/build/routes/attribution.js +1 -3
  19. package/build/routes/attribution.js.map +1 -1
  20. package/build/routes/preview.d.ts +58 -0
  21. package/build/routes/preview.d.ts.map +1 -0
  22. package/build/routes/preview.index.d.ts +23 -0
  23. package/build/routes/preview.index.d.ts.map +1 -0
  24. package/build/routes/preview.index.js +98 -0
  25. package/build/routes/preview.index.js.map +1 -0
  26. package/build/routes/preview.js +159 -0
  27. package/build/routes/preview.js.map +1 -0
  28. package/build/routes/tile.xyz.raster.d.ts +15 -0
  29. package/build/routes/tile.xyz.raster.d.ts.map +1 -1
  30. package/build/routes/tile.xyz.raster.js +45 -26
  31. package/build/routes/tile.xyz.raster.js.map +1 -1
  32. package/build/routes/version.d.ts.map +1 -1
  33. package/build/routes/version.js +17 -1
  34. package/build/routes/version.js.map +1 -1
  35. package/build/util/validate.d.ts +3 -1
  36. package/build/util/validate.d.ts.map +1 -1
  37. package/build/util/validate.js +10 -0
  38. package/build/util/validate.js.map +1 -1
  39. package/bundle.sh +1 -1
  40. package/package.json +9 -9
  41. package/src/__tests__/index.test.ts +20 -5
  42. package/src/cli/render.preview.ts +44 -0
  43. package/src/cli/render.tile.ts +26 -10
  44. package/src/index.ts +7 -0
  45. package/src/routes/__tests__/preview.index.test.ts +94 -0
  46. package/src/routes/attribution.ts +1 -3
  47. package/src/routes/preview.index.ts +119 -0
  48. package/src/routes/preview.ts +234 -0
  49. package/src/routes/tile.xyz.raster.ts +53 -29
  50. package/src/routes/version.ts +17 -1
  51. package/src/util/validate.ts +10 -1
  52. package/tsconfig.tsbuildinfo +1 -1
  53. package/dist/index.js +0 -229
  54. package/dist/node_modules/.package-lock.json +0 -491
  55. package/dist/node_modules/base64-js/LICENSE +0 -21
  56. package/dist/node_modules/base64-js/README.md +0 -34
  57. package/dist/node_modules/base64-js/base64js.min.js +0 -1
  58. package/dist/node_modules/base64-js/index.d.ts +0 -3
  59. package/dist/node_modules/base64-js/index.js +0 -150
  60. package/dist/node_modules/base64-js/package.json +0 -47
  61. package/dist/node_modules/bl/.travis.yml +0 -17
  62. package/dist/node_modules/bl/BufferList.js +0 -396
  63. package/dist/node_modules/bl/LICENSE.md +0 -13
  64. package/dist/node_modules/bl/README.md +0 -247
  65. package/dist/node_modules/bl/bl.js +0 -84
  66. package/dist/node_modules/bl/package.json +0 -37
  67. package/dist/node_modules/bl/test/convert.js +0 -21
  68. package/dist/node_modules/bl/test/indexOf.js +0 -492
  69. package/dist/node_modules/bl/test/isBufferList.js +0 -32
  70. package/dist/node_modules/bl/test/test.js +0 -869
  71. package/dist/node_modules/buffer/AUTHORS.md +0 -70
  72. package/dist/node_modules/buffer/LICENSE +0 -21
  73. package/dist/node_modules/buffer/README.md +0 -410
  74. package/dist/node_modules/buffer/index.d.ts +0 -186
  75. package/dist/node_modules/buffer/index.js +0 -1817
  76. package/dist/node_modules/buffer/package.json +0 -96
  77. package/dist/node_modules/chownr/LICENSE +0 -15
  78. package/dist/node_modules/chownr/README.md +0 -3
  79. package/dist/node_modules/chownr/chownr.js +0 -167
  80. package/dist/node_modules/chownr/package.json +0 -29
  81. package/dist/node_modules/color/LICENSE +0 -21
  82. package/dist/node_modules/color/README.md +0 -123
  83. package/dist/node_modules/color/index.js +0 -496
  84. package/dist/node_modules/color/package.json +0 -47
  85. package/dist/node_modules/color-convert/CHANGELOG.md +0 -54
  86. package/dist/node_modules/color-convert/LICENSE +0 -21
  87. package/dist/node_modules/color-convert/README.md +0 -68
  88. package/dist/node_modules/color-convert/conversions.js +0 -839
  89. package/dist/node_modules/color-convert/index.js +0 -81
  90. package/dist/node_modules/color-convert/package.json +0 -48
  91. package/dist/node_modules/color-convert/route.js +0 -97
  92. package/dist/node_modules/color-name/LICENSE +0 -8
  93. package/dist/node_modules/color-name/README.md +0 -11
  94. package/dist/node_modules/color-name/index.js +0 -152
  95. package/dist/node_modules/color-name/package.json +0 -28
  96. package/dist/node_modules/color-string/LICENSE +0 -21
  97. package/dist/node_modules/color-string/README.md +0 -62
  98. package/dist/node_modules/color-string/index.js +0 -242
  99. package/dist/node_modules/color-string/package.json +0 -39
  100. package/dist/node_modules/decompress-response/index.d.ts +0 -22
  101. package/dist/node_modules/decompress-response/index.js +0 -58
  102. package/dist/node_modules/decompress-response/license +0 -9
  103. package/dist/node_modules/decompress-response/package.json +0 -56
  104. package/dist/node_modules/decompress-response/readme.md +0 -48
  105. package/dist/node_modules/deep-extend/CHANGELOG.md +0 -46
  106. package/dist/node_modules/deep-extend/LICENSE +0 -20
  107. package/dist/node_modules/deep-extend/README.md +0 -91
  108. package/dist/node_modules/deep-extend/index.js +0 -1
  109. package/dist/node_modules/deep-extend/lib/deep-extend.js +0 -150
  110. package/dist/node_modules/deep-extend/package.json +0 -62
  111. package/dist/node_modules/detect-libc/LICENSE +0 -201
  112. package/dist/node_modules/detect-libc/README.md +0 -163
  113. package/dist/node_modules/detect-libc/index.d.ts +0 -14
  114. package/dist/node_modules/detect-libc/lib/detect-libc.js +0 -279
  115. package/dist/node_modules/detect-libc/lib/filesystem.js +0 -41
  116. package/dist/node_modules/detect-libc/lib/process.js +0 -19
  117. package/dist/node_modules/detect-libc/package.json +0 -40
  118. package/dist/node_modules/end-of-stream/LICENSE +0 -21
  119. package/dist/node_modules/end-of-stream/README.md +0 -54
  120. package/dist/node_modules/end-of-stream/index.js +0 -94
  121. package/dist/node_modules/end-of-stream/package.json +0 -37
  122. package/dist/node_modules/expand-template/.travis.yml +0 -6
  123. package/dist/node_modules/expand-template/LICENSE +0 -21
  124. package/dist/node_modules/expand-template/README.md +0 -43
  125. package/dist/node_modules/expand-template/index.js +0 -26
  126. package/dist/node_modules/expand-template/package.json +0 -29
  127. package/dist/node_modules/expand-template/test.js +0 -67
  128. package/dist/node_modules/fs-constants/LICENSE +0 -21
  129. package/dist/node_modules/fs-constants/README.md +0 -26
  130. package/dist/node_modules/fs-constants/browser.js +0 -1
  131. package/dist/node_modules/fs-constants/index.js +0 -1
  132. package/dist/node_modules/fs-constants/package.json +0 -19
  133. package/dist/node_modules/github-from-package/.travis.yml +0 -4
  134. package/dist/node_modules/github-from-package/LICENSE +0 -18
  135. package/dist/node_modules/github-from-package/example/package.json +0 -8
  136. package/dist/node_modules/github-from-package/example/url.js +0 -3
  137. package/dist/node_modules/github-from-package/index.js +0 -17
  138. package/dist/node_modules/github-from-package/package.json +0 -30
  139. package/dist/node_modules/github-from-package/readme.markdown +0 -53
  140. package/dist/node_modules/github-from-package/test/a.json +0 -8
  141. package/dist/node_modules/github-from-package/test/b.json +0 -5
  142. package/dist/node_modules/github-from-package/test/c.json +0 -5
  143. package/dist/node_modules/github-from-package/test/d.json +0 -7
  144. package/dist/node_modules/github-from-package/test/e.json +0 -5
  145. package/dist/node_modules/github-from-package/test/url.js +0 -19
  146. package/dist/node_modules/ieee754/LICENSE +0 -11
  147. package/dist/node_modules/ieee754/README.md +0 -51
  148. package/dist/node_modules/ieee754/index.d.ts +0 -10
  149. package/dist/node_modules/ieee754/index.js +0 -85
  150. package/dist/node_modules/ieee754/package.json +0 -52
  151. package/dist/node_modules/inherits/LICENSE +0 -16
  152. package/dist/node_modules/inherits/README.md +0 -42
  153. package/dist/node_modules/inherits/inherits.js +0 -9
  154. package/dist/node_modules/inherits/inherits_browser.js +0 -27
  155. package/dist/node_modules/inherits/package.json +0 -29
  156. package/dist/node_modules/ini/LICENSE +0 -15
  157. package/dist/node_modules/ini/README.md +0 -102
  158. package/dist/node_modules/ini/ini.js +0 -206
  159. package/dist/node_modules/ini/package.json +0 -33
  160. package/dist/node_modules/is-arrayish/LICENSE +0 -21
  161. package/dist/node_modules/is-arrayish/README.md +0 -16
  162. package/dist/node_modules/is-arrayish/index.js +0 -9
  163. package/dist/node_modules/is-arrayish/package.json +0 -45
  164. package/dist/node_modules/is-arrayish/yarn-error.log +0 -1443
  165. package/dist/node_modules/lru-cache/LICENSE +0 -15
  166. package/dist/node_modules/lru-cache/README.md +0 -166
  167. package/dist/node_modules/lru-cache/index.js +0 -334
  168. package/dist/node_modules/lru-cache/package.json +0 -34
  169. package/dist/node_modules/mimic-response/index.d.ts +0 -17
  170. package/dist/node_modules/mimic-response/index.js +0 -77
  171. package/dist/node_modules/mimic-response/license +0 -9
  172. package/dist/node_modules/mimic-response/package.json +0 -42
  173. package/dist/node_modules/mimic-response/readme.md +0 -78
  174. package/dist/node_modules/minimist/.eslintrc +0 -29
  175. package/dist/node_modules/minimist/.github/FUNDING.yml +0 -12
  176. package/dist/node_modules/minimist/.nycrc +0 -14
  177. package/dist/node_modules/minimist/CHANGELOG.md +0 -298
  178. package/dist/node_modules/minimist/LICENSE +0 -18
  179. package/dist/node_modules/minimist/README.md +0 -121
  180. package/dist/node_modules/minimist/example/parse.js +0 -4
  181. package/dist/node_modules/minimist/index.js +0 -263
  182. package/dist/node_modules/minimist/package.json +0 -75
  183. package/dist/node_modules/minimist/test/all_bool.js +0 -34
  184. package/dist/node_modules/minimist/test/bool.js +0 -177
  185. package/dist/node_modules/minimist/test/dash.js +0 -43
  186. package/dist/node_modules/minimist/test/default_bool.js +0 -37
  187. package/dist/node_modules/minimist/test/dotted.js +0 -24
  188. package/dist/node_modules/minimist/test/kv_short.js +0 -32
  189. package/dist/node_modules/minimist/test/long.js +0 -33
  190. package/dist/node_modules/minimist/test/num.js +0 -38
  191. package/dist/node_modules/minimist/test/parse.js +0 -209
  192. package/dist/node_modules/minimist/test/parse_modified.js +0 -11
  193. package/dist/node_modules/minimist/test/proto.js +0 -64
  194. package/dist/node_modules/minimist/test/short.js +0 -69
  195. package/dist/node_modules/minimist/test/stop_early.js +0 -17
  196. package/dist/node_modules/minimist/test/unknown.js +0 -104
  197. package/dist/node_modules/minimist/test/whitespace.js +0 -10
  198. package/dist/node_modules/mkdirp-classic/LICENSE +0 -21
  199. package/dist/node_modules/mkdirp-classic/README.md +0 -18
  200. package/dist/node_modules/mkdirp-classic/index.js +0 -98
  201. package/dist/node_modules/mkdirp-classic/package.json +0 -18
  202. package/dist/node_modules/napi-build-utils/LICENSE +0 -21
  203. package/dist/node_modules/napi-build-utils/README.md +0 -48
  204. package/dist/node_modules/napi-build-utils/index.js +0 -213
  205. package/dist/node_modules/napi-build-utils/index.md +0 -81
  206. package/dist/node_modules/napi-build-utils/package.json +0 -41
  207. package/dist/node_modules/node-abi/.circleci/config.yml +0 -45
  208. package/dist/node_modules/node-abi/.github/CODEOWNERS +0 -1
  209. package/dist/node_modules/node-abi/.github/workflows/semantic.yml +0 -26
  210. package/dist/node_modules/node-abi/.github/workflows/update-abi.yml +0 -42
  211. package/dist/node_modules/node-abi/.releaserc.json +0 -9
  212. package/dist/node_modules/node-abi/CODE_OF_CONDUCT.md +0 -73
  213. package/dist/node_modules/node-abi/CONTRIBUTING.md +0 -62
  214. package/dist/node_modules/node-abi/LICENSE +0 -21
  215. package/dist/node_modules/node-abi/README.md +0 -52
  216. package/dist/node_modules/node-abi/abi_registry.json +0 -269
  217. package/dist/node_modules/node-abi/index.js +0 -179
  218. package/dist/node_modules/node-abi/package.json +0 -38
  219. package/dist/node_modules/node-abi/scripts/update-abi-registry.js +0 -119
  220. package/dist/node_modules/node-abi/test/index.js +0 -166
  221. package/dist/node_modules/node-addon-api/LICENSE.md +0 -13
  222. package/dist/node_modules/node-addon-api/README.md +0 -317
  223. package/dist/node_modules/node-addon-api/common.gypi +0 -21
  224. package/dist/node_modules/node-addon-api/except.gypi +0 -25
  225. package/dist/node_modules/node-addon-api/index.js +0 -11
  226. package/dist/node_modules/node-addon-api/napi-inl.deprecated.h +0 -186
  227. package/dist/node_modules/node-addon-api/napi-inl.h +0 -6303
  228. package/dist/node_modules/node-addon-api/napi.h +0 -3114
  229. package/dist/node_modules/node-addon-api/node_api.gyp +0 -9
  230. package/dist/node_modules/node-addon-api/noexcept.gypi +0 -26
  231. package/dist/node_modules/node-addon-api/nothing.c +0 -0
  232. package/dist/node_modules/node-addon-api/package-support.json +0 -21
  233. package/dist/node_modules/node-addon-api/package.json +0 -456
  234. package/dist/node_modules/node-addon-api/tools/README.md +0 -73
  235. package/dist/node_modules/node-addon-api/tools/check-napi.js +0 -99
  236. package/dist/node_modules/node-addon-api/tools/clang-format.js +0 -71
  237. package/dist/node_modules/node-addon-api/tools/conversion.js +0 -301
  238. package/dist/node_modules/node-addon-api/tools/eslint-format.js +0 -79
  239. package/dist/node_modules/once/LICENSE +0 -15
  240. package/dist/node_modules/once/README.md +0 -79
  241. package/dist/node_modules/once/once.js +0 -42
  242. package/dist/node_modules/once/package.json +0 -33
  243. package/dist/node_modules/prebuild-install/CHANGELOG.md +0 -116
  244. package/dist/node_modules/prebuild-install/CONTRIBUTING.md +0 -6
  245. package/dist/node_modules/prebuild-install/LICENSE +0 -21
  246. package/dist/node_modules/prebuild-install/README.md +0 -163
  247. package/dist/node_modules/prebuild-install/asset.js +0 -44
  248. package/dist/node_modules/prebuild-install/bin.js +0 -78
  249. package/dist/node_modules/prebuild-install/download.js +0 -142
  250. package/dist/node_modules/prebuild-install/error.js +0 -14
  251. package/dist/node_modules/prebuild-install/help.txt +0 -16
  252. package/dist/node_modules/prebuild-install/index.js +0 -1
  253. package/dist/node_modules/prebuild-install/log.js +0 -33
  254. package/dist/node_modules/prebuild-install/package.json +0 -67
  255. package/dist/node_modules/prebuild-install/proxy.js +0 -35
  256. package/dist/node_modules/prebuild-install/rc.js +0 -64
  257. package/dist/node_modules/prebuild-install/util.js +0 -143
  258. package/dist/node_modules/pump/.travis.yml +0 -5
  259. package/dist/node_modules/pump/LICENSE +0 -21
  260. package/dist/node_modules/pump/README.md +0 -65
  261. package/dist/node_modules/pump/index.js +0 -82
  262. package/dist/node_modules/pump/package.json +0 -24
  263. package/dist/node_modules/pump/test-browser.js +0 -66
  264. package/dist/node_modules/pump/test-node.js +0 -53
  265. package/dist/node_modules/rc/LICENSE.APACHE2 +0 -15
  266. package/dist/node_modules/rc/LICENSE.BSD +0 -26
  267. package/dist/node_modules/rc/LICENSE.MIT +0 -24
  268. package/dist/node_modules/rc/README.md +0 -227
  269. package/dist/node_modules/rc/browser.js +0 -7
  270. package/dist/node_modules/rc/cli.js +0 -4
  271. package/dist/node_modules/rc/index.js +0 -53
  272. package/dist/node_modules/rc/lib/utils.js +0 -104
  273. package/dist/node_modules/rc/package.json +0 -29
  274. package/dist/node_modules/rc/test/ini.js +0 -16
  275. package/dist/node_modules/rc/test/nested-env-vars.js +0 -50
  276. package/dist/node_modules/rc/test/test.js +0 -59
  277. package/dist/node_modules/readable-stream/CONTRIBUTING.md +0 -38
  278. package/dist/node_modules/readable-stream/GOVERNANCE.md +0 -136
  279. package/dist/node_modules/readable-stream/LICENSE +0 -47
  280. package/dist/node_modules/readable-stream/README.md +0 -106
  281. package/dist/node_modules/readable-stream/errors-browser.js +0 -127
  282. package/dist/node_modules/readable-stream/errors.js +0 -116
  283. package/dist/node_modules/readable-stream/experimentalWarning.js +0 -17
  284. package/dist/node_modules/readable-stream/lib/_stream_duplex.js +0 -126
  285. package/dist/node_modules/readable-stream/lib/_stream_passthrough.js +0 -37
  286. package/dist/node_modules/readable-stream/lib/_stream_readable.js +0 -1027
  287. package/dist/node_modules/readable-stream/lib/_stream_transform.js +0 -190
  288. package/dist/node_modules/readable-stream/lib/_stream_writable.js +0 -641
  289. package/dist/node_modules/readable-stream/lib/internal/streams/async_iterator.js +0 -180
  290. package/dist/node_modules/readable-stream/lib/internal/streams/buffer_list.js +0 -183
  291. package/dist/node_modules/readable-stream/lib/internal/streams/destroy.js +0 -96
  292. package/dist/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +0 -86
  293. package/dist/node_modules/readable-stream/lib/internal/streams/from-browser.js +0 -3
  294. package/dist/node_modules/readable-stream/lib/internal/streams/from.js +0 -52
  295. package/dist/node_modules/readable-stream/lib/internal/streams/pipeline.js +0 -86
  296. package/dist/node_modules/readable-stream/lib/internal/streams/state.js +0 -22
  297. package/dist/node_modules/readable-stream/lib/internal/streams/stream-browser.js +0 -1
  298. package/dist/node_modules/readable-stream/lib/internal/streams/stream.js +0 -1
  299. package/dist/node_modules/readable-stream/package.json +0 -68
  300. package/dist/node_modules/readable-stream/readable-browser.js +0 -9
  301. package/dist/node_modules/readable-stream/readable.js +0 -16
  302. package/dist/node_modules/safe-buffer/LICENSE +0 -21
  303. package/dist/node_modules/safe-buffer/README.md +0 -584
  304. package/dist/node_modules/safe-buffer/index.d.ts +0 -187
  305. package/dist/node_modules/safe-buffer/index.js +0 -65
  306. package/dist/node_modules/safe-buffer/package.json +0 -51
  307. package/dist/node_modules/semver/LICENSE +0 -15
  308. package/dist/node_modules/semver/README.md +0 -637
  309. package/dist/node_modules/semver/bin/semver.js +0 -197
  310. package/dist/node_modules/semver/classes/comparator.js +0 -141
  311. package/dist/node_modules/semver/classes/index.js +0 -5
  312. package/dist/node_modules/semver/classes/range.js +0 -539
  313. package/dist/node_modules/semver/classes/semver.js +0 -302
  314. package/dist/node_modules/semver/functions/clean.js +0 -6
  315. package/dist/node_modules/semver/functions/cmp.js +0 -52
  316. package/dist/node_modules/semver/functions/coerce.js +0 -52
  317. package/dist/node_modules/semver/functions/compare-build.js +0 -7
  318. package/dist/node_modules/semver/functions/compare-loose.js +0 -3
  319. package/dist/node_modules/semver/functions/compare.js +0 -5
  320. package/dist/node_modules/semver/functions/diff.js +0 -65
  321. package/dist/node_modules/semver/functions/eq.js +0 -3
  322. package/dist/node_modules/semver/functions/gt.js +0 -3
  323. package/dist/node_modules/semver/functions/gte.js +0 -3
  324. package/dist/node_modules/semver/functions/inc.js +0 -19
  325. package/dist/node_modules/semver/functions/lt.js +0 -3
  326. package/dist/node_modules/semver/functions/lte.js +0 -3
  327. package/dist/node_modules/semver/functions/major.js +0 -3
  328. package/dist/node_modules/semver/functions/minor.js +0 -3
  329. package/dist/node_modules/semver/functions/neq.js +0 -3
  330. package/dist/node_modules/semver/functions/parse.js +0 -16
  331. package/dist/node_modules/semver/functions/patch.js +0 -3
  332. package/dist/node_modules/semver/functions/prerelease.js +0 -6
  333. package/dist/node_modules/semver/functions/rcompare.js +0 -3
  334. package/dist/node_modules/semver/functions/rsort.js +0 -3
  335. package/dist/node_modules/semver/functions/satisfies.js +0 -10
  336. package/dist/node_modules/semver/functions/sort.js +0 -3
  337. package/dist/node_modules/semver/functions/valid.js +0 -6
  338. package/dist/node_modules/semver/index.js +0 -89
  339. package/dist/node_modules/semver/internal/constants.js +0 -35
  340. package/dist/node_modules/semver/internal/debug.js +0 -9
  341. package/dist/node_modules/semver/internal/identifiers.js +0 -23
  342. package/dist/node_modules/semver/internal/parse-options.js +0 -15
  343. package/dist/node_modules/semver/internal/re.js +0 -212
  344. package/dist/node_modules/semver/package.json +0 -87
  345. package/dist/node_modules/semver/preload.js +0 -2
  346. package/dist/node_modules/semver/range.bnf +0 -16
  347. package/dist/node_modules/semver/ranges/gtr.js +0 -4
  348. package/dist/node_modules/semver/ranges/intersects.js +0 -7
  349. package/dist/node_modules/semver/ranges/ltr.js +0 -4
  350. package/dist/node_modules/semver/ranges/max-satisfying.js +0 -25
  351. package/dist/node_modules/semver/ranges/min-satisfying.js +0 -24
  352. package/dist/node_modules/semver/ranges/min-version.js +0 -61
  353. package/dist/node_modules/semver/ranges/outside.js +0 -80
  354. package/dist/node_modules/semver/ranges/simplify.js +0 -47
  355. package/dist/node_modules/semver/ranges/subset.js +0 -247
  356. package/dist/node_modules/semver/ranges/to-comparators.js +0 -8
  357. package/dist/node_modules/semver/ranges/valid.js +0 -11
  358. package/dist/node_modules/sharp/LICENSE +0 -191
  359. package/dist/node_modules/sharp/README.md +0 -117
  360. package/dist/node_modules/sharp/binding.gyp +0 -233
  361. package/dist/node_modules/sharp/build/Release/sharp-linux-x64.node +0 -0
  362. package/dist/node_modules/sharp/install/can-compile.js +0 -11
  363. package/dist/node_modules/sharp/install/dll-copy.js +0 -37
  364. package/dist/node_modules/sharp/install/libvips.js +0 -215
  365. package/dist/node_modules/sharp/lib/agent.js +0 -40
  366. package/dist/node_modules/sharp/lib/channel.js +0 -171
  367. package/dist/node_modules/sharp/lib/colour.js +0 -180
  368. package/dist/node_modules/sharp/lib/composite.js +0 -193
  369. package/dist/node_modules/sharp/lib/constructor.js +0 -386
  370. package/dist/node_modules/sharp/lib/index.js +0 -13
  371. package/dist/node_modules/sharp/lib/input.js +0 -507
  372. package/dist/node_modules/sharp/lib/is.js +0 -143
  373. package/dist/node_modules/sharp/lib/libvips.js +0 -136
  374. package/dist/node_modules/sharp/lib/operation.js +0 -803
  375. package/dist/node_modules/sharp/lib/output.js +0 -1231
  376. package/dist/node_modules/sharp/lib/platform.js +0 -27
  377. package/dist/node_modules/sharp/lib/resize.js +0 -473
  378. package/dist/node_modules/sharp/lib/sharp.js +0 -35
  379. package/dist/node_modules/sharp/lib/utility.js +0 -211
  380. package/dist/node_modules/sharp/package.json +0 -196
  381. package/dist/node_modules/sharp/src/common.cc +0 -966
  382. package/dist/node_modules/sharp/src/common.h +0 -352
  383. package/dist/node_modules/sharp/src/libvips/cplusplus/VConnection.cpp +0 -152
  384. package/dist/node_modules/sharp/src/libvips/cplusplus/VError.cpp +0 -50
  385. package/dist/node_modules/sharp/src/libvips/cplusplus/VImage.cpp +0 -1523
  386. package/dist/node_modules/sharp/src/libvips/cplusplus/VInterpolate.cpp +0 -63
  387. package/dist/node_modules/sharp/src/libvips/cplusplus/vips-operators.cpp +0 -3738
  388. package/dist/node_modules/sharp/src/metadata.cc +0 -291
  389. package/dist/node_modules/sharp/src/metadata.h +0 -92
  390. package/dist/node_modules/sharp/src/operations.cc +0 -412
  391. package/dist/node_modules/sharp/src/operations.h +0 -126
  392. package/dist/node_modules/sharp/src/pipeline.cc +0 -1624
  393. package/dist/node_modules/sharp/src/pipeline.h +0 -349
  394. package/dist/node_modules/sharp/src/sharp.cc +0 -52
  395. package/dist/node_modules/sharp/src/stats.cc +0 -193
  396. package/dist/node_modules/sharp/src/stats.h +0 -70
  397. package/dist/node_modules/sharp/src/utilities.cc +0 -243
  398. package/dist/node_modules/sharp/src/utilities.h +0 -29
  399. package/dist/node_modules/sharp/vendor/8.12.2/linux-x64/THIRD-PARTY-NOTICES.md +0 -43
  400. package/dist/node_modules/sharp/vendor/8.12.2/linux-x64/lib/libvips-cpp.so.42 +0 -0
  401. package/dist/node_modules/sharp/vendor/8.12.2/linux-x64/platform.json +0 -1
  402. package/dist/node_modules/sharp/vendor/8.12.2/linux-x64/versions.json +0 -31
  403. package/dist/node_modules/simple-concat/.travis.yml +0 -3
  404. package/dist/node_modules/simple-concat/LICENSE +0 -20
  405. package/dist/node_modules/simple-concat/README.md +0 -44
  406. package/dist/node_modules/simple-concat/index.js +0 -15
  407. package/dist/node_modules/simple-concat/package.json +0 -47
  408. package/dist/node_modules/simple-concat/test/basic.js +0 -41
  409. package/dist/node_modules/simple-get/.github/dependabot.yml +0 -15
  410. package/dist/node_modules/simple-get/.github/workflows/ci.yml +0 -23
  411. package/dist/node_modules/simple-get/LICENSE +0 -20
  412. package/dist/node_modules/simple-get/README.md +0 -333
  413. package/dist/node_modules/simple-get/index.js +0 -108
  414. package/dist/node_modules/simple-get/package.json +0 -67
  415. package/dist/node_modules/simple-swizzle/LICENSE +0 -21
  416. package/dist/node_modules/simple-swizzle/README.md +0 -39
  417. package/dist/node_modules/simple-swizzle/index.js +0 -29
  418. package/dist/node_modules/simple-swizzle/package.json +0 -36
  419. package/dist/node_modules/string_decoder/LICENSE +0 -48
  420. package/dist/node_modules/string_decoder/README.md +0 -47
  421. package/dist/node_modules/string_decoder/lib/string_decoder.js +0 -296
  422. package/dist/node_modules/string_decoder/package.json +0 -34
  423. package/dist/node_modules/strip-json-comments/index.js +0 -70
  424. package/dist/node_modules/strip-json-comments/license +0 -21
  425. package/dist/node_modules/strip-json-comments/package.json +0 -42
  426. package/dist/node_modules/strip-json-comments/readme.md +0 -64
  427. package/dist/node_modules/tar-fs/.travis.yml +0 -6
  428. package/dist/node_modules/tar-fs/LICENSE +0 -21
  429. package/dist/node_modules/tar-fs/README.md +0 -165
  430. package/dist/node_modules/tar-fs/index.js +0 -351
  431. package/dist/node_modules/tar-fs/package.json +0 -41
  432. package/dist/node_modules/tar-fs/test/fixtures/a/hello.txt +0 -1
  433. package/dist/node_modules/tar-fs/test/fixtures/b/a/test.txt +0 -1
  434. package/dist/node_modules/tar-fs/test/fixtures/d/file1 +0 -0
  435. package/dist/node_modules/tar-fs/test/fixtures/d/file2 +0 -0
  436. package/dist/node_modules/tar-fs/test/fixtures/d/sub-dir/file5 +0 -0
  437. package/dist/node_modules/tar-fs/test/fixtures/d/sub-files/file3 +0 -0
  438. package/dist/node_modules/tar-fs/test/fixtures/d/sub-files/file4 +0 -0
  439. package/dist/node_modules/tar-fs/test/fixtures/e/directory/.ignore +0 -0
  440. package/dist/node_modules/tar-fs/test/fixtures/e/file +0 -0
  441. package/dist/node_modules/tar-fs/test/fixtures/invalid.tar +0 -0
  442. package/dist/node_modules/tar-fs/test/index.js +0 -346
  443. package/dist/node_modules/tar-stream/LICENSE +0 -21
  444. package/dist/node_modules/tar-stream/README.md +0 -168
  445. package/dist/node_modules/tar-stream/extract.js +0 -257
  446. package/dist/node_modules/tar-stream/headers.js +0 -295
  447. package/dist/node_modules/tar-stream/index.js +0 -2
  448. package/dist/node_modules/tar-stream/pack.js +0 -255
  449. package/dist/node_modules/tar-stream/package.json +0 -58
  450. package/dist/node_modules/tar-stream/sandbox.js +0 -11
  451. package/dist/node_modules/tunnel-agent/LICENSE +0 -55
  452. package/dist/node_modules/tunnel-agent/README.md +0 -4
  453. package/dist/node_modules/tunnel-agent/index.js +0 -244
  454. package/dist/node_modules/tunnel-agent/package.json +0 -22
  455. package/dist/node_modules/util-deprecate/History.md +0 -16
  456. package/dist/node_modules/util-deprecate/LICENSE +0 -24
  457. package/dist/node_modules/util-deprecate/README.md +0 -53
  458. package/dist/node_modules/util-deprecate/browser.js +0 -67
  459. package/dist/node_modules/util-deprecate/node.js +0 -6
  460. package/dist/node_modules/util-deprecate/package.json +0 -27
  461. package/dist/node_modules/wrappy/LICENSE +0 -15
  462. package/dist/node_modules/wrappy/README.md +0 -36
  463. package/dist/node_modules/wrappy/package.json +0 -29
  464. package/dist/node_modules/wrappy/wrappy.js +0 -33
  465. package/dist/node_modules/yallist/LICENSE +0 -15
  466. package/dist/node_modules/yallist/README.md +0 -204
  467. package/dist/node_modules/yallist/iterator.js +0 -8
  468. package/dist/node_modules/yallist/package.json +0 -29
  469. package/dist/node_modules/yallist/yallist.js +0 -426
  470. package/dist/package-lock.json +0 -502
  471. package/dist/package.json +0 -38
  472. package/dist/static/expected_tile_2193_153_255_z7.png +0 -0
  473. package/dist/static/expected_tile_NZTM2000Quad_30_33_z6.png +0 -0
  474. 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