@design-edito/tools 0.4.4 → 0.4.6

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 (526) hide show
  1. package/TODO.md +269 -0
  2. package/agnostic/arrays/dedupe/index.js +9 -9
  3. package/agnostic/arrays/dedupe/index.test.js +24 -0
  4. package/agnostic/arrays/find-duplicates/index.js +34 -24
  5. package/agnostic/arrays/find-duplicates/index.test.js +31 -0
  6. package/agnostic/arrays/index.d.ts +1 -1
  7. package/agnostic/arrays/index.js +1 -1
  8. package/agnostic/arrays/is-array-of/index.js +28 -26
  9. package/agnostic/arrays/is-array-of/index.test.js +56 -0
  10. package/agnostic/arrays/make/index.js +11 -8
  11. package/agnostic/arrays/make/index.test.js +10 -0
  12. package/agnostic/arrays/random-pick/index.js +40 -9
  13. package/agnostic/arrays/random-pick/index.test.js +23 -0
  14. package/agnostic/arrays/shuffle/index.js +15 -13
  15. package/agnostic/arrays/shuffle/index.test.js +14 -0
  16. package/agnostic/booleans/is-falsy/index.js +26 -12
  17. package/agnostic/booleans/is-falsy/index.test.js +26 -0
  18. package/agnostic/colors/channels/index.js +145 -19
  19. package/agnostic/colors/channels/index.test.js +64 -0
  20. package/agnostic/colors/contrast/index.js +23 -30
  21. package/agnostic/colors/contrast/index.test.js +21 -0
  22. package/agnostic/colors/convert/index.js +839 -46
  23. package/agnostic/colors/convert/index.test.js +98 -0
  24. package/agnostic/colors/cssColorsMap.js +153 -0
  25. package/agnostic/colors/distance/index.js +65 -53
  26. package/agnostic/colors/distance/index.test.js +21 -0
  27. package/agnostic/colors/grayscale/index.js +96 -137
  28. package/agnostic/colors/grayscale/index.test.js +34 -0
  29. package/agnostic/colors/invert/index.js +33 -44
  30. package/agnostic/colors/invert/index.test.js +31 -0
  31. package/agnostic/colors/lerp/index.js +74 -88
  32. package/agnostic/colors/lerp/index.test.js +55 -0
  33. package/agnostic/colors/luminance/index.js +19 -13
  34. package/agnostic/colors/luminance/index.test.js +30 -0
  35. package/agnostic/colors/palette/index.js +80 -87
  36. package/agnostic/colors/palette/index.test.js +35 -0
  37. package/agnostic/colors/rotate/index.js +41 -14
  38. package/agnostic/colors/rotate/index.test.js +45 -0
  39. package/agnostic/colors/tidy/index.js +80 -12
  40. package/agnostic/colors/tidy/index.test.js +45 -0
  41. package/agnostic/colors/typechecks/index.js +196 -25
  42. package/agnostic/colors/typechecks/index.test.js +113 -0
  43. package/agnostic/colors/types.js +1 -0
  44. package/agnostic/css/bem/index.js +135 -160
  45. package/agnostic/css/clss/index.js +66 -7
  46. package/agnostic/css/clss/index.test.js +60 -0
  47. package/agnostic/css/generate-nice-color/index.js +26 -73
  48. package/agnostic/css/generate-nice-color/index.test.js +8 -0
  49. package/agnostic/css/index.d.ts +1 -1
  50. package/agnostic/css/index.js +1 -1
  51. package/agnostic/css/is-valid-css-class-name/index.js +15 -9
  52. package/agnostic/css/is-valid-css-class-name/index.test.js +36 -0
  53. package/agnostic/css/scale/index.js +37 -37
  54. package/agnostic/css/scale/index.test.js +71 -0
  55. package/agnostic/css/styles-set/index.js +151 -169
  56. package/agnostic/errors/register/index.js +45 -51
  57. package/agnostic/errors/unknown-to-string/index.js +18 -7
  58. package/agnostic/errors/unknown-to-string/index.test.js +35 -0
  59. package/agnostic/html/get-node-ancestors/index.js +31 -8
  60. package/agnostic/html/get-node-ancestors/index.test.js +58 -0
  61. package/agnostic/html/get-position-inside-parent/index.js +13 -10
  62. package/agnostic/html/get-position-inside-parent/index.test.js +56 -0
  63. package/agnostic/html/hyper-json/cast/index.js +137 -24
  64. package/agnostic/html/hyper-json/index.js +23 -50
  65. package/agnostic/html/hyper-json/method/index.js +10 -7
  66. package/agnostic/html/hyper-json/serialize/index.js +91 -11
  67. package/agnostic/html/hyper-json/smart-tags/coalesced/add/index.js +16 -24
  68. package/agnostic/html/hyper-json/smart-tags/coalesced/addclass/index.js +30 -24
  69. package/agnostic/html/hyper-json/smart-tags/coalesced/and/index.js +15 -24
  70. package/agnostic/html/hyper-json/smart-tags/coalesced/append/index.js +36 -24
  71. package/agnostic/html/hyper-json/smart-tags/coalesced/at/index.js +47 -24
  72. package/agnostic/html/hyper-json/smart-tags/coalesced/call/index.js +50 -24
  73. package/agnostic/html/hyper-json/smart-tags/coalesced/clone/index.js +11 -24
  74. package/agnostic/html/hyper-json/smart-tags/coalesced/deleteproperties/index.js +49 -24
  75. package/agnostic/html/hyper-json/smart-tags/coalesced/equals/index.js +24 -24
  76. package/agnostic/html/hyper-json/smart-tags/coalesced/getattribute/index.js +28 -24
  77. package/agnostic/html/hyper-json/smart-tags/coalesced/getproperties/index.js +21 -24
  78. package/agnostic/html/hyper-json/smart-tags/coalesced/getproperty/index.js +73 -26
  79. package/agnostic/html/hyper-json/smart-tags/coalesced/hjparse/index.js +24 -24
  80. package/agnostic/html/hyper-json/smart-tags/coalesced/hjstringify/index.js +93 -28
  81. package/agnostic/html/hyper-json/smart-tags/coalesced/if/index.js +22 -24
  82. package/agnostic/html/hyper-json/smart-tags/coalesced/index.d.ts +14 -14
  83. package/agnostic/html/hyper-json/smart-tags/coalesced/index.js +14 -14
  84. package/agnostic/html/hyper-json/smart-tags/coalesced/initialize/index.js +39 -24
  85. package/agnostic/html/hyper-json/smart-tags/coalesced/join/index.js +18 -24
  86. package/agnostic/html/hyper-json/smart-tags/coalesced/length/index.js +23 -24
  87. package/agnostic/html/hyper-json/smart-tags/coalesced/map/index.js +33 -24
  88. package/agnostic/html/hyper-json/smart-tags/coalesced/negate/index.js +11 -24
  89. package/agnostic/html/hyper-json/smart-tags/coalesced/notrailing/index.js +35 -24
  90. package/agnostic/html/hyper-json/smart-tags/coalesced/or/index.js +15 -24
  91. package/agnostic/html/hyper-json/smart-tags/coalesced/pickrandom/index.js +19 -24
  92. package/agnostic/html/hyper-json/smart-tags/coalesced/populate/index.js +61 -24
  93. package/agnostic/html/hyper-json/smart-tags/coalesced/print/index.js +25 -24
  94. package/agnostic/html/hyper-json/smart-tags/coalesced/push/index.js +11 -24
  95. package/agnostic/html/hyper-json/smart-tags/coalesced/pusheach/index.js +28 -24
  96. package/agnostic/html/hyper-json/smart-tags/coalesced/recordtoarray/index.js +11 -24
  97. package/agnostic/html/hyper-json/smart-tags/coalesced/removeattribute/index.js +58 -24
  98. package/agnostic/html/hyper-json/smart-tags/coalesced/removeclass/index.js +30 -24
  99. package/agnostic/html/hyper-json/smart-tags/coalesced/renameproperty/index.js +34 -24
  100. package/agnostic/html/hyper-json/smart-tags/coalesced/replace/index.js +56 -26
  101. package/agnostic/html/hyper-json/smart-tags/coalesced/select/index.js +34 -24
  102. package/agnostic/html/hyper-json/smart-tags/coalesced/set/index.js +31 -24
  103. package/agnostic/html/hyper-json/smart-tags/coalesced/setattribute/index.js +58 -24
  104. package/agnostic/html/hyper-json/smart-tags/coalesced/setproperty/index.js +237 -26
  105. package/agnostic/html/hyper-json/smart-tags/coalesced/sorton/index.js +93 -24
  106. package/agnostic/html/hyper-json/smart-tags/coalesced/split/index.js +22 -24
  107. package/agnostic/html/hyper-json/smart-tags/coalesced/spread/index.js +24 -24
  108. package/agnostic/html/hyper-json/smart-tags/coalesced/toarray/index.js +12 -24
  109. package/agnostic/html/hyper-json/smart-tags/coalesced/toboolean/index.js +12 -24
  110. package/agnostic/html/hyper-json/smart-tags/coalesced/toelement/index.js +19 -24
  111. package/agnostic/html/hyper-json/smart-tags/coalesced/toggleclass/index.js +30 -24
  112. package/agnostic/html/hyper-json/smart-tags/coalesced/tonodelist/index.js +12 -24
  113. package/agnostic/html/hyper-json/smart-tags/coalesced/tonull/index.js +11 -24
  114. package/agnostic/html/hyper-json/smart-tags/coalesced/tonumber/index.js +12 -24
  115. package/agnostic/html/hyper-json/smart-tags/coalesced/torecord/index.js +12 -24
  116. package/agnostic/html/hyper-json/smart-tags/coalesced/toref/index.js +12 -24
  117. package/agnostic/html/hyper-json/smart-tags/coalesced/tostring/index.js +12 -24
  118. package/agnostic/html/hyper-json/smart-tags/coalesced/totext/index.js +12 -24
  119. package/agnostic/html/hyper-json/smart-tags/coalesced/transformselected/index.js +86 -24
  120. package/agnostic/html/hyper-json/smart-tags/coalesced/trim/index.js +16 -24
  121. package/agnostic/html/hyper-json/smart-tags/index.js +31 -10
  122. package/agnostic/html/hyper-json/smart-tags/isolated/any/index.js +14 -11
  123. package/agnostic/html/hyper-json/smart-tags/isolated/array/index.js +14 -11
  124. package/agnostic/html/hyper-json/smart-tags/isolated/boolean/index.js +13 -24
  125. package/agnostic/html/hyper-json/smart-tags/isolated/element/index.js +26 -24
  126. package/agnostic/html/hyper-json/smart-tags/isolated/get/index.js +20 -24
  127. package/agnostic/html/hyper-json/smart-tags/isolated/guess/index.js +59 -24
  128. package/agnostic/html/hyper-json/smart-tags/isolated/index.d.ts +1 -1
  129. package/agnostic/html/hyper-json/smart-tags/isolated/index.js +1 -1
  130. package/agnostic/html/hyper-json/smart-tags/isolated/nodelist/index.js +20 -24
  131. package/agnostic/html/hyper-json/smart-tags/isolated/null/index.js +10 -11
  132. package/agnostic/html/hyper-json/smart-tags/isolated/number/index.js +18 -24
  133. package/agnostic/html/hyper-json/smart-tags/isolated/record/index.js +14 -24
  134. package/agnostic/html/hyper-json/smart-tags/isolated/ref/index.js +45 -25
  135. package/agnostic/html/hyper-json/smart-tags/isolated/string/index.js +18 -24
  136. package/agnostic/html/hyper-json/smart-tags/isolated/text/index.js +20 -24
  137. package/agnostic/html/hyper-json/transformer/index.js +113 -9
  138. package/agnostic/html/hyper-json/tree/index.js +423 -24
  139. package/agnostic/html/hyper-json/types/index.js +28 -7
  140. package/agnostic/html/hyper-json/utils/index.js +516 -24
  141. package/agnostic/html/index.d.ts +2 -2
  142. package/agnostic/html/index.js +2 -2
  143. package/agnostic/html/insert-node/index.js +28 -7
  144. package/agnostic/html/insert-node/index.test.js +73 -0
  145. package/agnostic/html/placeholders/index.js +26 -31
  146. package/agnostic/html/replace-in-element/index.js +31 -25
  147. package/agnostic/html/replace-in-element/index.test.js +80 -0
  148. package/agnostic/html/selector-to-element/index.js +53 -33
  149. package/agnostic/html/selector-to-element/index.test.js +69 -0
  150. package/agnostic/html/string-to-nodes/index.js +24 -19
  151. package/agnostic/html/string-to-nodes/index.test.js +54 -0
  152. package/agnostic/index.d.ts +1 -1
  153. package/agnostic/index.js +1 -1
  154. package/agnostic/misc/assert/index.js +60 -58
  155. package/agnostic/misc/cast/index.js +132 -23
  156. package/agnostic/misc/cast/index.test.js +134 -0
  157. package/agnostic/misc/connection/index.js +55 -30
  158. package/agnostic/misc/connection/index.test.js +143 -0
  159. package/agnostic/misc/crawler/index.js +68 -44
  160. package/agnostic/misc/crawler/index.test.js +56 -0
  161. package/agnostic/misc/crossenv/detect-runtime/index.js +41 -16
  162. package/agnostic/misc/crossenv/detect-runtime/index.test.js +24 -0
  163. package/agnostic/misc/crossenv/types.js +21 -7
  164. package/agnostic/misc/crossenv/window/index.js +49 -13
  165. package/agnostic/misc/crossenv/window/index.test.js +24 -0
  166. package/agnostic/misc/data-size/index.js +182 -296
  167. package/agnostic/misc/data-size/index.test.js +100 -0
  168. package/agnostic/misc/data-size/types.js +1 -0
  169. package/agnostic/misc/index.d.ts +1 -1
  170. package/agnostic/misc/index.js +1 -1
  171. package/agnostic/misc/is-constructor-function/index.js +13 -7
  172. package/agnostic/misc/is-constructor-function/index.test.js +36 -0
  173. package/agnostic/misc/is-nullish/index.js +26 -11
  174. package/agnostic/misc/is-nullish/index.test.js +44 -0
  175. package/agnostic/misc/logs/logger/index.js +115 -142
  176. package/agnostic/misc/logs/make-text-block/index.js +14 -7
  177. package/agnostic/misc/logs/styles/index.js +30 -7
  178. package/agnostic/misc/lorem-ipsum/index.js +51 -186
  179. package/agnostic/misc/lorem-ipsum/index.test.js +49 -0
  180. package/agnostic/misc/normalize-extension/index.js +99 -90
  181. package/agnostic/misc/normalize-extension/index.test.js +40 -0
  182. package/agnostic/misc/outcome/index.js +21 -11
  183. package/agnostic/misc/outcome/index.test.js +40 -0
  184. package/agnostic/numbers/absolute-modulo/index.js +10 -7
  185. package/agnostic/numbers/absolute-modulo/index.test.js +23 -0
  186. package/agnostic/numbers/approximate-rational/index.js +86 -71
  187. package/agnostic/numbers/approximate-rational/index.test.js +90 -0
  188. package/agnostic/numbers/clamp/index.js +13 -7
  189. package/agnostic/numbers/clamp/index.test.js +24 -0
  190. package/agnostic/numbers/geometric-progressions/index.js +26 -7
  191. package/agnostic/numbers/geometric-progressions/index.test.js +45 -0
  192. package/agnostic/numbers/index.d.ts +1 -1
  193. package/agnostic/numbers/index.js +1 -1
  194. package/agnostic/numbers/interpolate/index.js +25 -12
  195. package/agnostic/numbers/interpolate/index.test.js +40 -0
  196. package/agnostic/numbers/round/index.js +33 -11
  197. package/agnostic/numbers/round/index.test.js +56 -0
  198. package/agnostic/objects/deep-get-property/index.js +30 -26
  199. package/agnostic/objects/deep-get-property/index.test.js +59 -0
  200. package/agnostic/objects/enums/is-in-enum/index.js +18 -7
  201. package/agnostic/objects/enums/is-in-enum/index.test.js +100 -0
  202. package/agnostic/objects/flatten-getters/index.js +15 -16
  203. package/agnostic/objects/flatten-getters/index.test.js +78 -0
  204. package/agnostic/objects/index.d.ts +3 -3
  205. package/agnostic/objects/index.js +3 -3
  206. package/agnostic/objects/is-object/index.js +18 -9
  207. package/agnostic/objects/is-object/index.test.js +60 -0
  208. package/agnostic/objects/is-record/index.js +13 -7
  209. package/agnostic/objects/is-record/index.test.js +48 -0
  210. package/agnostic/objects/record-format/index.js +18 -14
  211. package/agnostic/objects/record-format/index.test.js +92 -0
  212. package/agnostic/objects/record-map/index.js +18 -7
  213. package/agnostic/objects/record-map/index.test.js +56 -0
  214. package/agnostic/objects/sort-keys/index.js +15 -13
  215. package/agnostic/objects/sort-keys/index.test.js +37 -0
  216. package/agnostic/objects/validation/index.js +21 -10
  217. package/agnostic/objects/validation/index.test.js +72 -0
  218. package/agnostic/optim/index.d.ts +1 -1
  219. package/agnostic/optim/index.js +1 -1
  220. package/agnostic/optim/memoize/index.js +24 -18
  221. package/agnostic/optim/memoize/index.test.js +30 -0
  222. package/agnostic/optim/throttle-debounce/index.js +120 -104
  223. package/agnostic/optim/throttle-debounce/index.test.js +44 -0
  224. package/agnostic/optim/throttle-debounce/types.js +1 -0
  225. package/agnostic/random/hex-char/index.js +9 -9
  226. package/agnostic/random/hex-char/index.test.js +20 -0
  227. package/agnostic/random/index.d.ts +1 -1
  228. package/agnostic/random/index.js +1 -1
  229. package/agnostic/random/random/index.js +19 -9
  230. package/agnostic/random/random/index.test.js +73 -0
  231. package/agnostic/random/uuid/index.js +31 -12
  232. package/agnostic/random/uuid/index.test.js +45 -0
  233. package/agnostic/regexps/index.js +126 -86
  234. package/agnostic/regexps/index.test.js +108 -0
  235. package/agnostic/sanitization/file-name/index.js +25 -7
  236. package/agnostic/sanitization/file-name/index.test.js +23 -0
  237. package/agnostic/sanitization/html/index.js +172 -116
  238. package/agnostic/sanitization/path/index.js +23 -13
  239. package/agnostic/sanitization/path/index.test.js +18 -0
  240. package/agnostic/sanitization/types.js +1 -0
  241. package/agnostic/sanitization/user-input/index.js +36 -26
  242. package/agnostic/sanitization/user-input/index.test.js +31 -0
  243. package/agnostic/strings/char-codes/index.js +123 -57
  244. package/agnostic/strings/matches/index.js +38 -11
  245. package/agnostic/strings/normalize-indent/index.js +34 -18
  246. package/agnostic/strings/parse-table/index.js +153 -84
  247. package/agnostic/strings/replace-all/index.js +36 -17
  248. package/agnostic/strings/to-alphanum/index.js +23 -10
  249. package/agnostic/strings/trim/index.js +24 -9
  250. package/agnostic/time/dates/format-date/index.js +140 -74
  251. package/agnostic/time/duration/index.js +106 -142
  252. package/agnostic/time/timeout/index.js +24 -18
  253. package/agnostic/time/transitions/index.js +200 -156
  254. package/agnostic/time/wait/index.js +11 -7
  255. package/agnostic/typescript/types.js +1 -0
  256. package/components/BeforeAfter/index.controlled.js +95 -0
  257. package/components/BeforeAfter/index.js +54 -152
  258. package/components/BeforeAfter/utils.js +9 -0
  259. package/components/Disclaimer/index.js +50 -9
  260. package/components/Drawer/index.js +82 -88
  261. package/components/EventListener/index.js +29 -47
  262. package/components/Gallery/index.js +146 -190
  263. package/components/Gallery/utils.js +12 -0
  264. package/components/Image/index.js +67 -106
  265. package/components/IntersectionObserver/index.js +62 -9
  266. package/components/Overlayer/index.js +59 -66
  267. package/components/Paginator/index.js +125 -9
  268. package/components/ResizeObserver/index.js +68 -9
  269. package/components/ResizeObserver/style.module.css +0 -0
  270. package/components/Scrllgngn/index.js +176 -183
  271. package/components/ScrollListener/index.js +97 -171
  272. package/components/ScrollListener/utils.js +51 -0
  273. package/components/Sequencer/index.controlled.js +67 -0
  274. package/components/Sequencer/index.js +105 -160
  275. package/components/ShadowRoot/index.js +42 -63
  276. package/components/Subtitles/index.js +107 -13
  277. package/components/Subtitles/types.js +1 -0
  278. package/components/Subtitles/utils.js +102 -0
  279. package/components/Theatre/index.js +89 -9
  280. package/components/UIModule/index.js +156 -146
  281. package/components/Video/index.d.ts +10 -0
  282. package/components/Video/index.js +292 -503
  283. package/components/Video/utils.js +137 -0
  284. package/components/_WIP_AudioQuote/index.js +1 -0
  285. package/components/_WIP_Icon/index.js +1 -0
  286. package/components/index.d.ts +2 -2
  287. package/components/index.js +2 -2
  288. package/components/public-classnames.js +18 -0
  289. package/components/utils/index.js +12 -7
  290. package/components/utils/types.js +1 -0
  291. package/index.d.ts +1 -2
  292. package/index.js +1 -2
  293. package/node/@aws-s3/index.test.js +6 -0
  294. package/node/@aws-s3/storage/directory/copy-dir/index.js +68 -9
  295. package/node/@aws-s3/storage/directory/index.d.ts +1 -1
  296. package/node/@aws-s3/storage/directory/index.js +1 -1
  297. package/node/@aws-s3/storage/directory/list/index.js +33 -9
  298. package/node/@aws-s3/storage/directory/move-dir/index.js +69 -9
  299. package/node/@aws-s3/storage/directory/remove-dir/index.js +59 -9
  300. package/node/@aws-s3/storage/file/copy/index.js +43 -9
  301. package/node/@aws-s3/storage/file/download/index.js +30 -9
  302. package/node/@aws-s3/storage/file/exists/index.js +37 -9
  303. package/node/@aws-s3/storage/file/index.d.ts +1 -1
  304. package/node/@aws-s3/storage/file/index.js +1 -1
  305. package/node/@aws-s3/storage/file/move/index.js +60 -9
  306. package/node/@aws-s3/storage/file/remove/index.js +38 -9
  307. package/node/@aws-s3/storage/file/stat/index.js +34 -9
  308. package/node/@aws-s3/storage/file/upload/index.js +55 -9
  309. package/node/@design-edito/index.js +1 -0
  310. package/node/@express/@multer/index.js +61 -45
  311. package/node/@google-cloud/storage/bucket/get-metadata/index.js +25 -21
  312. package/node/@google-cloud/storage/directory/copy-dir/index.js +38 -9
  313. package/node/@google-cloud/storage/directory/list/index.js +29 -9
  314. package/node/@google-cloud/storage/directory/move-dir/index.js +45 -9
  315. package/node/@google-cloud/storage/directory/remove-dir/index.js +36 -9
  316. package/node/@google-cloud/storage/file/copy/index.js +37 -9
  317. package/node/@google-cloud/storage/file/download/index.js +28 -9
  318. package/node/@google-cloud/storage/file/exists/index.js +26 -9
  319. package/node/@google-cloud/storage/file/generate-signed-url/index.js +33 -27
  320. package/node/@google-cloud/storage/file/get-metadata/index.js +28 -23
  321. package/node/@google-cloud/storage/file/get-permissions/index.js +25 -23
  322. package/node/@google-cloud/storage/file/index.d.ts +1 -1
  323. package/node/@google-cloud/storage/file/index.js +1 -1
  324. package/node/@google-cloud/storage/file/move/index.js +40 -9
  325. package/node/@google-cloud/storage/file/remove/index.js +36 -9
  326. package/node/@google-cloud/storage/file/revoke-signed-urls/index.js +32 -29
  327. package/node/@google-cloud/storage/file/stat/index.js +35 -9
  328. package/node/@google-cloud/storage/file/update-metadata/index.js +30 -23
  329. package/node/@google-cloud/storage/file/upload/index.js +47 -9
  330. package/node/cloud-storage/clients/index.js +35 -13
  331. package/node/cloud-storage/operations/copy-dir/index.js +30 -34
  332. package/node/cloud-storage/operations/copy-file/index.js +30 -34
  333. package/node/cloud-storage/operations/download-file/index.js +30 -34
  334. package/node/cloud-storage/operations/exists-file/index.js +30 -34
  335. package/node/cloud-storage/operations/list-dir/index.js +29 -34
  336. package/node/cloud-storage/operations/move-dir/index.js +30 -34
  337. package/node/cloud-storage/operations/move-file/index.js +30 -34
  338. package/node/cloud-storage/operations/remove-dir/index.js +29 -34
  339. package/node/cloud-storage/operations/remove-file/index.js +29 -34
  340. package/node/cloud-storage/operations/stat-file/index.js +29 -34
  341. package/node/cloud-storage/operations/upload-file/index.js +30 -34
  342. package/node/encryption/@aes-256-gcm/buffer/index.js +31 -26
  343. package/node/encryption/@aes-256-gcm/index.d.ts +1 -1
  344. package/node/encryption/@aes-256-gcm/index.js +1 -1
  345. package/node/encryption/@aes-256-gcm/uint8-array/index.js +57 -11
  346. package/node/encryption/key/index.js +19 -14
  347. package/node/files/is-in-directory/index.js +11 -10
  348. package/node/files/read-write/index.js +11 -17
  349. package/node/files/subpaths/index.js +156 -113
  350. package/node/ftps/directory/copy-dir/index.js +58 -9
  351. package/node/ftps/directory/index.d.ts +1 -1
  352. package/node/ftps/directory/index.js +1 -1
  353. package/node/ftps/directory/list/index.js +25 -9
  354. package/node/ftps/directory/move-dir/index.js +41 -9
  355. package/node/ftps/directory/remove-dir/index.js +42 -9
  356. package/node/ftps/file/copy/index.js +45 -9
  357. package/node/ftps/file/download/index.js +30 -9
  358. package/node/ftps/file/exists/index.js +39 -9
  359. package/node/ftps/file/index.d.ts +1 -1
  360. package/node/ftps/file/index.js +1 -1
  361. package/node/ftps/file/move/index.js +49 -9
  362. package/node/ftps/file/remove/index.js +40 -9
  363. package/node/ftps/file/stat/index.js +31 -9
  364. package/node/ftps/file/upload/index.js +44 -9
  365. package/node/images/create/index.js +10 -18
  366. package/node/images/format/index.js +264 -251
  367. package/node/images/index.d.ts +1 -1
  368. package/node/images/index.js +1 -1
  369. package/node/images/metadata/index.js +10 -18
  370. package/node/images/transform/index.js +168 -203
  371. package/node/images/transform/operations/blur/index.js +12 -10
  372. package/node/images/transform/operations/brighten/index.js +12 -10
  373. package/node/images/transform/operations/extend/index.js +26 -17
  374. package/node/images/transform/operations/extract/index.js +17 -10
  375. package/node/images/transform/operations/flatten/index.js +21 -17
  376. package/node/images/transform/operations/flip/index.js +3 -7
  377. package/node/images/transform/operations/flop/index.js +3 -7
  378. package/node/images/transform/operations/hue/index.js +14 -10
  379. package/node/images/transform/operations/index.d.ts +2 -2
  380. package/node/images/transform/operations/index.js +2 -2
  381. package/node/images/transform/operations/level/index.js +15 -10
  382. package/node/images/transform/operations/lighten/index.js +14 -10
  383. package/node/images/transform/operations/normalize/index.js +15 -10
  384. package/node/images/transform/operations/overlay/index.js +90 -17
  385. package/node/images/transform/operations/resize/index.js +47 -17
  386. package/node/images/transform/operations/rotate/index.js +21 -17
  387. package/node/images/transform/operations/saturate/index.js +16 -10
  388. package/node/images/types.js +34 -9
  389. package/node/images/utils/index.js +85 -19
  390. package/node/index.d.ts +3 -3
  391. package/node/index.js +3 -3
  392. package/node/process/on-exit/index.js +45 -28
  393. package/node/process/prompt-continue/index.js +29 -16
  394. package/node/process/spawner/index.js +104 -80
  395. package/node/sftp/directory/copy-dir/index.js +55 -9
  396. package/node/sftp/directory/list/index.js +23 -9
  397. package/node/sftp/directory/move-dir/index.js +38 -9
  398. package/node/sftp/directory/remove-dir/index.js +42 -9
  399. package/node/sftp/file/copy/index.js +40 -9
  400. package/node/sftp/file/download/index.js +27 -9
  401. package/node/sftp/file/exists/index.js +30 -9
  402. package/node/sftp/file/index.d.ts +2 -2
  403. package/node/sftp/file/index.js +2 -2
  404. package/node/sftp/file/move/index.js +42 -9
  405. package/node/sftp/file/remove/index.js +33 -9
  406. package/node/sftp/file/stat/index.js +28 -9
  407. package/node/sftp/file/upload/index.js +36 -9
  408. package/package.json +1 -8
  409. package/chunks/chunk-2FNCUXAX.js +0 -27
  410. package/chunks/chunk-2GJSPEO4.js +0 -31
  411. package/chunks/chunk-2IGP6V77.js +0 -22
  412. package/chunks/chunk-3QI2MSDK.js +0 -34
  413. package/chunks/chunk-3RNLPW7B.js +0 -101
  414. package/chunks/chunk-3RZMW72G.js +0 -33
  415. package/chunks/chunk-4KLCJX2T.js +0 -36
  416. package/chunks/chunk-4LTN4SCD.js +0 -55
  417. package/chunks/chunk-4Q4T7QQO.js +0 -27
  418. package/chunks/chunk-4Q5TKOIG.js +0 -53
  419. package/chunks/chunk-57YKZBJR.js +0 -29
  420. package/chunks/chunk-5H3IRSOB.js +0 -8
  421. package/chunks/chunk-5NTPCRFH.js +0 -32
  422. package/chunks/chunk-5TM235Z3.js +0 -40
  423. package/chunks/chunk-5WVGUZL5.js +0 -35
  424. package/chunks/chunk-6XL25OZX.js +0 -12
  425. package/chunks/chunk-75BICI4L.js +0 -20
  426. package/chunks/chunk-77SWZUHV.js +0 -31
  427. package/chunks/chunk-AC4UMIWM.js +0 -124
  428. package/chunks/chunk-AG4VERYN.js +0 -25
  429. package/chunks/chunk-AP3VYSVF.js +0 -36
  430. package/chunks/chunk-ASXK7XCC.js +0 -18
  431. package/chunks/chunk-AVIMGMTP.js +0 -17
  432. package/chunks/chunk-B4HGXMP3.js +0 -20
  433. package/chunks/chunk-B5V7D2ZL.js +0 -77
  434. package/chunks/chunk-B6653QJD.js +0 -37
  435. package/chunks/chunk-BCX4HPD7.js +0 -33
  436. package/chunks/chunk-CVMYA5XK.js +0 -632
  437. package/chunks/chunk-DMWGHBIL.js +0 -25
  438. package/chunks/chunk-DNIOWD7K.js +0 -8
  439. package/chunks/chunk-E2ZY3SEW.js +0 -26
  440. package/chunks/chunk-E6MSDKON.js +0 -13
  441. package/chunks/chunk-E7BBN5JC.js +0 -22
  442. package/chunks/chunk-EX2QKFY5.js +0 -41
  443. package/chunks/chunk-EYYNCLVR.js +0 -33
  444. package/chunks/chunk-F2YJXIT7.js +0 -78
  445. package/chunks/chunk-FSNNEPY5.js +0 -37
  446. package/chunks/chunk-GG4EFNMU.js +0 -89
  447. package/chunks/chunk-GQBFMP6N.js +0 -32
  448. package/chunks/chunk-H3HRQ52T.js +0 -32
  449. package/chunks/chunk-H4PP6AHP.js +0 -15
  450. package/chunks/chunk-HC6ZOHCS.js +0 -14
  451. package/chunks/chunk-HMMPT3UM.js +0 -47
  452. package/chunks/chunk-HQLRJ7XW.js +0 -12
  453. package/chunks/chunk-HYGUIF2O.js +0 -23
  454. package/chunks/chunk-HYPEWMYZ.js +0 -10
  455. package/chunks/chunk-I5MRXMHR.js +0 -32
  456. package/chunks/chunk-I6ZP5T5V.js +0 -10
  457. package/chunks/chunk-IEZ3O5OF.js +0 -40
  458. package/chunks/chunk-IPRWXI27.js +0 -31
  459. package/chunks/chunk-IRKZUMWZ.js +0 -38
  460. package/chunks/chunk-ISJONMNA.js +0 -16
  461. package/chunks/chunk-JB27MAKY.js +0 -22
  462. package/chunks/chunk-JZ6GM444.js +0 -43
  463. package/chunks/chunk-K5UF634H.js +0 -25
  464. package/chunks/chunk-LEBGVBYD.js +0 -138
  465. package/chunks/chunk-LJ5MGLLU.js +0 -56
  466. package/chunks/chunk-LUAYN7VJ.js +0 -27
  467. package/chunks/chunk-MDVGDZU6.js +0 -25
  468. package/chunks/chunk-ML22TIBW.js +0 -37
  469. package/chunks/chunk-MO4TRYNI.js +0 -29
  470. package/chunks/chunk-MSU7JU63.js +0 -49
  471. package/chunks/chunk-NIBRPZJD.js +0 -58
  472. package/chunks/chunk-O32IRXDX.js +0 -78
  473. package/chunks/chunk-OAX7GS7C.js +0 -36
  474. package/chunks/chunk-OBSTP7YR.js +0 -257
  475. package/chunks/chunk-OFCSIK6J.js +0 -13
  476. package/chunks/chunk-OFYGPRWE.js +0 -21
  477. package/chunks/chunk-OGBUSUE6.js +0 -12
  478. package/chunks/chunk-OSAXBA7G.js +0 -10
  479. package/chunks/chunk-OT7QXCH6.js +0 -23
  480. package/chunks/chunk-P4J6S2WQ.js +0 -64
  481. package/chunks/chunk-PUQUSA6S.js +0 -12
  482. package/chunks/chunk-PYJKFOMV.js +0 -193
  483. package/chunks/chunk-QHEWBOQI.js +0 -19
  484. package/chunks/chunk-QXAJXTXV.js +0 -19
  485. package/chunks/chunk-R3AWQXMY.js +0 -20
  486. package/chunks/chunk-R66GH2MQ.js +0 -38
  487. package/chunks/chunk-RART44AF.js +0 -21
  488. package/chunks/chunk-REXSJULD.js +0 -28
  489. package/chunks/chunk-RJRNYRPM.js +0 -23
  490. package/chunks/chunk-RKX6KLPQ.js +0 -47
  491. package/chunks/chunk-RW7VAKJW.js +0 -15
  492. package/chunks/chunk-RZOR7ZC3.js +0 -35
  493. package/chunks/chunk-S2UZ3HZR.js +0 -31
  494. package/chunks/chunk-SYH5LYQC.js +0 -28
  495. package/chunks/chunk-TAXFCVFE.js +0 -30
  496. package/chunks/chunk-TNZGRXKJ.js +0 -24
  497. package/chunks/chunk-TRFZSKNB.js +0 -32
  498. package/chunks/chunk-U664BT44.js +0 -45
  499. package/chunks/chunk-U6SGKHHA.js +0 -32
  500. package/chunks/chunk-UTQNGKGQ.js +0 -60
  501. package/chunks/chunk-VPBZS3S4.js +0 -27
  502. package/chunks/chunk-W5A2TON3.js +0 -10
  503. package/chunks/chunk-W7PJ5NQQ.js +0 -23
  504. package/chunks/chunk-WGRQXVBK.js +0 -207
  505. package/chunks/chunk-WIFHP4X7.js +0 -56
  506. package/chunks/chunk-WL4WNJ2Y.js +0 -39
  507. package/chunks/chunk-WNDMYNDU.js +0 -8
  508. package/chunks/chunk-WSFCRVEQ.js +0 -9
  509. package/chunks/chunk-WZS4Q3G3.js +0 -36
  510. package/chunks/chunk-X4YSGOKG.js +0 -2673
  511. package/chunks/chunk-XA4HVHJ4.js +0 -18
  512. package/chunks/chunk-XEQ2PBT2.js +0 -20
  513. package/chunks/chunk-XFB4PUXO.js +0 -78
  514. package/chunks/chunk-XIIJYVJZ.js +0 -15
  515. package/chunks/chunk-XNF5MLCQ.js +0 -14
  516. package/chunks/chunk-XQUMWHCH.js +0 -25
  517. package/chunks/chunk-YA2YCZUF.js +0 -8
  518. package/chunks/chunk-YDIBNEGA.js +0 -9
  519. package/chunks/chunk-YHMR7IBA.js +0 -24
  520. package/chunks/chunk-YWSXCFYY.js +0 -61
  521. package/chunks/chunk-YY3TSU22.js +0 -48
  522. package/chunks/chunk-ZAP3ELDE.js +0 -40
  523. package/chunks/chunk-ZJNQRKEJ.js +0 -105
  524. package/chunks/chunk-ZJR5ASR3.js +0 -26
  525. package/chunks/index.d.ts +0 -1
  526. package/chunks/index.js +0 -1
@@ -1,208 +1,173 @@
1
- import {
2
- isNormalizeOperationParams,
3
- normalize
4
- } from "../../../chunks/chunk-TNZGRXKJ.js";
5
- import {
6
- isSaturateOperationParams,
7
- saturate
8
- } from "../../../chunks/chunk-MDVGDZU6.js";
9
- import {
10
- isOverlayOperationParams,
11
- overlay
12
- } from "../../../chunks/chunk-3RNLPW7B.js";
13
- import {
14
- extend,
15
- isExtendOperationParams
16
- } from "../../../chunks/chunk-ML22TIBW.js";
17
- import {
18
- flip
19
- } from "../../../chunks/chunk-WNDMYNDU.js";
20
- import {
21
- flop
22
- } from "../../../chunks/chunk-YA2YCZUF.js";
23
- import {
24
- isLevelOperationParams,
25
- level
26
- } from "../../../chunks/chunk-VPBZS3S4.js";
27
- import {
28
- isLightenOperationParams,
29
- lighten
30
- } from "../../../chunks/chunk-W7PJ5NQQ.js";
31
- import {
32
- isResizeOperationParams,
33
- resize
34
- } from "../../../chunks/chunk-NIBRPZJD.js";
35
- import {
36
- hue,
37
- isHueOperationParams
38
- } from "../../../chunks/chunk-OT7QXCH6.js";
39
- import {
40
- isRotateOperationParams,
41
- rotate
42
- } from "../../../chunks/chunk-U6SGKHHA.js";
43
- import {
44
- brighten,
45
- isBrightenOperationParams
46
- } from "../../../chunks/chunk-OFYGPRWE.js";
47
- import {
48
- extract,
49
- isExtractOperationParams
50
- } from "../../../chunks/chunk-ZJR5ASR3.js";
51
- import {
52
- flatten,
53
- isFlattenOperationParams
54
- } from "../../../chunks/chunk-I5MRXMHR.js";
55
- import {
56
- blur,
57
- isBlurOperationParams
58
- } from "../../../chunks/chunk-RART44AF.js";
59
- import "../../../chunks/chunk-5NTPCRFH.js";
60
- import {
61
- toSharpInstance
62
- } from "../../../chunks/chunk-HMMPT3UM.js";
63
- import {
64
- makeFailure,
65
- makeSuccess
66
- } from "../../../chunks/chunk-LUAYN7VJ.js";
67
- import "../../../chunks/chunk-CVMYA5XK.js";
68
- import "../../../chunks/chunk-OBSTP7YR.js";
69
- import {
70
- isNonNullObject
71
- } from "../../../chunks/chunk-HQLRJ7XW.js";
72
- import "../../../chunks/chunk-DNIOWD7K.js";
73
- import {
74
- unknownToString
75
- } from "../../../chunks/chunk-PUQUSA6S.js";
76
- import "../../../chunks/chunk-OSAXBA7G.js";
77
- import "../../../chunks/chunk-WSFCRVEQ.js";
78
-
79
- // src/node/images/transform/index.ts
80
- var validators = {
81
- ["blur" /* BLUR */]: isBlurOperationParams,
82
- ["brighten" /* BRIGHTEN */]: isBrightenOperationParams,
83
- ["extend" /* EXTEND */]: isExtendOperationParams,
84
- ["extract" /* EXTRACT */]: isExtractOperationParams,
85
- ["flatten" /* FLATTEN */]: isFlattenOperationParams,
86
- ["hue" /* HUE */]: isHueOperationParams,
87
- ["level" /* LEVEL */]: isLevelOperationParams,
88
- ["lighten" /* LIGHTEN */]: isLightenOperationParams,
89
- ["normalize" /* NORMALIZE */]: isNormalizeOperationParams,
90
- ["overlay" /* OVERLAY */]: isOverlayOperationParams,
91
- ["resize" /* RESIZE */]: isResizeOperationParams,
92
- ["rotate" /* ROTATE */]: isRotateOperationParams,
93
- ["saturate" /* SATURATE */]: isSaturateOperationParams
1
+ import * as Outcome from '../../../agnostic/misc/outcome/index.js';
2
+ import { unknownToString } from '../../../agnostic/errors/unknown-to-string/index.js';
3
+ import { isNonNullObject } from '../../../agnostic/objects/is-object/index.js';
4
+ import { OpName, TransformErrCodes } from '../types.js';
5
+ import { toSharpInstance } from '../utils/index.js';
6
+ import { blur, isBlurOperationParams } from './operations/blur/index.js';
7
+ import { brighten, isBrightenOperationParams } from './operations/brighten/index.js';
8
+ import { extend, isExtendOperationParams } from './operations/extend/index.js';
9
+ import { extract, isExtractOperationParams } from './operations/extract/index.js';
10
+ import { flatten, isFlattenOperationParams } from './operations/flatten/index.js';
11
+ import { flip } from './operations/flip/index.js';
12
+ import { flop } from './operations/flop/index.js';
13
+ import { hue, isHueOperationParams } from './operations/hue/index.js';
14
+ import { level, isLevelOperationParams } from './operations/level/index.js';
15
+ import { lighten, isLightenOperationParams } from './operations/lighten/index.js';
16
+ import { normalize, isNormalizeOperationParams } from './operations/normalize/index.js';
17
+ import { overlay, isOverlayOperationParams } from './operations/overlay/index.js';
18
+ import { resize, isResizeOperationParams } from './operations/resize/index.js';
19
+ import { rotate, isRotateOperationParams } from './operations/rotate/index.js';
20
+ import { saturate, isSaturateOperationParams } from './operations/saturate/index.js';
21
+ const validators = {
22
+ [OpName.BLUR]: isBlurOperationParams,
23
+ [OpName.BRIGHTEN]: isBrightenOperationParams,
24
+ [OpName.EXTEND]: isExtendOperationParams,
25
+ [OpName.EXTRACT]: isExtractOperationParams,
26
+ [OpName.FLATTEN]: isFlattenOperationParams,
27
+ [OpName.HUE]: isHueOperationParams,
28
+ [OpName.LEVEL]: isLevelOperationParams,
29
+ [OpName.LIGHTEN]: isLightenOperationParams,
30
+ [OpName.NORMALIZE]: isNormalizeOperationParams,
31
+ [OpName.OVERLAY]: isOverlayOperationParams,
32
+ [OpName.RESIZE]: isResizeOperationParams,
33
+ [OpName.ROTATE]: isRotateOperationParams,
34
+ [OpName.SATURATE]: isSaturateOperationParams
94
35
  };
95
- function isOperationDescriptor(obj) {
96
- if (!isNonNullObject(obj)) return makeFailure("Invalid operation descriptor");
97
- if (!("name" in obj) || typeof obj.name !== "string") return makeFailure("Field named 'name' in operation descriptor is required and must be a string");
98
- const name = obj.name;
99
- const validateOperation = (validatorFn) => {
100
- const result = validatorFn(obj);
101
- if (result.success) return makeSuccess({
102
- name: obj.name,
103
- ...result.payload
104
- });
105
- return makeFailure(result.error);
106
- };
107
- const simpleOperations = /* @__PURE__ */ new Set(["flip" /* FLIP */, "flop" /* FLOP */]);
108
- if (simpleOperations.has(name)) return makeSuccess({
109
- name
110
- });
111
- const validator = validators[name];
112
- if (validator !== void 0) return validateOperation(validator);
113
- return makeFailure("Invalid operation descriptor");
36
+ /**
37
+ * Validates and checks if an object is a valid operation descriptor.
38
+ *
39
+ * @param obj - The object to validate.
40
+ * @returns
41
+ * - On success: `Outcome.makeSuccess(descriptor)` with the validated operation descriptor.
42
+ * - On failure: `Outcome.makeFailure(errStr)` describing the validation error.
43
+ */
44
+ export function isOperationDescriptor(obj) {
45
+ if (!isNonNullObject(obj))
46
+ return Outcome.makeFailure('Invalid operation descriptor');
47
+ if (!('name' in obj) || typeof obj.name !== 'string')
48
+ return Outcome.makeFailure('Field named \'name\' in operation descriptor is required and must be a string');
49
+ const name = obj.name;
50
+ const validateOperation = (validatorFn) => {
51
+ const result = validatorFn(obj);
52
+ if (result.success)
53
+ return Outcome.makeSuccess({
54
+ name: obj.name,
55
+ ...result.payload
56
+ });
57
+ return Outcome.makeFailure(result.error);
58
+ };
59
+ const simpleOperations = new Set([OpName.FLIP, OpName.FLOP]);
60
+ if (simpleOperations.has(name))
61
+ return Outcome.makeSuccess({
62
+ name: name
63
+ });
64
+ const validator = validators[name];
65
+ if (validator !== undefined)
66
+ return validateOperation(validator);
67
+ return Outcome.makeFailure('Invalid operation descriptor');
114
68
  }
115
- async function transform(input, operationsSequence, limits) {
116
- let sharpInstance = await toSharpInstance(input);
117
- const start = Date.now();
118
- const deadline = limits?.timeoutMs !== void 0 ? start + limits.timeoutMs : void 0;
119
- const runWithOpTimeout = async (op) => {
120
- return limits?.opTimeoutMs === void 0 ? await op() : await Promise.race([op(), new Promise(
121
- (resolve) => setTimeout(
122
- () => resolve("op-timeout" /* OP_TIMEOUT */),
123
- limits.opTimeoutMs
124
- )
125
- )]);
126
- };
127
- for (const operation of operationsSequence) {
128
- if (deadline !== void 0 && Date.now() > deadline) return makeFailure({
129
- code: "process-timeout" /* PROCESS_TIMEOUT */,
130
- details: "Process timed out"
131
- });
132
- let result;
133
- try {
134
- result = await runWithOpTimeout(async () => {
135
- switch (operation.name) {
136
- case "blur" /* BLUR */:
137
- return await blur(sharpInstance, operation);
138
- case "brighten" /* BRIGHTEN */:
139
- return await brighten(sharpInstance, operation);
140
- case "extend" /* EXTEND */:
141
- return await extend(sharpInstance, operation);
142
- case "extract" /* EXTRACT */:
143
- return await extract(sharpInstance, operation);
144
- case "flatten" /* FLATTEN */:
145
- return await flatten(sharpInstance, operation);
146
- case "flip" /* FLIP */:
147
- return await flip(sharpInstance);
148
- case "flop" /* FLOP */:
149
- return await flop(sharpInstance);
150
- case "hue" /* HUE */:
151
- return await hue(sharpInstance, operation);
152
- case "level" /* LEVEL */:
153
- return await level(sharpInstance, operation);
154
- case "lighten" /* LIGHTEN */:
155
- return await lighten(sharpInstance, operation);
156
- case "normalize" /* NORMALIZE */:
157
- return await normalize(sharpInstance, operation);
158
- case "overlay" /* OVERLAY */:
159
- return await overlay(sharpInstance, operation);
160
- case "resize" /* RESIZE */:
161
- return await resize(sharpInstance, operation);
162
- case "rotate" /* ROTATE */:
163
- return await rotate(sharpInstance, operation);
164
- case "saturate" /* SATURATE */:
165
- return await saturate(sharpInstance, operation);
166
- default:
167
- return sharpInstance;
69
+ /**
70
+ * Applies a sequence of transformations to an image.
71
+ *
72
+ * The function processes operations in order, applying each transformation to the image.
73
+ * Supports timeout limits for both individual operations and the entire process, as well
74
+ * as dimension limits to prevent excessive memory usage.
75
+ *
76
+ * @param input - The image to transform. Can be a Sharp instance, Buffer, CreateOptions, or file path.
77
+ * @param operationsSequence - Array of operation descriptors to apply in sequence.
78
+ * @param [limits] - Optional limits for timeouts and dimensions. See `TransformLimits` for details.
79
+ * @returns
80
+ * - On success: `Outcome.makeSuccess(sharpInstance)` with the transformed Sharp instance.
81
+ * - On failure: `Outcome.makeFailure(error)` with error code and details.
82
+ */
83
+ export async function transform(input, operationsSequence, limits) {
84
+ let sharpInstance = await toSharpInstance(input);
85
+ const start = Date.now();
86
+ const deadline = limits?.timeoutMs !== undefined
87
+ ? start + limits.timeoutMs
88
+ : undefined;
89
+ // Wrap op with per-operation timeout
90
+ const runWithOpTimeout = async (op) => {
91
+ return limits?.opTimeoutMs === undefined
92
+ ? await op()
93
+ : await Promise.race([op(), new Promise(resolve => setTimeout(() => resolve(TransformErrCodes.OP_TIMEOUT), limits.opTimeoutMs))]);
94
+ };
95
+ for (const operation of operationsSequence) {
96
+ // Process timeout check
97
+ if (deadline !== undefined
98
+ && Date.now() > deadline)
99
+ return Outcome.makeFailure({
100
+ code: TransformErrCodes.PROCESS_TIMEOUT,
101
+ details: 'Process timed out'
102
+ });
103
+ // Apply transformation
104
+ let result;
105
+ try {
106
+ result = await runWithOpTimeout(async () => {
107
+ switch (operation.name) {
108
+ case OpName.BLUR: return await blur(sharpInstance, operation);
109
+ case OpName.BRIGHTEN: return await brighten(sharpInstance, operation);
110
+ case OpName.EXTEND: return await extend(sharpInstance, operation);
111
+ case OpName.EXTRACT: return await extract(sharpInstance, operation);
112
+ case OpName.FLATTEN: return await flatten(sharpInstance, operation);
113
+ case OpName.FLIP: return await flip(sharpInstance);
114
+ case OpName.FLOP: return await flop(sharpInstance);
115
+ case OpName.HUE: return await hue(sharpInstance, operation);
116
+ case OpName.LEVEL: return await level(sharpInstance, operation);
117
+ case OpName.LIGHTEN: return await lighten(sharpInstance, operation);
118
+ case OpName.NORMALIZE: return await normalize(sharpInstance, operation);
119
+ case OpName.OVERLAY: return await overlay(sharpInstance, operation);
120
+ case OpName.RESIZE: return await resize(sharpInstance, operation);
121
+ case OpName.ROTATE: return await rotate(sharpInstance, operation);
122
+ case OpName.SATURATE: return await saturate(sharpInstance, operation);
123
+ default: return sharpInstance;
124
+ }
125
+ });
126
+ }
127
+ catch (err) {
128
+ return Outcome.makeFailure({
129
+ code: TransformErrCodes.UNKNOWN_ERROR,
130
+ details: unknownToString(err)
131
+ });
132
+ }
133
+ // Operation timeout check
134
+ if (result === TransformErrCodes.OP_TIMEOUT)
135
+ return Outcome.makeFailure({
136
+ code: TransformErrCodes.OP_TIMEOUT,
137
+ details: 'Operation timed out'
138
+ });
139
+ else {
140
+ sharpInstance = result;
141
+ }
142
+ // Limits checks
143
+ if (limits === undefined)
144
+ continue;
145
+ if (operation.name === OpName.RESIZE
146
+ || operation.name === OpName.EXTEND
147
+ || operation.name === OpName.EXTRACT
148
+ || operation.name === OpName.ROTATE) {
149
+ try {
150
+ const meta = await sharpInstance.metadata(); // can throw
151
+ if (limits.width !== undefined
152
+ && meta.width > limits.width)
153
+ return Outcome.makeFailure({
154
+ code: TransformErrCodes.WIDTH_LIMIT_EXCEEDED,
155
+ details: `Image width exceeded the limit (${meta.width}px)`
156
+ });
157
+ if (limits.height !== undefined
158
+ && meta.height > limits.height)
159
+ return Outcome.makeFailure({
160
+ code: TransformErrCodes.HEIGHT_LIMIT_EXCEEDED,
161
+ details: `Image height exceeded the limit (${meta.height}px)`
162
+ });
163
+ }
164
+ catch (err) {
165
+ return Outcome.makeFailure({
166
+ code: TransformErrCodes.UNKNOWN_ERROR,
167
+ details: `Failed to read metadata: ${unknownToString(err)}`
168
+ });
169
+ }
168
170
  }
169
- });
170
- } catch (err) {
171
- return makeFailure({
172
- code: "unknown-error" /* UNKNOWN_ERROR */,
173
- details: unknownToString(err)
174
- });
175
- }
176
- if (result === "op-timeout" /* OP_TIMEOUT */) return makeFailure({
177
- code: "op-timeout" /* OP_TIMEOUT */,
178
- details: "Operation timed out"
179
- });
180
- else {
181
- sharpInstance = result;
182
- }
183
- if (limits === void 0) continue;
184
- if (operation.name === "resize" /* RESIZE */ || operation.name === "extend" /* EXTEND */ || operation.name === "extract" /* EXTRACT */ || operation.name === "rotate" /* ROTATE */) {
185
- try {
186
- const meta = await sharpInstance.metadata();
187
- if (limits.width !== void 0 && meta.width > limits.width) return makeFailure({
188
- code: "width-limit-exceeded" /* WIDTH_LIMIT_EXCEEDED */,
189
- details: `Image width exceeded the limit (${meta.width}px)`
190
- });
191
- if (limits.height !== void 0 && meta.height > limits.height) return makeFailure({
192
- code: "height-limit-exceeded" /* HEIGHT_LIMIT_EXCEEDED */,
193
- details: `Image height exceeded the limit (${meta.height}px)`
194
- });
195
- } catch (err) {
196
- return makeFailure({
197
- code: "unknown-error" /* UNKNOWN_ERROR */,
198
- details: `Failed to read metadata: ${unknownToString(err)}`
199
- });
200
- }
201
171
  }
202
- }
203
- return makeSuccess(sharpInstance);
172
+ return Outcome.makeSuccess(sharpInstance);
204
173
  }
205
- export {
206
- isOperationDescriptor,
207
- transform
208
- };
@@ -1,10 +1,12 @@
1
- import {
2
- blur,
3
- isBlurOperationParams
4
- } from "../../../../../chunks/chunk-RART44AF.js";
5
- import "../../../../../chunks/chunk-LUAYN7VJ.js";
6
- import "../../../../../chunks/chunk-WSFCRVEQ.js";
7
- export {
8
- blur,
9
- isBlurOperationParams
10
- };
1
+ import z from 'zod';
2
+ import * as Outcome from '../../../../../agnostic/misc/outcome/index.js';
3
+ export function isBlurOperationParams(obj) {
4
+ const schema = z.object({ sigma: z.number() });
5
+ const result = schema.safeParse(obj);
6
+ if (!result.success)
7
+ return Outcome.makeFailure(result.error.message);
8
+ return Outcome.makeSuccess(result.data);
9
+ }
10
+ export async function blur(sharpInstance, params) {
11
+ return sharpInstance.blur(params.sigma);
12
+ }
@@ -1,10 +1,12 @@
1
- import {
2
- brighten,
3
- isBrightenOperationParams
4
- } from "../../../../../chunks/chunk-OFYGPRWE.js";
5
- import "../../../../../chunks/chunk-LUAYN7VJ.js";
6
- import "../../../../../chunks/chunk-WSFCRVEQ.js";
7
- export {
8
- brighten,
9
- isBrightenOperationParams
10
- };
1
+ import z from 'zod';
2
+ import * as Outcome from '../../../../../agnostic/misc/outcome/index.js';
3
+ export function isBrightenOperationParams(obj) {
4
+ const schema = z.object({ factor: z.number() });
5
+ const result = schema.safeParse(obj);
6
+ if (!result.success)
7
+ return Outcome.makeFailure(result.error.message);
8
+ return Outcome.makeSuccess(result.data);
9
+ }
10
+ export async function brighten(sharpInstance, params) {
11
+ return sharpInstance.modulate({ brightness: params.factor });
12
+ }
@@ -1,17 +1,26 @@
1
- import {
2
- extend,
3
- isExtendOperationParams
4
- } from "../../../../../chunks/chunk-ML22TIBW.js";
5
- import "../../../../../chunks/chunk-HMMPT3UM.js";
6
- import "../../../../../chunks/chunk-LUAYN7VJ.js";
7
- import "../../../../../chunks/chunk-CVMYA5XK.js";
8
- import "../../../../../chunks/chunk-OBSTP7YR.js";
9
- import "../../../../../chunks/chunk-HQLRJ7XW.js";
10
- import "../../../../../chunks/chunk-DNIOWD7K.js";
11
- import "../../../../../chunks/chunk-PUQUSA6S.js";
12
- import "../../../../../chunks/chunk-OSAXBA7G.js";
13
- import "../../../../../chunks/chunk-WSFCRVEQ.js";
14
- export {
15
- extend,
16
- isExtendOperationParams
17
- };
1
+ import z from 'zod';
2
+ import * as Outcome from '../../../../../agnostic/misc/outcome/index.js';
3
+ import { isColor } from '../../../../../agnostic/colors/typechecks/index.js';
4
+ import { toSharpColor } from '../../../utils/index.js';
5
+ export function isExtendOperationParams(obj) {
6
+ const schema = z.object({
7
+ left: z.number().optional(),
8
+ right: z.number().optional(),
9
+ top: z.number().optional(),
10
+ bottom: z.number().optional(),
11
+ extendWith: z.optional(z.enum(['background', 'copy', 'repeat', 'mirror'])),
12
+ background: z.custom(isColor).optional()
13
+ });
14
+ const result = schema.safeParse(obj);
15
+ if (!result.success)
16
+ return Outcome.makeFailure(result.error.message);
17
+ return Outcome.makeSuccess(result.data);
18
+ }
19
+ export async function extend(sharpInstance, params) {
20
+ return sharpInstance.extend({
21
+ ...params,
22
+ background: params.background !== undefined
23
+ ? toSharpColor(params.background)
24
+ : undefined
25
+ });
26
+ }
@@ -1,10 +1,17 @@
1
- import {
2
- extract,
3
- isExtractOperationParams
4
- } from "../../../../../chunks/chunk-ZJR5ASR3.js";
5
- import "../../../../../chunks/chunk-LUAYN7VJ.js";
6
- import "../../../../../chunks/chunk-WSFCRVEQ.js";
7
- export {
8
- extract,
9
- isExtractOperationParams
10
- };
1
+ import z from 'zod';
2
+ import * as Outcome from '../../../../../agnostic/misc/outcome/index.js';
3
+ export function isExtractOperationParams(obj) {
4
+ const schema = z.object({
5
+ left: z.number(),
6
+ top: z.number(),
7
+ width: z.number(),
8
+ height: z.number()
9
+ });
10
+ const result = schema.safeParse(obj);
11
+ if (!result.success)
12
+ return Outcome.makeFailure(result.error.message);
13
+ return Outcome.makeSuccess(result.data);
14
+ }
15
+ export async function extract(sharpInstance, params) {
16
+ return sharpInstance.extract(params);
17
+ }
@@ -1,17 +1,21 @@
1
- import {
2
- flatten,
3
- isFlattenOperationParams
4
- } from "../../../../../chunks/chunk-I5MRXMHR.js";
5
- import "../../../../../chunks/chunk-HMMPT3UM.js";
6
- import "../../../../../chunks/chunk-LUAYN7VJ.js";
7
- import "../../../../../chunks/chunk-CVMYA5XK.js";
8
- import "../../../../../chunks/chunk-OBSTP7YR.js";
9
- import "../../../../../chunks/chunk-HQLRJ7XW.js";
10
- import "../../../../../chunks/chunk-DNIOWD7K.js";
11
- import "../../../../../chunks/chunk-PUQUSA6S.js";
12
- import "../../../../../chunks/chunk-OSAXBA7G.js";
13
- import "../../../../../chunks/chunk-WSFCRVEQ.js";
14
- export {
15
- flatten,
16
- isFlattenOperationParams
17
- };
1
+ import z from 'zod';
2
+ import * as Outcome from '../../../../../agnostic/misc/outcome/index.js';
3
+ import { isColor } from '../../../../../agnostic/colors/typechecks/index.js';
4
+ import { toSharpColor } from '../../../utils/index.js';
5
+ export function isFlattenOperationParams(obj) {
6
+ const schema = z.object({
7
+ background: z.custom(isColor).optional()
8
+ });
9
+ const result = schema.safeParse(obj);
10
+ if (!result.success)
11
+ return Outcome.makeFailure(result.error.message);
12
+ return Outcome.makeSuccess(result.data);
13
+ }
14
+ export async function flatten(sharpInstance, params) {
15
+ const inputBg = params.background;
16
+ const rgbBackground = inputBg !== undefined
17
+ ? toSharpColor(inputBg)
18
+ : undefined;
19
+ const background = rgbBackground ?? rgbBackground;
20
+ return sharpInstance.flatten({ background });
21
+ }
@@ -1,7 +1,3 @@
1
- import {
2
- flip
3
- } from "../../../../../chunks/chunk-WNDMYNDU.js";
4
- import "../../../../../chunks/chunk-WSFCRVEQ.js";
5
- export {
6
- flip
7
- };
1
+ export async function flip(sharpInstance) {
2
+ return sharpInstance.flip();
3
+ }
@@ -1,7 +1,3 @@
1
- import {
2
- flop
3
- } from "../../../../../chunks/chunk-YA2YCZUF.js";
4
- import "../../../../../chunks/chunk-WSFCRVEQ.js";
5
- export {
6
- flop
7
- };
1
+ export async function flop(sharpInstance) {
2
+ return sharpInstance.flop();
3
+ }
@@ -1,10 +1,14 @@
1
- import {
2
- hue,
3
- isHueOperationParams
4
- } from "../../../../../chunks/chunk-OT7QXCH6.js";
5
- import "../../../../../chunks/chunk-LUAYN7VJ.js";
6
- import "../../../../../chunks/chunk-WSFCRVEQ.js";
7
- export {
8
- hue,
9
- isHueOperationParams
10
- };
1
+ import z from 'zod';
2
+ import * as Outcome from '../../../../../agnostic/misc/outcome/index.js';
3
+ export function isHueOperationParams(obj) {
4
+ const schema = z.object({
5
+ rotateDeg: z.number().optional()
6
+ });
7
+ const result = schema.safeParse(obj);
8
+ if (!result.success)
9
+ return Outcome.makeFailure(result.error.message);
10
+ return Outcome.makeSuccess(result.data);
11
+ }
12
+ export async function hue(sharpInstance, params) {
13
+ return sharpInstance.modulate({ hue: params.rotateDeg });
14
+ }
@@ -1,5 +1,5 @@
1
- export * as blur from './blur/index.js'
2
1
  export * as brighten from './brighten/index.js'
2
+ export * as blur from './blur/index.js'
3
3
  export * as extend from './extend/index.js'
4
4
  export * as extract from './extract/index.js'
5
5
  export * as flatten from './flatten/index.js'
@@ -11,5 +11,5 @@ export * as lighten from './lighten/index.js'
11
11
  export * as normalize from './normalize/index.js'
12
12
  export * as overlay from './overlay/index.js'
13
13
  export * as resize from './resize/index.js'
14
- export * as rotate from './rotate/index.js'
15
14
  export * as saturate from './saturate/index.js'
15
+ export * as rotate from './rotate/index.js'
@@ -1,5 +1,5 @@
1
- export * as blur from './blur/index.js'
2
1
  export * as brighten from './brighten/index.js'
2
+ export * as blur from './blur/index.js'
3
3
  export * as extend from './extend/index.js'
4
4
  export * as extract from './extract/index.js'
5
5
  export * as flatten from './flatten/index.js'
@@ -11,5 +11,5 @@ export * as lighten from './lighten/index.js'
11
11
  export * as normalize from './normalize/index.js'
12
12
  export * as overlay from './overlay/index.js'
13
13
  export * as resize from './resize/index.js'
14
- export * as rotate from './rotate/index.js'
15
14
  export * as saturate from './saturate/index.js'
15
+ export * as rotate from './rotate/index.js'