@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
@@ -0,0 +1,137 @@
1
+ /* Video element triggers */
2
+ export const muteAttributeWorkaround = (video, shouldMute, setIsSoundOn) => {
3
+ if (video === null)
4
+ return;
5
+ if (!shouldMute)
6
+ return;
7
+ const currentMuted = video.getAttribute('muted');
8
+ if (currentMuted !== null)
9
+ return;
10
+ video.setAttribute('muted', '');
11
+ video.load();
12
+ setIsSoundOn(false);
13
+ };
14
+ export const forceMute = (video, setIsSoundOn) => {
15
+ if (video === null)
16
+ return;
17
+ video.muted = true;
18
+ setIsSoundOn(false);
19
+ };
20
+ export const forceLoud = (video, setIsSoundOn) => {
21
+ if (video === null)
22
+ return;
23
+ video.muted = false;
24
+ setIsSoundOn(true);
25
+ };
26
+ export const forceVolume = (video, volumePercent, setVolume) => {
27
+ if (video === null)
28
+ return;
29
+ const volume = volumePercent / 100;
30
+ video.volume = volume;
31
+ setVolume(volume);
32
+ };
33
+ export const forceCurrentTime = (video, time, setCurrentTime) => {
34
+ if (video === null)
35
+ return;
36
+ video.currentTime = time;
37
+ setCurrentTime(time);
38
+ };
39
+ export const forcePlay = async (video, shouldDisclaimerBeOn, setIsPlaying) => {
40
+ if (shouldDisclaimerBeOn) {
41
+ setIsPlaying(false);
42
+ return;
43
+ }
44
+ if (video === null)
45
+ return;
46
+ try {
47
+ await video.play();
48
+ setIsPlaying(true);
49
+ }
50
+ catch (e) {
51
+ console.error(e);
52
+ }
53
+ };
54
+ export const forcePause = (video, setIsPlaying) => {
55
+ if (video === null) {
56
+ setIsPlaying(false);
57
+ return;
58
+ }
59
+ try {
60
+ video.pause();
61
+ setIsPlaying(false);
62
+ }
63
+ catch (e) {
64
+ console.error(e);
65
+ }
66
+ };
67
+ export const forcePlaybackRate = (video, rate, setPlaybackRate) => {
68
+ if (video === null)
69
+ return;
70
+ video.playbackRate = rate;
71
+ setPlaybackRate(rate);
72
+ };
73
+ export const forceFullScreen = async (video, shouldDisclaimerBeOn, setIsFullscreen) => {
74
+ if (shouldDisclaimerBeOn)
75
+ return;
76
+ if (video === null) {
77
+ setIsFullscreen(false);
78
+ return;
79
+ }
80
+ try {
81
+ await video.requestFullscreen();
82
+ setIsFullscreen(true);
83
+ }
84
+ catch (e) {
85
+ setIsFullscreen(false);
86
+ console.error(e);
87
+ }
88
+ };
89
+ export const forceExitFullScreen = async (video, setIsFullscreen) => {
90
+ if (video === null || document.fullscreenElement !== video) {
91
+ setIsFullscreen(false);
92
+ return;
93
+ }
94
+ try {
95
+ await document.exitFullscreen();
96
+ setIsFullscreen(false);
97
+ }
98
+ catch (e) {
99
+ console.error(e);
100
+ }
101
+ };
102
+ /* Time & formats */
103
+ export function secondsToMs(seconds) {
104
+ return seconds * 1000;
105
+ }
106
+ export function formatTime(ms, format, fps = 25) {
107
+ const totalSeconds = Math.floor(ms / 1000);
108
+ const hours = Math.floor(totalSeconds / 3600);
109
+ const minutes = Math.floor((totalSeconds % 3600) / 60);
110
+ const seconds = Math.floor(totalSeconds % 60);
111
+ const frames = Math.floor(((ms % 1000) / 1000) * fps);
112
+ const msRest = Math.floor(ms % 1000);
113
+ const tokens = {
114
+ hh: String(hours).padStart(2, '0'),
115
+ mm: String(minutes).padStart(2, '0'),
116
+ ss: String(seconds).padStart(2, '0'),
117
+ frame: String(frames).padStart(2, '0'),
118
+ ms: String(msRest).padStart(3, '0'),
119
+ h: hours,
120
+ m: minutes,
121
+ s: seconds,
122
+ f: frames
123
+ };
124
+ const result = Object
125
+ .keys(tokens)
126
+ .sort((a, b) => b.length - a.length)
127
+ .reduce((acc, t) => acc.replace(new RegExp(t, 'g'), String(tokens[t])), format);
128
+ return result;
129
+ }
130
+ export const getTimelineClickProgress = (event, timeline, video) => {
131
+ if (video === null || timeline === null)
132
+ return 0;
133
+ const timelineRect = event.currentTarget.getBoundingClientRect();
134
+ const position = event.clientX - timelineRect.left;
135
+ const progress = Math.min(1, Math.max(0, position / timelineRect.width));
136
+ return progress;
137
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -1,15 +1,15 @@
1
1
  export * as beforeAfter from './BeforeAfter/index.js'
2
- export * as disclaimer from './Disclaimer/index.js'
3
2
  export * as drawer from './Drawer/index.js'
4
3
  export * as eventListener from './EventListener/index.js'
4
+ export * as disclaimer from './Disclaimer/index.js'
5
5
  export * as gallery from './Gallery/index.js'
6
6
  export * as image from './Image/index.js'
7
7
  export * as intersectionObserver from './IntersectionObserver/index.js'
8
8
  export * as overlayer from './Overlayer/index.js'
9
9
  export * as paginator from './Paginator/index.js'
10
10
  export * as resizeObserver from './ResizeObserver/index.js'
11
- export * as scrllgngn from './Scrllgngn/index.js'
12
11
  export * as scrollListener from './ScrollListener/index.js'
12
+ export * as scrllgngn from './Scrllgngn/index.js'
13
13
  export * as sequencer from './Sequencer/index.js'
14
14
  export * as shadowRoot from './ShadowRoot/index.js'
15
15
  export * as subtitles from './Subtitles/index.js'
@@ -1,15 +1,15 @@
1
1
  export * as beforeAfter from './BeforeAfter/index.js'
2
- export * as disclaimer from './Disclaimer/index.js'
3
2
  export * as drawer from './Drawer/index.js'
4
3
  export * as eventListener from './EventListener/index.js'
4
+ export * as disclaimer from './Disclaimer/index.js'
5
5
  export * as gallery from './Gallery/index.js'
6
6
  export * as image from './Image/index.js'
7
7
  export * as intersectionObserver from './IntersectionObserver/index.js'
8
8
  export * as overlayer from './Overlayer/index.js'
9
9
  export * as paginator from './Paginator/index.js'
10
10
  export * as resizeObserver from './ResizeObserver/index.js'
11
- export * as scrllgngn from './Scrllgngn/index.js'
12
11
  export * as scrollListener from './ScrollListener/index.js'
12
+ export * as scrllgngn from './Scrllgngn/index.js'
13
13
  export * as sequencer from './Sequencer/index.js'
14
14
  export * as shadowRoot from './ShadowRoot/index.js'
15
15
  export * as subtitles from './Subtitles/index.js'
@@ -0,0 +1,18 @@
1
+ export const beforeAfter = 'dsed-before-after';
2
+ export const disclaimer = 'dsed-disclaimer';
3
+ export const drawer = 'dsed-drawer';
4
+ export const eventListener = 'dsed-event-listener';
5
+ export const gallery = 'dsed-gallery';
6
+ export const image = 'dsed-image';
7
+ export const intersectionObserver = 'dsed-intersection-observer';
8
+ export const overlayer = 'dsed-overlayer';
9
+ export const paginator = 'dsed-paginator';
10
+ export const resizeObserver = 'dsed-resize-observer';
11
+ export const scrllgngn = 'dsed-scrllgngn';
12
+ export const scrollListener = 'dsed-scroll-listener';
13
+ export const sequencer = 'dsed-sequencer';
14
+ export const shadowRoot = 'dsed-shadow-root';
15
+ export const subtitles = 'dsed-subtitles';
16
+ export const theatre = 'dsed-theatre';
17
+ export const uiModule = 'dsed-ui-module';
18
+ export const video = 'dsed-video';
@@ -1,7 +1,12 @@
1
- import {
2
- mergeClassNames
3
- } from "../../chunks/chunk-OFCSIK6J.js";
4
- import "../../chunks/chunk-WSFCRVEQ.js";
5
- export {
6
- mergeClassNames
7
- };
1
+ export function mergeClassNames(...names) {
2
+ return names.map(name => {
3
+ if (typeof name !== 'string' && !Array.isArray(name))
4
+ return false;
5
+ if (Array.isArray(name))
6
+ return mergeClassNames(...name);
7
+ if (name.trim() === '')
8
+ return false;
9
+ return name.trim();
10
+ }).filter((name) => typeof name === 'string')
11
+ .join(' ');
12
+ }
@@ -0,0 +1 @@
1
+ export {};
package/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- export * as agnostic from './agnostic/index.js'
2
- export * as chunks from './chunks/index.js'
3
1
  export * as components from './components/index.js'
4
2
  export * as node from './node/index.js'
3
+ export * as agnostic from './agnostic/index.js'
package/index.js CHANGED
@@ -1,4 +1,3 @@
1
- export * as agnostic from './agnostic/index.js'
2
- export * as chunks from './chunks/index.js'
3
1
  export * as components from './components/index.js'
4
2
  export * as node from './node/index.js'
3
+ export * as agnostic from './agnostic/index.js'
@@ -0,0 +1,6 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ describe('FAKE-TEST', () => {
3
+ it('fake test', () => {
4
+ expect(1).toBe(1);
5
+ });
6
+ });
@@ -1,9 +1,68 @@
1
- import {
2
- copyDir
3
- } from "../../../../../chunks/chunk-P4J6S2WQ.js";
4
- import "../../../../../chunks/chunk-LUAYN7VJ.js";
5
- import "../../../../../chunks/chunk-PUQUSA6S.js";
6
- import "../../../../../chunks/chunk-WSFCRVEQ.js";
7
- export {
8
- copyDir
9
- };
1
+ import { ListObjectsV2Command, CopyObjectCommand, HeadObjectCommand } from '@aws-sdk/client-s3';
2
+ import * as Outcome from '../../../../../agnostic/misc/outcome/index.js';
3
+ import { unknownToString } from '../../../../../agnostic/errors/unknown-to-string/index.js';
4
+ /**
5
+ * Recursively copies every object under `sourceDir` to the same relative path
6
+ * beneath `targetDir` in a single S3 bucket (AWS SDK v3).
7
+ *
8
+ * @param {S3Client} client - The v3 S3 client instance.
9
+ * @param {string} bucketName - The name of the S3 bucket.
10
+ * @param {string} sourceDir - The source directory prefix to copy from.
11
+ * @param {string} targetDir - The target directory prefix to copy to.
12
+ * @param {CopyDirOptions} [options] - Optional copy‑behaviour configuration.
13
+ * @param {Omit<ListObjectsV2CommandInput,'Bucket'|'Prefix'>} [options.listObjectsOptions] - Extra list parameters.
14
+ * @param {Omit<CopyObjectCommandInput,'Bucket'|'Key'|'CopySource'>} [options.copyOptions] - Extra copy parameters.
15
+ * @param {boolean} [options.overwrite=false] - Whether to overwrite existing files at target.
16
+ * @returns {Promise<Outcome.Either<true, string>>}
17
+ * - Success: `Outcome.makeSuccess(true)` if every object is copied.
18
+ * - Failure: `Outcome.makeFailure(errStr)` on error.
19
+ */
20
+ export async function copyDir(client, bucketName, sourceDir, targetDir, options) {
21
+ const { listObjectsOptions, copyOptions, overwrite = false } = options ?? {};
22
+ const from = sourceDir.endsWith('/') ? sourceDir : `${sourceDir}/`;
23
+ const to = targetDir.endsWith('/') ? targetDir : `${targetDir}/`;
24
+ try {
25
+ let token;
26
+ do {
27
+ const listResp = await client.send(new ListObjectsV2Command({
28
+ Bucket: bucketName,
29
+ Prefix: from,
30
+ ContinuationToken: token,
31
+ ...listObjectsOptions
32
+ }));
33
+ for (const obj of listResp.Contents ?? []) {
34
+ if (obj.Key === undefined)
35
+ continue;
36
+ const rel = obj.Key.substring(from.length);
37
+ const dest = `${to}${rel}`;
38
+ if (!overwrite) {
39
+ try {
40
+ await client.send(new HeadObjectCommand({ Bucket: bucketName, Key: dest }));
41
+ // If headObject succeeds, file exists - skip copy
42
+ continue;
43
+ }
44
+ catch (err) {
45
+ const code = err?.name ?? err?.$metadata?.httpStatusCode;
46
+ if (code !== 'NotFound' && code !== 404) {
47
+ return Outcome.makeFailure(unknownToString(err));
48
+ }
49
+ // Not found, proceed with copy
50
+ }
51
+ }
52
+ await client.send(new CopyObjectCommand({
53
+ Bucket: bucketName,
54
+ Key: dest,
55
+ CopySource: `${bucketName}/${obj.Key}`,
56
+ ...copyOptions
57
+ }));
58
+ }
59
+ token = listResp.IsTruncated === true
60
+ ? listResp.NextContinuationToken
61
+ : undefined;
62
+ } while (token !== undefined);
63
+ return Outcome.makeSuccess(true);
64
+ }
65
+ catch (err) {
66
+ return Outcome.makeFailure(unknownToString(err));
67
+ }
68
+ }
@@ -1,4 +1,4 @@
1
1
  export * as copyDir from './copy-dir/index.js'
2
2
  export * as list from './list/index.js'
3
- export * as moveDir from './move-dir/index.js'
4
3
  export * as removeDir from './remove-dir/index.js'
4
+ export * as moveDir from './move-dir/index.js'
@@ -1,4 +1,4 @@
1
1
  export * as copyDir from './copy-dir/index.js'
2
2
  export * as list from './list/index.js'
3
- export * as moveDir from './move-dir/index.js'
4
3
  export * as removeDir from './remove-dir/index.js'
4
+ export * as moveDir from './move-dir/index.js'
@@ -1,9 +1,33 @@
1
- import {
2
- list
3
- } from "../../../../../chunks/chunk-3RZMW72G.js";
4
- import "../../../../../chunks/chunk-LUAYN7VJ.js";
5
- import "../../../../../chunks/chunk-PUQUSA6S.js";
6
- import "../../../../../chunks/chunk-WSFCRVEQ.js";
7
- export {
8
- list
9
- };
1
+ import { ListObjectsV2Command } from '@aws-sdk/client-s3';
2
+ import * as Outcome from '../../../../../agnostic/misc/outcome/index.js';
3
+ import { unknownToString } from '../../../../../agnostic/errors/unknown-to-string/index.js';
4
+ /**
5
+ * Lists all direct‑child object keys under a given directory prefix in an S3
6
+ * bucket (AWS SDK v3). The listing is **non‑recursive**.
7
+ *
8
+ * @param {S3Client} client - The v3 S3 client used to list objects.
9
+ * @param {string} bucketName - The name of the S3 bucket.
10
+ * @param {string} directoryPath - The directory prefix to list.
11
+ * @param {ListOptions} [options] - Additional parameters for `ListObjectsV2`.
12
+ * @returns {Promise<Outcome.Either<string[], string>>}
13
+ * - Success: `Outcome.makeSuccess(keys)` where `keys` is an array of object keys.
14
+ * - Failure: `Outcome.makeFailure(errStr)` if the list operation fails.
15
+ */
16
+ export async function list(client, bucketName, directoryPath, options) {
17
+ const prefix = directoryPath.endsWith('/') ? directoryPath : `${directoryPath}/`;
18
+ try {
19
+ const response = await client.send(new ListObjectsV2Command({
20
+ Bucket: bucketName,
21
+ Prefix: prefix,
22
+ Delimiter: '/',
23
+ ...options
24
+ }));
25
+ const keys = (response.Contents ?? [])
26
+ .map(obj => obj.Key)
27
+ .filter((e) => e !== undefined);
28
+ return Outcome.makeSuccess(keys);
29
+ }
30
+ catch (err) {
31
+ return Outcome.makeFailure(unknownToString(err));
32
+ }
33
+ }
@@ -1,9 +1,69 @@
1
- import {
2
- moveDir
3
- } from "../../../../../chunks/chunk-B5V7D2ZL.js";
4
- import "../../../../../chunks/chunk-LUAYN7VJ.js";
5
- import "../../../../../chunks/chunk-PUQUSA6S.js";
6
- import "../../../../../chunks/chunk-WSFCRVEQ.js";
7
- export {
8
- moveDir
9
- };
1
+ import { ListObjectsV2Command, CopyObjectCommand, DeleteObjectCommand, HeadObjectCommand } from '@aws-sdk/client-s3';
2
+ import * as Outcome from '../../../../../agnostic/misc/outcome/index.js';
3
+ import { unknownToString } from '../../../../../agnostic/errors/unknown-to-string/index.js';
4
+ /**
5
+ * Recursively moves every object under `sourceDir` to the corresponding path
6
+ * under `targetDir` within the same S3 bucket (AWS SDK v3).
7
+ *
8
+ * Behaviour when `overwrite` is **false** (default): abort if *any* destination
9
+ * key already exists.
10
+ *
11
+ * @param {S3Client} client - The v3 S3 client instance.
12
+ * @param {string} bucketName - The name of the S3 bucket.
13
+ * @param {string} sourceDir - The source directory prefix to move from.
14
+ * @param {string} targetDir - The target directory prefix to move to.
15
+ * @param {MoveDirOptions} [options] - Optional configuration.
16
+ * @returns {Promise<Outcome.Either<true, string>>}
17
+ * - On success: `Outcome.makeSuccess(true)`.
18
+ * - On failure: `Outcome.makeFailure(errStr)`.
19
+ */
20
+ export async function moveDir(client, bucketName, sourceDir, targetDir, options) {
21
+ const { listObjectsOptions, copyOptions, deleteOptions, overwrite = false } = options ?? {};
22
+ const from = sourceDir.endsWith('/') ? sourceDir : `${sourceDir}/`;
23
+ const to = targetDir.endsWith('/') ? targetDir : `${targetDir}/`;
24
+ try {
25
+ let token;
26
+ do {
27
+ const listResp = await client.send(new ListObjectsV2Command({
28
+ Bucket: bucketName,
29
+ Prefix: from,
30
+ ContinuationToken: token,
31
+ ...listObjectsOptions
32
+ }));
33
+ for (const obj of listResp.Contents ?? []) {
34
+ if (obj.Key === undefined)
35
+ continue;
36
+ const rel = obj.Key.substring(from.length);
37
+ const dest = `${to}${rel}`;
38
+ if (!overwrite) {
39
+ try {
40
+ await client.send(new HeadObjectCommand({ Bucket: bucketName, Key: dest }));
41
+ throw new Error(`Object already exists at ${dest}.`);
42
+ }
43
+ catch (err) {
44
+ if (err.$metadata?.httpStatusCode !== 404 && err.name !== 'NotFound')
45
+ throw err;
46
+ }
47
+ }
48
+ await client.send(new CopyObjectCommand({
49
+ Bucket: bucketName,
50
+ Key: dest,
51
+ CopySource: `${bucketName}/${obj.Key}`,
52
+ ...copyOptions
53
+ }));
54
+ await client.send(new DeleteObjectCommand({
55
+ Bucket: bucketName,
56
+ Key: obj.Key,
57
+ ...deleteOptions
58
+ }));
59
+ }
60
+ token = listResp.IsTruncated === true
61
+ ? listResp.NextContinuationToken
62
+ : undefined;
63
+ } while (token !== undefined);
64
+ return Outcome.makeSuccess(true);
65
+ }
66
+ catch (err) {
67
+ return Outcome.makeFailure(unknownToString(err));
68
+ }
69
+ }
@@ -1,9 +1,59 @@
1
- import {
2
- removeDir
3
- } from "../../../../../chunks/chunk-UTQNGKGQ.js";
4
- import "../../../../../chunks/chunk-LUAYN7VJ.js";
5
- import "../../../../../chunks/chunk-PUQUSA6S.js";
6
- import "../../../../../chunks/chunk-WSFCRVEQ.js";
7
- export {
8
- removeDir
9
- };
1
+ import { ListObjectsV2Command, DeleteObjectsCommand } from '@aws-sdk/client-s3';
2
+ import * as Outcome from '../../../../../agnostic/misc/outcome/index.js';
3
+ import { unknownToString } from '../../../../../agnostic/errors/unknown-to-string/index.js';
4
+ /**
5
+ * Recursively deletes all objects under a directory prefix in an S3 bucket
6
+ * using the AWS SDK v3 client. Handles pagination and the 1 000‑key limit of
7
+ * `DeleteObjects`.
8
+ *
9
+ * @param {S3Client} client - The v3 S3 client instance.
10
+ * @param {string} bucketName - The name of the S3 bucket.
11
+ * @param {string} directoryPath - The “directory” prefix to delete.
12
+ * @param {RemoveDirOptions} [options] - Optional listing/deletion configuration.
13
+ * @returns {Promise<Outcome.Either<true, string>>}
14
+ * - On success: `Outcome.makeSuccess(true)` – deletion succeeded, or prefix
15
+ * absent and `ignoreMissing` is true.
16
+ * - On failure: `Outcome.makeFailure(errStr)` if deletion fails, or prefix
17
+ * absent and `ignoreMissing` is false.
18
+ */
19
+ export async function removeDir(client, bucketName, directoryPath, options) {
20
+ const { listObjectsOptions, deleteObjectsOptions, ignoreMissing = true } = options ?? {};
21
+ const prefix = directoryPath.endsWith('/') ? directoryPath : `${directoryPath}/`;
22
+ let continuationToken;
23
+ let anyFound = false;
24
+ try {
25
+ do {
26
+ const listResp = await client.send(new ListObjectsV2Command({
27
+ Bucket: bucketName,
28
+ Prefix: prefix,
29
+ ContinuationToken: continuationToken,
30
+ ...listObjectsOptions
31
+ }));
32
+ const keys = (listResp.Contents ?? [])
33
+ .map(o => o.Key)
34
+ .filter(e => e !== undefined);
35
+ if (keys.length > 0) {
36
+ anyFound = true;
37
+ // Delete in batches of ≤ 1 000 keys
38
+ for (let i = 0; i < keys.length; i += 1000) {
39
+ const chunk = keys.slice(i, i + 1000);
40
+ await client.send(new DeleteObjectsCommand({
41
+ Bucket: bucketName,
42
+ Delete: { Objects: chunk.map(Key => ({ Key })) },
43
+ ...deleteObjectsOptions
44
+ }));
45
+ }
46
+ }
47
+ continuationToken = listResp.IsTruncated === true
48
+ ? listResp.NextContinuationToken
49
+ : undefined;
50
+ } while (continuationToken !== undefined);
51
+ if (!anyFound && !ignoreMissing) {
52
+ return Outcome.makeFailure(`No objects found for prefix "${prefix}".`);
53
+ }
54
+ return Outcome.makeSuccess(true);
55
+ }
56
+ catch (err) {
57
+ return Outcome.makeFailure(unknownToString(err));
58
+ }
59
+ }
@@ -1,9 +1,43 @@
1
- import {
2
- copy
3
- } from "../../../../../chunks/chunk-U664BT44.js";
4
- import "../../../../../chunks/chunk-LUAYN7VJ.js";
5
- import "../../../../../chunks/chunk-PUQUSA6S.js";
6
- import "../../../../../chunks/chunk-WSFCRVEQ.js";
7
- export {
8
- copy
9
- };
1
+ import { CopyObjectCommand, HeadObjectCommand } from '@aws-sdk/client-s3';
2
+ import * as Outcome from '../../../../../agnostic/misc/outcome/index.js';
3
+ import { unknownToString } from '../../../../../agnostic/errors/unknown-to-string/index.js';
4
+ /**
5
+ * Copies an object from one key to another within the same S3 bucket.
6
+ *
7
+ * @param {S3Client} client - The v3 S3 client instance.
8
+ * @param {string} bucketName - The name of the S3 bucket.
9
+ * @param {string} sourcePath - The key of the source object.
10
+ * @param {string} targetPath - The key where the object will be copied.
11
+ * @param {CopyOptions} [options] - Optional copy configuration.
12
+ * @param {Omit<CopyObjectCommandInput,'Bucket'|'Key'|'CopySource'>} [options.copyOptions] - Extra copy params.
13
+ * @param {boolean} [options.overwrite=false] - Whether to overwrite an existing object.
14
+ * @returns {Promise<Outcome.Either<true, string>>}
15
+ * - On success: `Outcome.makeSuccess(true)`.
16
+ * - On failure: `Outcome.makeFailure(errStr)`.
17
+ */
18
+ export async function copy(client, bucketName, sourcePath, targetPath, options) {
19
+ const { copyOptions, overwrite = false } = options ?? {};
20
+ try {
21
+ if (!overwrite) {
22
+ try {
23
+ await client.send(new HeadObjectCommand({ Bucket: bucketName, Key: targetPath }));
24
+ return Outcome.makeFailure(`Object already exists at ${targetPath}.`);
25
+ }
26
+ catch (err) {
27
+ const notFound = err.$metadata?.httpStatusCode === 404 || err.name === 'NotFound';
28
+ if (!notFound)
29
+ throw err; // propagate unexpected errors
30
+ }
31
+ }
32
+ await client.send(new CopyObjectCommand({
33
+ Bucket: bucketName,
34
+ Key: targetPath,
35
+ CopySource: `${bucketName}/${sourcePath}`,
36
+ ...copyOptions
37
+ }));
38
+ return Outcome.makeSuccess(true);
39
+ }
40
+ catch (err) {
41
+ return Outcome.makeFailure(unknownToString(err));
42
+ }
43
+ }
@@ -1,9 +1,30 @@
1
- import {
2
- download
3
- } from "../../../../../chunks/chunk-2GJSPEO4.js";
4
- import "../../../../../chunks/chunk-LUAYN7VJ.js";
5
- import "../../../../../chunks/chunk-PUQUSA6S.js";
6
- import "../../../../../chunks/chunk-WSFCRVEQ.js";
7
- export {
8
- download
9
- };
1
+ import { GetObjectCommand } from '@aws-sdk/client-s3';
2
+ import * as Outcome from '../../../../../agnostic/misc/outcome/index.js';
3
+ import { unknownToString } from '../../../../../agnostic/errors/unknown-to-string/index.js';
4
+ /**
5
+ * Downloads a file from a specified Amazon S3 bucket.
6
+ *
7
+ * The function streams the object’s content back as a Node `Readable`.
8
+ *
9
+ * @param {S3Client} client - The v3 S3 client instance.
10
+ * @param {string} bucketName - The name of the S3 bucket.
11
+ * @param {string} sourcePath - The key of the object to download.
12
+ * @param {DownloadOptions} [options] - Extra parameters for the download.
13
+ * @returns {Promise<Outcome.Either<Readable, string>>}
14
+ * - On success: `Outcome.makeSuccess(stream)` containing the file content.
15
+ * - On failure: `Outcome.makeFailure(errStr)`.
16
+ */
17
+ export async function download(client, bucketName, sourcePath, options) {
18
+ try {
19
+ const response = await client.send(new GetObjectCommand({
20
+ Bucket: bucketName,
21
+ Key: sourcePath,
22
+ ...options
23
+ }));
24
+ const stream = response.Body;
25
+ return Outcome.makeSuccess(stream);
26
+ }
27
+ catch (err) {
28
+ return Outcome.makeFailure(unknownToString(err));
29
+ }
30
+ }