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