@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,35 +1,30 @@
1
- import {
2
- remove as remove4
3
- } from "../../../../chunks/chunk-MO4TRYNI.js";
4
- import {
5
- remove as remove3
6
- } from "../../../../chunks/chunk-AP3VYSVF.js";
7
- import {
8
- remove as remove2
9
- } from "../../../../chunks/chunk-SYH5LYQC.js";
10
- import {
11
- remove
12
- } from "../../../../chunks/chunk-5WVGUZL5.js";
13
- import {
14
- isFtpClient,
15
- isGcsBucket,
16
- isS3ClientWithBucket,
17
- isSftpClient
18
- } from "../../../../chunks/chunk-ISJONMNA.js";
19
- import {
20
- makeFailure
21
- } from "../../../../chunks/chunk-LUAYN7VJ.js";
22
- import "../../../../chunks/chunk-PUQUSA6S.js";
23
- import "../../../../chunks/chunk-WSFCRVEQ.js";
24
-
25
- // src/node/cloud-storage/operations/remove-file/index.ts
26
- async function removeFile(client, path, options) {
27
- if (isGcsBucket(client)) return await remove4(client, path, options);
28
- if (isS3ClientWithBucket(client)) return await remove3(client.client, path, client.bucketName, options);
29
- if (isFtpClient(client)) return await remove(client, path, options);
30
- if (isSftpClient(client)) return await remove2(client, path, options);
31
- return makeFailure("Invalid client type");
1
+ import * as Outcome from '../../../../agnostic/misc/outcome/index.js';
2
+ import { isFtpClient, isGcsBucket, isS3ClientWithBucket, isSftpClient } from '../../clients/index.js';
3
+ import { remove as ftpRemove } from '../../../ftps/file/remove/index.js';
4
+ import { remove as sftpRemove } from '../../../sftp/file/remove/index.js';
5
+ import { remove as s3Remove } from '../../../@aws-s3/storage/file/remove/index.js';
6
+ import { remove as gcsRemove } from '../../../@google-cloud/storage/file/remove/index.js';
7
+ /**
8
+ * Removes a file from cloud storage.
9
+ *
10
+ * The function automatically dispatches to the appropriate implementation based on
11
+ * the client type (Google Cloud Storage, S3, FTP, or SFTP).
12
+ *
13
+ * @param {AnyClient} client - The cloud storage client instance.
14
+ * @param {string} path - The file path to remove.
15
+ * @param {GcsRemoveOptions | S3RemoveOptions | FtpRemoveOptions | SftpRemoveOptions} [options] - Optional remove 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 removeFile(client, path, options) {
21
+ if (isGcsBucket(client))
22
+ return await gcsRemove(client, path, options);
23
+ if (isS3ClientWithBucket(client))
24
+ return await s3Remove(client.client, path, client.bucketName, options);
25
+ if (isFtpClient(client))
26
+ return await ftpRemove(client, path, options);
27
+ if (isSftpClient(client))
28
+ return await sftpRemove(client, path, options);
29
+ return Outcome.makeFailure('Invalid client type');
32
30
  }
33
- export {
34
- removeFile
35
- };
@@ -1,35 +1,30 @@
1
- import {
2
- stat as stat4
3
- } from "../../../../chunks/chunk-77SWZUHV.js";
4
- import {
5
- stat as stat3
6
- } from "../../../../chunks/chunk-IRKZUMWZ.js";
7
- import {
8
- stat as stat2
9
- } from "../../../../chunks/chunk-S2UZ3HZR.js";
10
- import {
11
- stat
12
- } from "../../../../chunks/chunk-IPRWXI27.js";
13
- import {
14
- isFtpClient,
15
- isGcsBucket,
16
- isS3ClientWithBucket,
17
- isSftpClient
18
- } from "../../../../chunks/chunk-ISJONMNA.js";
19
- import {
20
- makeFailure
21
- } from "../../../../chunks/chunk-LUAYN7VJ.js";
22
- import "../../../../chunks/chunk-PUQUSA6S.js";
23
- import "../../../../chunks/chunk-WSFCRVEQ.js";
24
-
25
- // src/node/cloud-storage/operations/stat-file/index.ts
26
- async function statFile(client, path, options) {
27
- if (isGcsBucket(client)) return await stat4(client, path, options);
28
- if (isS3ClientWithBucket(client)) return await stat3(client.client, path, client.bucketName, options);
29
- if (isFtpClient(client)) return await stat(client, path);
30
- if (isSftpClient(client)) return await stat2(client, path);
31
- return makeFailure("Invalid client type");
1
+ import * as Outcome from '../../../../agnostic/misc/outcome/index.js';
2
+ import { isFtpClient, isGcsBucket, isS3ClientWithBucket, isSftpClient } from '../../clients/index.js';
3
+ import { stat as ftpStat } from '../../../ftps/file/stat/index.js';
4
+ import { stat as sftpStat } from '../../../sftp/file/stat/index.js';
5
+ import { stat as s3Stat } from '../../../@aws-s3/storage/file/stat/index.js';
6
+ import { stat as gcsStat } from '../../../@google-cloud/storage/file/stat/index.js';
7
+ /**
8
+ * Retrieves metadata for a file in cloud storage.
9
+ *
10
+ * The function automatically dispatches to the appropriate implementation based on
11
+ * the client type (Google Cloud Storage, S3, FTP, or SFTP).
12
+ *
13
+ * @param {AnyClient} client - The cloud storage client instance.
14
+ * @param {string} path - The file path to stat.
15
+ * @param {GcsStatOptions | S3StatOptions} [options] - Optional stat configuration.
16
+ * @returns {Promise<Outcome.Either<GcsStat | S3Stat | FtpStat | SftpStat, string>>}
17
+ * - On success: `Outcome.makeSuccess(stat)` containing file metadata.
18
+ * - On failure: `Outcome.makeFailure(errStr)`.
19
+ */
20
+ export async function statFile(client, path, options) {
21
+ if (isGcsBucket(client))
22
+ return await gcsStat(client, path, options);
23
+ if (isS3ClientWithBucket(client))
24
+ return await s3Stat(client.client, path, client.bucketName, options);
25
+ if (isFtpClient(client))
26
+ return await ftpStat(client, path);
27
+ if (isSftpClient(client))
28
+ return await sftpStat(client, path);
29
+ return Outcome.makeFailure('Invalid client type');
32
30
  }
33
- export {
34
- statFile
35
- };
@@ -1,35 +1,31 @@
1
- import {
2
- upload as upload4
3
- } from "../../../../chunks/chunk-EX2QKFY5.js";
4
- import {
5
- upload as upload3
6
- } from "../../../../chunks/chunk-WIFHP4X7.js";
7
- import {
8
- upload as upload2
9
- } from "../../../../chunks/chunk-H3HRQ52T.js";
10
- import {
11
- upload
12
- } from "../../../../chunks/chunk-5TM235Z3.js";
13
- import {
14
- isFtpClient,
15
- isGcsBucket,
16
- isS3ClientWithBucket,
17
- isSftpClient
18
- } from "../../../../chunks/chunk-ISJONMNA.js";
19
- import {
20
- makeFailure
21
- } from "../../../../chunks/chunk-LUAYN7VJ.js";
22
- import "../../../../chunks/chunk-PUQUSA6S.js";
23
- import "../../../../chunks/chunk-WSFCRVEQ.js";
24
-
25
- // src/node/cloud-storage/operations/upload-file/index.ts
26
- async function uploadFile(fileStream, path, client, options) {
27
- if (isGcsBucket(client)) return await upload4(client, path, fileStream, options);
28
- if (isS3ClientWithBucket(client)) return await upload3(client.client, client.bucketName, path, fileStream, options);
29
- if (isFtpClient(client)) return await upload(client, path, fileStream, options);
30
- if (isSftpClient(client)) return await upload2(client, path, fileStream, options);
31
- return makeFailure("Invalid client type");
1
+ import * as Outcome from '../../../../agnostic/misc/outcome/index.js';
2
+ import { isFtpClient, isGcsBucket, isS3ClientWithBucket, isSftpClient } from '../../clients/index.js';
3
+ import { upload as ftpUpload } from '../../../ftps/file/upload/index.js';
4
+ import { upload as sftpUpload } from '../../../sftp/file/upload/index.js';
5
+ import { upload as s3Upload } from '../../../@aws-s3/storage/file/upload/index.js';
6
+ import { upload as gcsUpload } from '../../../@google-cloud/storage/file/upload/index.js';
7
+ /**
8
+ * Uploads a file stream to cloud storage.
9
+ *
10
+ * The function automatically dispatches to the appropriate implementation based on
11
+ * the client type (Google Cloud Storage, S3, FTP, or SFTP).
12
+ *
13
+ * @param {Readable} fileStream - The file content as a stream.
14
+ * @param {string} path - The path to upload the file to.
15
+ * @param {AnyClient} client - The cloud storage client instance.
16
+ * @param {GcsUploadOptions | S3UploadOptions | FtpUploadOptions | SftpUploadOptions} [options] - Optional upload configuration.
17
+ * @returns {Promise<Outcome.Either<true, string>>}
18
+ * - On success: `Outcome.makeSuccess(true)`.
19
+ * - On failure: `Outcome.makeFailure(errStr)`.
20
+ */
21
+ export async function uploadFile(fileStream, path, client, options) {
22
+ if (isGcsBucket(client))
23
+ return await gcsUpload(client, path, fileStream, options);
24
+ if (isS3ClientWithBucket(client))
25
+ return await s3Upload(client.client, client.bucketName, path, fileStream, options);
26
+ if (isFtpClient(client))
27
+ return await ftpUpload(client, path, fileStream, options);
28
+ if (isSftpClient(client))
29
+ return await sftpUpload(client, path, fileStream, options);
30
+ return Outcome.makeFailure('Invalid client type');
32
31
  }
33
- export {
34
- uploadFile
35
- };
@@ -1,28 +1,33 @@
1
- import {
2
- decryptUint8Array,
3
- encryptUint8Array
4
- } from "../../../../chunks/chunk-RKX6KLPQ.js";
5
- import {
6
- makeSuccess
7
- } from "../../../../chunks/chunk-LUAYN7VJ.js";
8
- import "../../../../chunks/chunk-PUQUSA6S.js";
9
- import "../../../../chunks/chunk-WSFCRVEQ.js";
10
-
11
- // src/node/encryption/@aes-256-gcm/buffer/index.ts
12
- import { Buffer } from "node:buffer";
13
- function encrypt(inputBuffer, encryptionKey) {
14
- const fileArray = new Uint8Array(inputBuffer);
15
- const encryptionOutcome = encryptUint8Array(fileArray, encryptionKey);
16
- if (!encryptionOutcome.success) return encryptionOutcome;
17
- return makeSuccess(Buffer.from(encryptionOutcome.payload));
1
+ import { Buffer } from 'node:buffer';
2
+ import * as Outcome from '../../../../agnostic/misc/outcome/index.js';
3
+ import { encryptUint8Array, decryptUint8Array } from '../uint8-array/index.js';
4
+ /**
5
+ * Encrypts a `Buffer` by converting it to a `Uint8Array`, performing encryption, and then returning the result as a `Buffer`.
6
+ *
7
+ * @param {Buffer} inputBuffer - The input data to encrypt.
8
+ * @param {string} encryptionKey - The encryption key to use.
9
+ *
10
+ * @returns {Outcome.Either<Buffer, string>} The result of the encryption. Success returns the encrypted data as a `Buffer` (with IV prepended), or failure returns an error message.
11
+ */
12
+ export function encrypt(inputBuffer, encryptionKey) {
13
+ const fileArray = new Uint8Array(inputBuffer);
14
+ const encryptionOutcome = encryptUint8Array(fileArray, encryptionKey);
15
+ if (!encryptionOutcome.success)
16
+ return encryptionOutcome;
17
+ return Outcome.makeSuccess(Buffer.from(encryptionOutcome.payload));
18
18
  }
19
- function decrypt(encryptedBuffer, encryptionKey) {
20
- const encryptedArray = new Uint8Array(encryptedBuffer);
21
- const decryptionOutcome = decryptUint8Array(encryptedArray, encryptionKey);
22
- if (!decryptionOutcome.success) return decryptionOutcome;
23
- return makeSuccess(Buffer.from(decryptionOutcome.payload));
19
+ /**
20
+ * Decrypts an encrypted `Buffer` by converting it to a `Uint8Array`, performing decryption, and then returning the result as a `Buffer`.
21
+ *
22
+ * @param {Buffer} encryptedBuffer - The encrypted data to decrypt.
23
+ * @param {string} encryptionKey - The encryption key to use.
24
+ *
25
+ * @returns {Outcome.Either<Buffer, string>} The result of the decryption. Success returns the decrypted data as a `Buffer`, or failure returns an error message.
26
+ */
27
+ export function decrypt(encryptedBuffer, encryptionKey) {
28
+ const encryptedArray = new Uint8Array(encryptedBuffer);
29
+ const decryptionOutcome = decryptUint8Array(encryptedArray, encryptionKey);
30
+ if (!decryptionOutcome.success)
31
+ return decryptionOutcome;
32
+ return Outcome.makeSuccess(Buffer.from(decryptionOutcome.payload));
24
33
  }
25
- export {
26
- decrypt,
27
- encrypt
28
- };
@@ -1,2 +1,2 @@
1
- export * as uint8Array from './uint8-array/index.js'
2
1
  export * as buffer from './buffer/index.js'
2
+ export * as uint8Array from './uint8-array/index.js'
@@ -1,2 +1,2 @@
1
- export * as uint8Array from './uint8-array/index.js'
2
1
  export * as buffer from './buffer/index.js'
2
+ export * as uint8Array from './uint8-array/index.js'
@@ -1,11 +1,57 @@
1
- import {
2
- decryptUint8Array,
3
- encryptUint8Array
4
- } from "../../../../chunks/chunk-RKX6KLPQ.js";
5
- import "../../../../chunks/chunk-LUAYN7VJ.js";
6
- import "../../../../chunks/chunk-PUQUSA6S.js";
7
- import "../../../../chunks/chunk-WSFCRVEQ.js";
8
- export {
9
- decryptUint8Array,
10
- encryptUint8Array
11
- };
1
+ import { Buffer } from 'node:buffer';
2
+ import { createCipheriv, createDecipheriv, randomBytes } from 'node:crypto';
3
+ import { unknownToString } from '../../../../agnostic/errors/unknown-to-string/index.js';
4
+ import * as Outcome from '../../../../agnostic/misc/outcome/index.js';
5
+ /**
6
+ * Encrypts a `Uint8Array` using AES-256-GCM encryption and the specified encryption key.
7
+ *
8
+ * @param {Uint8Array} fileArray - The input data to encrypt.
9
+ * @param {string} encryptionKey - The encryption key to use.
10
+ * @param {number} [options.ivLength=16] - The length of the initialization vector (IV). Defaults to 16 bytes.
11
+ *
12
+ * @returns {Outcome.Either<Uint8Array, string>} The result of the encryption. Success returns the encrypted data as a `Uint8Array` (with IV prepended), or failure returns an error message.
13
+ */
14
+ export function encryptUint8Array(fileArray, encryptionKey) {
15
+ const ivLength = 12;
16
+ const keyBuffer = Buffer.from(encryptionKey, 'utf-8');
17
+ if (keyBuffer.length !== 32)
18
+ return Outcome.makeFailure('Encryption key must be 32 bytes for AES-256-GCM.');
19
+ try {
20
+ const iv = randomBytes(ivLength);
21
+ const cipher = createCipheriv('aes-256-gcm', keyBuffer, iv);
22
+ let encrypted = cipher.update(fileArray);
23
+ encrypted = Buffer.concat([encrypted, cipher.final()]);
24
+ return Outcome.makeSuccess(new Uint8Array(Buffer.concat([iv, encrypted])));
25
+ }
26
+ catch (err) {
27
+ const errStr = unknownToString(err);
28
+ return Outcome.makeFailure(errStr);
29
+ }
30
+ }
31
+ /**
32
+ * Decrypts an encrypted `Uint8Array` using AES-256-GCM encryption and the specified encryption key.
33
+ *
34
+ * @param {Uint8Array} encryptedFile - The encrypted data to decrypt.
35
+ * @param {string} encryptionKey - The encryption key to use.
36
+ * @param {number} [options.ivLength=16] - The length of the initialization vector (IV). Defaults to 16 bytes.
37
+ *
38
+ * @returns {Outcome.Either<Uint8Array, string>} The result of the decryption. Success returns the decrypted data as a `Uint8Array`, or failure returns an error message.
39
+ */
40
+ export function decryptUint8Array(encryptedFile, encryptionKey) {
41
+ const ivLength = 12;
42
+ const iv = encryptedFile.subarray(0, ivLength);
43
+ const keyBuffer = Buffer.from(encryptionKey, 'utf-8');
44
+ if (keyBuffer.length !== 32)
45
+ return Outcome.makeFailure('Encryption key must be 32 bytes for AES-256-GCM.');
46
+ try {
47
+ const encryptedData = encryptedFile.subarray(ivLength);
48
+ const decipher = createDecipheriv('aes-256-gcm', keyBuffer, iv);
49
+ let decrypted = decipher.update(encryptedData);
50
+ decrypted = Buffer.concat([decrypted, decipher.final()]);
51
+ return Outcome.makeSuccess(new Uint8Array(decrypted));
52
+ }
53
+ catch (err) {
54
+ const errStr = unknownToString(err);
55
+ return Outcome.makeFailure(errStr);
56
+ }
57
+ }
@@ -1,15 +1,20 @@
1
- import "../../../chunks/chunk-WSFCRVEQ.js";
2
-
3
- // src/node/encryption/key/index.ts
4
- import { pbkdf2Sync, randomBytes } from "node:crypto";
5
- function generate(passphrase, outputByteLength, options) {
6
- const { saltLength = 16, iterations = 1e5 } = options ?? {};
7
- const salt = randomBytes(saltLength);
8
- const key = pbkdf2Sync(passphrase, salt, iterations, outputByteLength, "sha256");
9
- const saltString = salt.toString("hex");
10
- const keyString = key.toString("hex");
11
- return `${saltString}:${keyString}`;
1
+ import { pbkdf2Sync, randomBytes } from 'node:crypto';
2
+ /**
3
+ * Generates an encryption key from a passphrase using PBKDF2.
4
+ *
5
+ * @param {string} passphrase - The passphrase to derive the key from.
6
+ * @param {number} outputByteLength - The length of the output encryption key in bytes.
7
+ * @param {GenerateOptions} [options] - Optional options.
8
+ * @param {number} [options.saltLength=16] - The length of the salt in bytes. Defaults to 16 bytes.
9
+ * @param {number} [options.iterations=100000] - The number of PBKDF2 iterations. Defaults to 100,000 iterations.
10
+ *
11
+ * @returns {string} The derived encryption key and salt, concatenated as a string in the format `salt:encryptionKey`.
12
+ */
13
+ export function generate(passphrase, outputByteLength, options) {
14
+ const { saltLength = 16, iterations = 100000 } = options ?? {};
15
+ const salt = randomBytes(saltLength);
16
+ const key = pbkdf2Sync(passphrase, salt, iterations, outputByteLength, 'sha256');
17
+ const saltString = salt.toString('hex');
18
+ const keyString = key.toString('hex');
19
+ return `${saltString}:${keyString}`;
12
20
  }
13
- export {
14
- generate
15
- };
@@ -1,11 +1,12 @@
1
- import "../../../chunks/chunk-WSFCRVEQ.js";
2
-
3
- // src/node/files/is-in-directory/index.ts
4
- import path from "node:path";
5
- function isInDirectory(childPath, parentPath) {
6
- const rel = path.relative(parentPath, childPath);
7
- return rel !== "" && !rel.startsWith("..");
1
+ import path from 'node:path';
2
+ /**
3
+ * Checks whether a child path is contained within a parent directory.
4
+ *
5
+ * @param childPath - The path to check if it's within the parent.
6
+ * @param parentPath - The parent directory path.
7
+ * @returns `true` if `childPath` is within `parentPath`, `false` otherwise.
8
+ */
9
+ export function isInDirectory(childPath, parentPath) {
10
+ const rel = path.relative(parentPath, childPath);
11
+ return rel !== '' && !rel.startsWith('..');
8
12
  }
9
- export {
10
- isInDirectory
11
- };
@@ -1,18 +1,12 @@
1
- import "../../../chunks/chunk-WSFCRVEQ.js";
2
-
3
- // src/node/files/read-write/index.ts
4
- import { promises as fs } from "node:fs";
5
- async function readWrite(path, editor, opts = {}) {
6
- const readData = await fs.readFile(path, opts.readOptions);
7
- const edited = typeof editor === "function" ? editor(readData) : Object.entries(editor).reduce(
8
- (acc, [from, to]) => acc.replaceAll(from, to),
9
- readData.toString()
10
- );
11
- const actualWriteOptions = opts.writeOptions ?? opts.readOptions;
12
- const targetOutput = opts.output ?? path;
13
- if (opts.dryRun !== true) await fs.writeFile(targetOutput, edited, actualWriteOptions);
14
- return edited;
1
+ import { promises as fs } from 'node:fs';
2
+ export async function readWrite(path, editor, opts = {}) {
3
+ const readData = await fs.readFile(path, opts.readOptions);
4
+ const edited = typeof editor === 'function'
5
+ ? editor(readData)
6
+ : Object.entries(editor).reduce((acc, [from, to]) => acc.replaceAll(from, to), readData.toString());
7
+ const actualWriteOptions = opts.writeOptions ?? opts.readOptions;
8
+ const targetOutput = opts.output ?? path;
9
+ if (opts.dryRun !== true)
10
+ await fs.writeFile(targetOutput, edited, actualWriteOptions);
11
+ return edited;
15
12
  }
16
- export {
17
- readWrite
18
- };