@design-edito/tools 0.4.5 → 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 (415) hide show
  1. package/TODO.md +269 -0
  2. package/agnostic/arrays/dedupe/index.js +9 -7
  3. package/agnostic/arrays/dedupe/index.test.js +24 -0
  4. package/agnostic/arrays/find-duplicates/index.js +34 -22
  5. package/agnostic/arrays/find-duplicates/index.test.js +31 -0
  6. package/agnostic/arrays/index.d.ts +2 -2
  7. package/agnostic/arrays/index.js +2 -2
  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 -6
  11. package/agnostic/arrays/make/index.test.js +10 -0
  12. package/agnostic/arrays/random-pick/index.js +38 -22
  13. package/agnostic/arrays/random-pick/index.test.js +23 -0
  14. package/agnostic/arrays/shuffle/index.js +15 -11
  15. package/agnostic/arrays/shuffle/index.test.js +14 -0
  16. package/agnostic/booleans/is-falsy/index.js +24 -15
  17. package/agnostic/booleans/is-falsy/index.test.js +26 -0
  18. package/agnostic/colors/channels/index.js +139 -936
  19. package/agnostic/colors/channels/index.test.js +64 -0
  20. package/agnostic/colors/contrast/index.js +24 -643
  21. package/agnostic/colors/contrast/index.test.js +21 -0
  22. package/agnostic/colors/convert/index.js +811 -837
  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 +66 -538
  26. package/agnostic/colors/distance/index.test.js +21 -0
  27. package/agnostic/colors/grayscale/index.js +95 -872
  28. package/agnostic/colors/grayscale/index.test.js +34 -0
  29. package/agnostic/colors/index.d.ts +2 -2
  30. package/agnostic/colors/index.js +2 -2
  31. package/agnostic/colors/invert/index.js +34 -719
  32. package/agnostic/colors/invert/index.test.js +31 -0
  33. package/agnostic/colors/lerp/index.js +75 -804
  34. package/agnostic/colors/lerp/index.test.js +55 -0
  35. package/agnostic/colors/luminance/index.js +17 -625
  36. package/agnostic/colors/luminance/index.test.js +30 -0
  37. package/agnostic/colors/palette/index.js +83 -917
  38. package/agnostic/colors/palette/index.test.js +35 -0
  39. package/agnostic/colors/rotate/index.js +35 -835
  40. package/agnostic/colors/rotate/index.test.js +45 -0
  41. package/agnostic/colors/tidy/index.js +79 -530
  42. package/agnostic/colors/tidy/index.test.js +45 -0
  43. package/agnostic/colors/typechecks/index.js +188 -250
  44. package/agnostic/colors/typechecks/index.test.js +113 -0
  45. package/agnostic/colors/types.js +1 -0
  46. package/agnostic/css/bem/index.js +134 -171
  47. package/agnostic/css/clss/index.js +64 -29
  48. package/agnostic/css/clss/index.test.js +60 -0
  49. package/agnostic/css/generate-nice-color/index.js +26 -71
  50. package/agnostic/css/generate-nice-color/index.test.js +8 -0
  51. package/agnostic/css/index.d.ts +2 -2
  52. package/agnostic/css/index.js +2 -2
  53. package/agnostic/css/is-valid-css-class-name/index.js +14 -8
  54. package/agnostic/css/is-valid-css-class-name/index.test.js +36 -0
  55. package/agnostic/css/scale/index.js +37 -50
  56. package/agnostic/css/scale/index.test.js +71 -0
  57. package/agnostic/css/styles-set/index.js +151 -178
  58. package/agnostic/errors/index.d.ts +1 -1
  59. package/agnostic/errors/index.js +1 -1
  60. package/agnostic/errors/register/index.js +45 -49
  61. package/agnostic/errors/unknown-to-string/index.js +17 -10
  62. package/agnostic/errors/unknown-to-string/index.test.js +35 -0
  63. package/agnostic/html/get-node-ancestors/index.js +29 -29
  64. package/agnostic/html/get-node-ancestors/index.test.js +58 -0
  65. package/agnostic/html/get-position-inside-parent/index.js +13 -8
  66. package/agnostic/html/get-position-inside-parent/index.test.js +56 -0
  67. package/agnostic/html/hyper-json/cast/index.js +128 -2931
  68. package/agnostic/html/hyper-json/index.js +23 -2954
  69. package/agnostic/html/hyper-json/method/index.js +10 -14
  70. package/agnostic/html/hyper-json/serialize/index.js +88 -222
  71. package/agnostic/html/hyper-json/smart-tags/coalesced/add/index.js +14 -2938
  72. package/agnostic/html/hyper-json/smart-tags/coalesced/addclass/index.js +27 -2937
  73. package/agnostic/html/hyper-json/smart-tags/coalesced/and/index.js +13 -2938
  74. package/agnostic/html/hyper-json/smart-tags/coalesced/append/index.js +34 -2938
  75. package/agnostic/html/hyper-json/smart-tags/coalesced/at/index.js +42 -2935
  76. package/agnostic/html/hyper-json/smart-tags/coalesced/call/index.js +47 -2937
  77. package/agnostic/html/hyper-json/smart-tags/coalesced/clone/index.js +10 -2939
  78. package/agnostic/html/hyper-json/smart-tags/coalesced/deleteproperties/index.js +45 -2936
  79. package/agnostic/html/hyper-json/smart-tags/coalesced/equals/index.js +22 -2938
  80. package/agnostic/html/hyper-json/smart-tags/coalesced/getattribute/index.js +26 -2938
  81. package/agnostic/html/hyper-json/smart-tags/coalesced/getproperties/index.js +19 -2938
  82. package/agnostic/html/hyper-json/smart-tags/coalesced/getproperty/index.js +67 -2935
  83. package/agnostic/html/hyper-json/smart-tags/coalesced/hjparse/index.js +21 -2937
  84. package/agnostic/html/hyper-json/smart-tags/coalesced/hjstringify/index.js +89 -2938
  85. package/agnostic/html/hyper-json/smart-tags/coalesced/if/index.js +20 -2938
  86. package/agnostic/html/hyper-json/smart-tags/coalesced/index.d.ts +18 -18
  87. package/agnostic/html/hyper-json/smart-tags/coalesced/index.js +18 -18
  88. package/agnostic/html/hyper-json/smart-tags/coalesced/initialize/index.js +37 -2938
  89. package/agnostic/html/hyper-json/smart-tags/coalesced/join/index.js +16 -2938
  90. package/agnostic/html/hyper-json/smart-tags/coalesced/length/index.js +21 -2938
  91. package/agnostic/html/hyper-json/smart-tags/coalesced/map/index.js +31 -2938
  92. package/agnostic/html/hyper-json/smart-tags/coalesced/negate/index.js +10 -2939
  93. package/agnostic/html/hyper-json/smart-tags/coalesced/notrailing/index.js +33 -2938
  94. package/agnostic/html/hyper-json/smart-tags/coalesced/or/index.js +13 -2938
  95. package/agnostic/html/hyper-json/smart-tags/coalesced/pickrandom/index.js +17 -2938
  96. package/agnostic/html/hyper-json/smart-tags/coalesced/populate/index.js +59 -2938
  97. package/agnostic/html/hyper-json/smart-tags/coalesced/print/index.js +23 -2938
  98. package/agnostic/html/hyper-json/smart-tags/coalesced/push/index.js +10 -2939
  99. package/agnostic/html/hyper-json/smart-tags/coalesced/pusheach/index.js +26 -2938
  100. package/agnostic/html/hyper-json/smart-tags/coalesced/recordtoarray/index.js +10 -2939
  101. package/agnostic/html/hyper-json/smart-tags/coalesced/removeattribute/index.js +53 -2935
  102. package/agnostic/html/hyper-json/smart-tags/coalesced/removeclass/index.js +27 -2937
  103. package/agnostic/html/hyper-json/smart-tags/coalesced/renameproperty/index.js +31 -2937
  104. package/agnostic/html/hyper-json/smart-tags/coalesced/replace/index.js +55 -2940
  105. package/agnostic/html/hyper-json/smart-tags/coalesced/select/index.js +29 -2935
  106. package/agnostic/html/hyper-json/smart-tags/coalesced/set/index.js +29 -2938
  107. package/agnostic/html/hyper-json/smart-tags/coalesced/setattribute/index.js +53 -2935
  108. package/agnostic/html/hyper-json/smart-tags/coalesced/setproperty/index.js +232 -2936
  109. package/agnostic/html/hyper-json/smart-tags/coalesced/sorton/index.js +89 -2936
  110. package/agnostic/html/hyper-json/smart-tags/coalesced/split/index.js +20 -2938
  111. package/agnostic/html/hyper-json/smart-tags/coalesced/spread/index.js +23 -2939
  112. package/agnostic/html/hyper-json/smart-tags/coalesced/toarray/index.js +11 -2939
  113. package/agnostic/html/hyper-json/smart-tags/coalesced/toboolean/index.js +11 -2939
  114. package/agnostic/html/hyper-json/smart-tags/coalesced/toelement/index.js +17 -2938
  115. package/agnostic/html/hyper-json/smart-tags/coalesced/toggleclass/index.js +27 -2937
  116. package/agnostic/html/hyper-json/smart-tags/coalesced/tonodelist/index.js +11 -2939
  117. package/agnostic/html/hyper-json/smart-tags/coalesced/tonull/index.js +10 -2939
  118. package/agnostic/html/hyper-json/smart-tags/coalesced/tonumber/index.js +11 -2939
  119. package/agnostic/html/hyper-json/smart-tags/coalesced/torecord/index.js +11 -2939
  120. package/agnostic/html/hyper-json/smart-tags/coalesced/toref/index.js +11 -2939
  121. package/agnostic/html/hyper-json/smart-tags/coalesced/tostring/index.js +11 -2939
  122. package/agnostic/html/hyper-json/smart-tags/coalesced/totext/index.js +11 -2939
  123. package/agnostic/html/hyper-json/smart-tags/coalesced/transformselected/index.js +84 -2938
  124. package/agnostic/html/hyper-json/smart-tags/coalesced/trim/index.js +14 -2938
  125. package/agnostic/html/hyper-json/smart-tags/index.js +28 -181
  126. package/agnostic/html/hyper-json/smart-tags/isolated/any/index.js +12 -195
  127. package/agnostic/html/hyper-json/smart-tags/isolated/array/index.js +12 -195
  128. package/agnostic/html/hyper-json/smart-tags/isolated/boolean/index.js +12 -2939
  129. package/agnostic/html/hyper-json/smart-tags/isolated/element/index.js +24 -2938
  130. package/agnostic/html/hyper-json/smart-tags/isolated/get/index.js +18 -2938
  131. package/agnostic/html/hyper-json/smart-tags/isolated/guess/index.js +56 -2937
  132. package/agnostic/html/hyper-json/smart-tags/isolated/index.d.ts +1 -1
  133. package/agnostic/html/hyper-json/smart-tags/isolated/index.js +1 -1
  134. package/agnostic/html/hyper-json/smart-tags/isolated/nodelist/index.js +18 -2938
  135. package/agnostic/html/hyper-json/smart-tags/isolated/null/index.js +9 -193
  136. package/agnostic/html/hyper-json/smart-tags/isolated/number/index.js +16 -2938
  137. package/agnostic/html/hyper-json/smart-tags/isolated/record/index.js +12 -2938
  138. package/agnostic/html/hyper-json/smart-tags/isolated/ref/index.js +40 -2935
  139. package/agnostic/html/hyper-json/smart-tags/isolated/string/index.js +16 -2938
  140. package/agnostic/html/hyper-json/smart-tags/isolated/text/index.js +18 -2938
  141. package/agnostic/html/hyper-json/transformer/index.js +112 -148
  142. package/agnostic/html/hyper-json/tree/index.js +411 -2928
  143. package/agnostic/html/hyper-json/types/index.js +27 -18
  144. package/agnostic/html/hyper-json/utils/index.js +497 -2921
  145. package/agnostic/html/index.d.ts +2 -2
  146. package/agnostic/html/index.js +2 -2
  147. package/agnostic/html/insert-node/index.js +27 -16
  148. package/agnostic/html/insert-node/index.test.js +73 -0
  149. package/agnostic/html/placeholders/index.js +26 -29
  150. package/agnostic/html/replace-in-element/index.js +31 -48
  151. package/agnostic/html/replace-in-element/index.test.js +80 -0
  152. package/agnostic/html/selector-to-element/index.js +53 -39
  153. package/agnostic/html/selector-to-element/index.test.js +69 -0
  154. package/agnostic/html/string-to-nodes/index.js +24 -25
  155. package/agnostic/html/string-to-nodes/index.test.js +54 -0
  156. package/agnostic/index.d.ts +6 -6
  157. package/agnostic/index.js +6 -6
  158. package/agnostic/misc/assert/index.js +60 -66
  159. package/agnostic/misc/cast/index.js +123 -57
  160. package/agnostic/misc/cast/index.test.js +134 -0
  161. package/agnostic/misc/connection/index.js +55 -36
  162. package/agnostic/misc/connection/index.test.js +143 -0
  163. package/agnostic/misc/crawler/index.js +68 -46
  164. package/agnostic/misc/crawler/index.test.js +56 -0
  165. package/agnostic/misc/crossenv/detect-runtime/index.js +41 -13
  166. package/agnostic/misc/crossenv/detect-runtime/index.test.js +24 -0
  167. package/agnostic/misc/crossenv/types.js +21 -14
  168. package/agnostic/misc/crossenv/window/index.js +45 -24
  169. package/agnostic/misc/crossenv/window/index.test.js +24 -0
  170. package/agnostic/misc/data-size/index.js +182 -294
  171. package/agnostic/misc/data-size/index.test.js +100 -0
  172. package/agnostic/misc/data-size/types.js +1 -0
  173. package/agnostic/misc/index.d.ts +5 -5
  174. package/agnostic/misc/index.js +5 -5
  175. package/agnostic/misc/is-constructor-function/index.js +12 -6
  176. package/agnostic/misc/is-constructor-function/index.test.js +36 -0
  177. package/agnostic/misc/is-nullish/index.js +24 -11
  178. package/agnostic/misc/is-nullish/index.test.js +44 -0
  179. package/agnostic/misc/logs/logger/index.js +115 -140
  180. package/agnostic/misc/logs/make-text-block/index.js +13 -13
  181. package/agnostic/misc/logs/styles/index.js +29 -48
  182. package/agnostic/misc/lorem-ipsum/index.js +51 -201
  183. package/agnostic/misc/lorem-ipsum/index.test.js +49 -0
  184. package/agnostic/misc/normalize-extension/index.js +99 -88
  185. package/agnostic/misc/normalize-extension/index.test.js +40 -0
  186. package/agnostic/misc/outcome/index.js +20 -14
  187. package/agnostic/misc/outcome/index.test.js +40 -0
  188. package/agnostic/numbers/absolute-modulo/index.js +9 -6
  189. package/agnostic/numbers/absolute-modulo/index.test.js +23 -0
  190. package/agnostic/numbers/approximate-rational/index.js +86 -69
  191. package/agnostic/numbers/approximate-rational/index.test.js +90 -0
  192. package/agnostic/numbers/clamp/index.js +12 -8
  193. package/agnostic/numbers/clamp/index.test.js +24 -0
  194. package/agnostic/numbers/geometric-progressions/index.js +25 -16
  195. package/agnostic/numbers/geometric-progressions/index.test.js +45 -0
  196. package/agnostic/numbers/index.d.ts +2 -2
  197. package/agnostic/numbers/index.js +2 -2
  198. package/agnostic/numbers/interpolate/index.js +25 -10
  199. package/agnostic/numbers/interpolate/index.test.js +40 -0
  200. package/agnostic/numbers/round/index.js +30 -15
  201. package/agnostic/numbers/round/index.test.js +56 -0
  202. package/agnostic/objects/deep-get-property/index.js +30 -27
  203. package/agnostic/objects/deep-get-property/index.test.js +59 -0
  204. package/agnostic/objects/enums/is-in-enum/index.js +17 -11
  205. package/agnostic/objects/enums/is-in-enum/index.test.js +100 -0
  206. package/agnostic/objects/flatten-getters/index.js +15 -14
  207. package/agnostic/objects/flatten-getters/index.test.js +78 -0
  208. package/agnostic/objects/index.d.ts +2 -2
  209. package/agnostic/objects/index.js +2 -2
  210. package/agnostic/objects/is-object/index.js +16 -9
  211. package/agnostic/objects/is-object/index.test.js +60 -0
  212. package/agnostic/objects/is-record/index.js +12 -7
  213. package/agnostic/objects/is-record/index.test.js +48 -0
  214. package/agnostic/objects/record-format/index.js +18 -12
  215. package/agnostic/objects/record-format/index.test.js +92 -0
  216. package/agnostic/objects/record-map/index.js +16 -11
  217. package/agnostic/objects/record-map/index.test.js +56 -0
  218. package/agnostic/objects/sort-keys/index.js +15 -11
  219. package/agnostic/objects/sort-keys/index.test.js +37 -0
  220. package/agnostic/objects/validation/index.js +21 -8
  221. package/agnostic/objects/validation/index.test.js +72 -0
  222. package/agnostic/optim/index.d.ts +1 -1
  223. package/agnostic/optim/index.js +1 -1
  224. package/agnostic/optim/memoize/index.js +24 -16
  225. package/agnostic/optim/memoize/index.test.js +30 -0
  226. package/agnostic/optim/throttle-debounce/index.js +120 -102
  227. package/agnostic/optim/throttle-debounce/index.test.js +44 -0
  228. package/agnostic/optim/throttle-debounce/types.js +1 -0
  229. package/agnostic/random/hex-char/index.js +8 -10
  230. package/agnostic/random/hex-char/index.test.js +20 -0
  231. package/agnostic/random/index.d.ts +1 -1
  232. package/agnostic/random/index.js +1 -1
  233. package/agnostic/random/random/index.js +17 -14
  234. package/agnostic/random/random/index.test.js +73 -0
  235. package/agnostic/random/uuid/index.js +28 -20
  236. package/agnostic/random/uuid/index.test.js +45 -0
  237. package/agnostic/regexps/index.js +126 -84
  238. package/agnostic/regexps/index.test.js +108 -0
  239. package/agnostic/sanitization/file-name/index.js +24 -8
  240. package/agnostic/sanitization/file-name/index.test.js +23 -0
  241. package/agnostic/sanitization/html/index.js +172 -122
  242. package/agnostic/sanitization/path/index.js +23 -15
  243. package/agnostic/sanitization/path/index.test.js +18 -0
  244. package/agnostic/sanitization/types.js +1 -0
  245. package/agnostic/sanitization/user-input/index.js +36 -24
  246. package/agnostic/sanitization/user-input/index.test.js +31 -0
  247. package/agnostic/strings/char-codes/index.js +123 -55
  248. package/agnostic/strings/matches/index.js +35 -16
  249. package/agnostic/strings/normalize-indent/index.js +34 -16
  250. package/agnostic/strings/parse-table/index.js +153 -86
  251. package/agnostic/strings/replace-all/index.js +36 -15
  252. package/agnostic/strings/to-alphanum/index.js +23 -8
  253. package/agnostic/strings/trim/index.js +22 -9
  254. package/agnostic/time/dates/format-date/index.js +140 -72
  255. package/agnostic/time/duration/index.js +106 -140
  256. package/agnostic/time/timeout/index.js +24 -16
  257. package/agnostic/time/transitions/index.js +200 -158
  258. package/agnostic/time/wait/index.js +10 -8
  259. package/agnostic/typescript/types.js +1 -0
  260. package/components/BeforeAfter/index.controlled.js +95 -0
  261. package/components/BeforeAfter/index.js +54 -189
  262. package/components/BeforeAfter/utils.js +9 -0
  263. package/components/Disclaimer/index.js +50 -110
  264. package/components/Drawer/index.js +81 -196
  265. package/components/EventListener/index.js +29 -80
  266. package/components/Gallery/index.js +146 -221
  267. package/components/Gallery/utils.js +12 -0
  268. package/components/Image/index.js +66 -293
  269. package/components/IntersectionObserver/index.js +62 -110
  270. package/components/Overlayer/index.js +59 -103
  271. package/components/Paginator/index.js +124 -155
  272. package/components/ResizeObserver/index.js +66 -119
  273. package/components/ResizeObserver/style.module.css +0 -0
  274. package/components/Scrllgngn/index.js +171 -468
  275. package/components/ScrollListener/index.js +97 -276
  276. package/components/ScrollListener/utils.js +51 -0
  277. package/components/Sequencer/index.controlled.js +67 -0
  278. package/components/Sequencer/index.js +105 -262
  279. package/components/ShadowRoot/index.js +42 -96
  280. package/components/Subtitles/index.js +107 -244
  281. package/components/Subtitles/types.js +1 -0
  282. package/components/Subtitles/utils.js +102 -0
  283. package/components/Theatre/index.js +88 -136
  284. package/components/UIModule/index.js +156 -199
  285. package/components/Video/index.js +292 -857
  286. package/components/Video/utils.js +137 -0
  287. package/components/_WIP_AudioQuote/index.js +1 -0
  288. package/components/_WIP_Icon/index.js +1 -0
  289. package/components/index.d.ts +5 -5
  290. package/components/index.js +5 -5
  291. package/components/public-classnames.js +18 -0
  292. package/components/utils/index.js +11 -11
  293. package/components/utils/types.js +1 -0
  294. package/index.d.ts +1 -1
  295. package/index.js +1 -1
  296. package/node/@aws-s3/index.test.js +6 -0
  297. package/node/@aws-s3/storage/directory/copy-dir/index.js +66 -72
  298. package/node/@aws-s3/storage/directory/index.d.ts +2 -2
  299. package/node/@aws-s3/storage/directory/index.js +2 -2
  300. package/node/@aws-s3/storage/directory/list/index.js +32 -42
  301. package/node/@aws-s3/storage/directory/move-dir/index.js +68 -86
  302. package/node/@aws-s3/storage/directory/remove-dir/index.js +56 -67
  303. package/node/@aws-s3/storage/file/copy/index.js +41 -53
  304. package/node/@aws-s3/storage/file/download/index.js +29 -40
  305. package/node/@aws-s3/storage/file/exists/index.js +35 -43
  306. package/node/@aws-s3/storage/file/index.d.ts +1 -1
  307. package/node/@aws-s3/storage/file/index.js +1 -1
  308. package/node/@aws-s3/storage/file/move/index.js +57 -63
  309. package/node/@aws-s3/storage/file/remove/index.js +35 -43
  310. package/node/@aws-s3/storage/file/stat/index.js +33 -47
  311. package/node/@aws-s3/storage/file/upload/index.js +52 -63
  312. package/node/@design-edito/index.js +1 -0
  313. package/node/@express/@multer/index.js +61 -55
  314. package/node/@google-cloud/storage/bucket/get-metadata/index.js +25 -29
  315. package/node/@google-cloud/storage/directory/copy-dir/index.js +35 -41
  316. package/node/@google-cloud/storage/directory/index.d.ts +1 -1
  317. package/node/@google-cloud/storage/directory/index.js +1 -1
  318. package/node/@google-cloud/storage/directory/list/index.js +28 -35
  319. package/node/@google-cloud/storage/directory/move-dir/index.js +43 -42
  320. package/node/@google-cloud/storage/directory/remove-dir/index.js +34 -38
  321. package/node/@google-cloud/storage/file/copy/index.js +35 -40
  322. package/node/@google-cloud/storage/file/download/index.js +27 -34
  323. package/node/@google-cloud/storage/file/exists/index.js +25 -31
  324. package/node/@google-cloud/storage/file/generate-signed-url/index.js +33 -35
  325. package/node/@google-cloud/storage/file/get-metadata/index.js +28 -31
  326. package/node/@google-cloud/storage/file/get-permissions/index.js +25 -31
  327. package/node/@google-cloud/storage/file/index.d.ts +2 -2
  328. package/node/@google-cloud/storage/file/index.js +2 -2
  329. package/node/@google-cloud/storage/file/move/index.js +38 -42
  330. package/node/@google-cloud/storage/file/remove/index.js +34 -35
  331. package/node/@google-cloud/storage/file/revoke-signed-urls/index.js +32 -95
  332. package/node/@google-cloud/storage/file/stat/index.js +34 -38
  333. package/node/@google-cloud/storage/file/update-metadata/index.js +30 -31
  334. package/node/@google-cloud/storage/file/upload/index.js +44 -46
  335. package/node/@google-cloud/storage/index.d.ts +1 -1
  336. package/node/@google-cloud/storage/index.js +1 -1
  337. package/node/cloud-storage/clients/index.js +35 -15
  338. package/node/cloud-storage/operations/copy-dir/index.js +30 -203
  339. package/node/cloud-storage/operations/copy-file/index.js +30 -152
  340. package/node/cloud-storage/operations/download-file/index.js +30 -103
  341. package/node/cloud-storage/operations/exists-file/index.js +30 -103
  342. package/node/cloud-storage/operations/index.d.ts +2 -2
  343. package/node/cloud-storage/operations/index.js +2 -2
  344. package/node/cloud-storage/operations/list-dir/index.js +29 -98
  345. package/node/cloud-storage/operations/move-dir/index.js +30 -169
  346. package/node/cloud-storage/operations/move-file/index.js +30 -157
  347. package/node/cloud-storage/operations/remove-dir/index.js +29 -159
  348. package/node/cloud-storage/operations/remove-file/index.js +29 -121
  349. package/node/cloud-storage/operations/stat-file/index.js +29 -124
  350. package/node/cloud-storage/operations/upload-file/index.js +30 -162
  351. package/node/encryption/@aes-256-gcm/buffer/index.js +31 -72
  352. package/node/encryption/@aes-256-gcm/uint8-array/index.js +55 -55
  353. package/node/encryption/key/index.js +19 -12
  354. package/node/files/index.d.ts +1 -1
  355. package/node/files/index.js +1 -1
  356. package/node/files/is-in-directory/index.js +11 -8
  357. package/node/files/read-write/index.js +11 -15
  358. package/node/files/subpaths/index.js +156 -121
  359. package/node/ftps/directory/copy-dir/index.js +55 -62
  360. package/node/ftps/directory/list/index.js +24 -29
  361. package/node/ftps/directory/move-dir/index.js +38 -38
  362. package/node/ftps/directory/remove-dir/index.js +39 -42
  363. package/node/ftps/file/copy/index.js +42 -47
  364. package/node/ftps/file/download/index.js +29 -34
  365. package/node/ftps/file/exists/index.js +38 -36
  366. package/node/ftps/file/index.d.ts +2 -2
  367. package/node/ftps/file/index.js +2 -2
  368. package/node/ftps/file/move/index.js +46 -44
  369. package/node/ftps/file/remove/index.js +36 -39
  370. package/node/ftps/file/stat/index.js +30 -38
  371. package/node/ftps/file/upload/index.js +40 -44
  372. package/node/images/create/index.js +10 -562
  373. package/node/images/format/index.js +264 -815
  374. package/node/images/metadata/index.js +10 -571
  375. package/node/images/transform/index.js +169 -1022
  376. package/node/images/transform/operations/blur/index.js +11 -24
  377. package/node/images/transform/operations/brighten/index.js +11 -24
  378. package/node/images/transform/operations/extend/index.js +25 -589
  379. package/node/images/transform/operations/extract/index.js +15 -28
  380. package/node/images/transform/operations/flatten/index.js +20 -584
  381. package/node/images/transform/operations/flip/index.js +2 -6
  382. package/node/images/transform/operations/flop/index.js +2 -6
  383. package/node/images/transform/operations/hue/index.js +13 -26
  384. package/node/images/transform/operations/index.d.ts +5 -5
  385. package/node/images/transform/operations/index.js +5 -5
  386. package/node/images/transform/operations/level/index.js +14 -30
  387. package/node/images/transform/operations/lighten/index.js +13 -26
  388. package/node/images/transform/operations/normalize/index.js +14 -27
  389. package/node/images/transform/operations/overlay/index.js +89 -673
  390. package/node/images/transform/operations/resize/index.js +46 -610
  391. package/node/images/transform/operations/rotate/index.js +20 -584
  392. package/node/images/transform/operations/saturate/index.js +14 -27
  393. package/node/images/types.js +34 -31
  394. package/node/images/utils/index.js +84 -568
  395. package/node/index.d.ts +5 -5
  396. package/node/index.js +5 -5
  397. package/node/process/on-exit/index.js +45 -26
  398. package/node/process/prompt-continue/index.js +29 -14
  399. package/node/process/spawner/index.js +104 -134
  400. package/node/sftp/directory/copy-dir/index.js +52 -60
  401. package/node/sftp/directory/index.d.ts +1 -1
  402. package/node/sftp/directory/index.js +1 -1
  403. package/node/sftp/directory/list/index.js +22 -29
  404. package/node/sftp/directory/move-dir/index.js +35 -35
  405. package/node/sftp/directory/remove-dir/index.js +39 -42
  406. package/node/sftp/file/copy/index.js +37 -45
  407. package/node/sftp/file/download/index.js +26 -32
  408. package/node/sftp/file/exists/index.js +29 -29
  409. package/node/sftp/file/index.d.ts +1 -1
  410. package/node/sftp/file/index.js +1 -1
  411. package/node/sftp/file/move/index.js +39 -38
  412. package/node/sftp/file/remove/index.js +31 -34
  413. package/node/sftp/file/stat/index.js +26 -37
  414. package/node/sftp/file/upload/index.js +34 -38
  415. package/package.json +1 -1
@@ -1,11 +1,24 @@
1
- // src/agnostic/strings/trim/index.ts
2
- function trimStart(string) {
3
- return string.replace(/^\s*/, "");
1
+ /**
2
+ * Removes all leading whitespace characters from a string.
3
+ *
4
+ * @param string - The string to trim.
5
+ * @returns The input string without leading whitespace.
6
+ *
7
+ * @example
8
+ * trimStart(" hello") // => "hello"
9
+ */
10
+ export function trimStart(string) {
11
+ return string.replace(/^\s*/, '');
4
12
  }
5
- function trimEnd(string) {
6
- return string.replace(/\s*$/, "");
13
+ /**
14
+ * Removes all trailing whitespace characters from a string.
15
+ *
16
+ * @param string - The string to trim.
17
+ * @returns The input string without trailing whitespace.
18
+ *
19
+ * @example
20
+ * trimEnd("hello ") // => "hello"
21
+ */
22
+ export function trimEnd(string) {
23
+ return string.replace(/\s*$/, '');
7
24
  }
8
- export {
9
- trimEnd,
10
- trimStart
11
- };
@@ -1,74 +1,142 @@
1
- // src/agnostic/time/dates/format-date/index.ts
2
- function formatDate(date, format, locale = "en") {
3
- if (Intl.DateTimeFormat.supportedLocalesOf(locale).length === 0) {
4
- locale = "en";
5
- }
6
- const day = date.getDate();
7
- const dayOfWeek = date.getDay();
8
- const month = date.getMonth();
9
- const year = date.getFullYear();
10
- const hours = date.getHours();
11
- const minutes = date.getMinutes();
12
- const seconds = date.getSeconds();
13
- const isPM = hours >= 12;
14
- const shortDateNames = [...Array(7)].map((_, i) => new Intl.DateTimeFormat(
15
- locale,
16
- { weekday: "short" }
17
- ).format(new Date(2023, 0, i + 1)));
18
- const dateNames = [...Array(7)].map((_, i) => new Intl.DateTimeFormat(
19
- locale,
20
- { weekday: "long" }
21
- ).format(new Date(2023, 0, i + 1)));
22
- const shortMonthNames = [...Array(12)].map((_, i) => new Intl.DateTimeFormat(
23
- locale,
24
- { month: "short" }
25
- ).format(new Date(2023, i, 1)));
26
- const monthNames = [...Array(12)].map((_, i) => new Intl.DateTimeFormat(
27
- locale,
28
- { month: "long" }
29
- ).format(new Date(2023, i, 1)));
30
- const replacements = {
31
- "DD": () => String(day).padStart(2, "0"),
32
- "D": () => String(day),
33
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
34
- "dd": () => dateNames[dayOfWeek],
35
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
36
- "d": () => shortDateNames[dayOfWeek],
37
- "MM": () => String(month + 1).padStart(2, "0"),
38
- "M": () => String(month + 1),
39
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
40
- "MMMM": () => monthNames[month],
41
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
42
- "MMM": () => shortMonthNames[month],
43
- "YYYY": () => String(year),
44
- "YY": () => String(year).slice(-2),
45
- "hh": () => String(hours % 12 !== 0 ? hours % 12 : 12).padStart(2, "0"),
46
- "h": () => String(hours % 12 !== 0 ? hours % 12 : 12),
47
- "HH": () => String(hours).padStart(2, "0"),
48
- "H": () => String(hours),
49
- "mm": () => String(minutes).padStart(2, "0"),
50
- "m": () => String(minutes),
51
- "ss": () => String(seconds).padStart(2, "0"),
52
- "s": () => String(seconds),
53
- "ms": () => String(date.getMilliseconds()).padStart(3, "0"),
54
- "A": () => isPM ? "PM" : "AM",
55
- "a": () => isPM ? "pm" : "am",
56
- "th": () => {
57
- if (locale.startsWith("fr") && day === 1) return "er";
58
- if (locale.startsWith("en")) {
59
- const mod10 = day % 10;
60
- const mod100 = day % 100;
61
- if (mod10 === 1 && mod100 !== 11) return "st";
62
- if (mod10 === 2 && mod100 !== 12) return "nd";
63
- if (mod10 === 3 && mod100 !== 13) return "rd";
64
- return "th";
65
- }
66
- return "";
1
+ /**
2
+ * Formats a `Date` object into a string according to a custom template and locale.
3
+ *
4
+ * Supported tokens (placeholders must be wrapped in `{{...}}`):
5
+ *
6
+ * **Day**
7
+ * - `D` : Day of month (1–31)
8
+ * - `DD` : Day of month, padded (01–31)
9
+ * - `d` : Short weekday name (Mon, Tue, ...)
10
+ * - `dd` : Full weekday name (Monday, Tuesday, ...)
11
+ *
12
+ * **Month**
13
+ * - `M` : Month number (1–12)
14
+ * - `MM` : Month number, padded (01–12)
15
+ * - `MMM` : Short month name (Jan, Feb, ...)
16
+ * - `MMMM` : Full month name (January, February, ...)
17
+ *
18
+ * **Year**
19
+ * - `YY` : Two-digit year
20
+ * - `YYYY` : Four-digit year
21
+ *
22
+ * **Hours**
23
+ * - `H` : 24h format
24
+ * - `HH` : 24h format, padded
25
+ * - `h` : 12h format
26
+ * - `hh` : 12h format, padded
27
+ *
28
+ * **Minutes & Seconds**
29
+ * - `m` / `mm` : Minutes
30
+ * - `s` / `ss` : Seconds
31
+ *
32
+ * **Miliseconds**
33
+ * - `ms` : Miliseconds
34
+ *
35
+ * **AM/PM**
36
+ * - `A` : AM/PM
37
+ * - `a` : am/pm
38
+ *
39
+ * **Ordinal suffix**
40
+ * - `th` : Day ordinal suffix (`st`, `nd`, `rd`, `th` for English; `er` for French 1st)
41
+ *
42
+ * @param date - The `Date` object to format.
43
+ * @param format - The template string containing tokens.
44
+ * @param locale - Optional locale code (default: `'en'`).
45
+ * @returns Formatted date string.
46
+ *
47
+ * @example
48
+ * formatDate(new Date(2026, 0, 1, 15, 5), '{{YYYY}}-{{MM}}-{{DD}} {{hh}}:{{mm}} {{A}}')
49
+ * // => "2026-01-01 03:05 PM"
50
+ */
51
+ export function formatDate(date, format, locale = 'en') {
52
+ if (Intl
53
+ .DateTimeFormat
54
+ .supportedLocalesOf(locale).length === 0) {
55
+ locale = 'en';
67
56
  }
68
- };
69
- const regexp = /{{(DD|D|dd|d|MM|M|MMMM|MMM|YYYY|YY|HH|H|hh|h|mm|m|ss|s|A|a|th|ms)}}/g;
70
- return format.replace(regexp, (match, token) => replacements[token]?.() ?? match);
57
+ const day = date.getDate();
58
+ const dayOfWeek = date.getDay();
59
+ const month = date.getMonth();
60
+ const year = date.getFullYear();
61
+ const hours = date.getHours();
62
+ const minutes = date.getMinutes();
63
+ const seconds = date.getSeconds();
64
+ const isPM = hours >= 12;
65
+ const shortDateNames = [...Array(7)].map((_, i) => new Intl.DateTimeFormat(locale, { weekday: 'short' }).format(new Date(2023, 0, i + 1)));
66
+ const dateNames = [...Array(7)].map((_, i) => new Intl.DateTimeFormat(locale, { weekday: 'long' }).format(new Date(2023, 0, i + 1)));
67
+ const shortMonthNames = [...Array(12)].map((_, i) => new Intl.DateTimeFormat(locale, { month: 'short' }).format(new Date(2023, i, 1)));
68
+ const monthNames = [...Array(12)].map((_, i) => new Intl.DateTimeFormat(locale, { month: 'long' }).format(new Date(2023, i, 1)));
69
+ const replacements = {
70
+ 'DD': () => String(day).padStart(2, '0'),
71
+ 'D': () => String(day),
72
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
73
+ 'dd': () => dateNames[dayOfWeek],
74
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
75
+ 'd': () => shortDateNames[dayOfWeek],
76
+ 'MM': () => String(month + 1).padStart(2, '0'),
77
+ 'M': () => String(month + 1),
78
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
79
+ 'MMMM': () => monthNames[month],
80
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
81
+ 'MMM': () => shortMonthNames[month],
82
+ 'YYYY': () => String(year),
83
+ 'YY': () => String(year).slice(-2),
84
+ 'hh': () => String(hours % 12 !== 0 ? hours % 12 : 12).padStart(2, '0'),
85
+ 'h': () => String(hours % 12 !== 0 ? hours % 12 : 12),
86
+ 'HH': () => String(hours).padStart(2, '0'),
87
+ 'H': () => String(hours),
88
+ 'mm': () => String(minutes).padStart(2, '0'),
89
+ 'm': () => String(minutes),
90
+ 'ss': () => String(seconds).padStart(2, '0'),
91
+ 's': () => String(seconds),
92
+ 'ms': () => String(date.getMilliseconds()).padStart(3, '0'),
93
+ 'A': () => (isPM ? 'PM' : 'AM'),
94
+ 'a': () => (isPM ? 'pm' : 'am'),
95
+ 'th': () => {
96
+ if (locale.startsWith('fr') && day === 1)
97
+ return 'er';
98
+ if (locale.startsWith('en')) {
99
+ const mod10 = day % 10;
100
+ const mod100 = day % 100;
101
+ if (mod10 === 1 && mod100 !== 11)
102
+ return 'st';
103
+ if (mod10 === 2 && mod100 !== 12)
104
+ return 'nd';
105
+ if (mod10 === 3 && mod100 !== 13)
106
+ return 'rd';
107
+ return 'th';
108
+ }
109
+ return '';
110
+ }
111
+ };
112
+ const regexp = /{{(DD|D|dd|d|MM|M|MMMM|MMM|YYYY|YY|HH|H|hh|h|mm|m|ss|s|A|a|th|ms)}}/g;
113
+ return format.replace(regexp, (match, token) => replacements[token]?.() ?? match);
71
114
  }
72
- export {
73
- formatDate
74
- };
115
+ // [WIP] this was removed since JavaScript's Date object don't hold timezone data
116
+ // those templates would only reflect the curent client's timezone, no matter what the input Date obj was
117
+ // 'ZZ': () => {
118
+ // const timezoneOffset = date.getTimezoneOffset()
119
+ // const offsetHours = Math.floor(Math.abs(timezoneOffset) / 60)
120
+ // const offsetMinutes = Math.abs(timezoneOffset) % 60
121
+ // const sign = timezoneOffset > 0 ? '-' : '+'
122
+ // return `${sign}${String(offsetHours).padStart(2, '0')}:${String(offsetMinutes).padStart(2, '0')}`
123
+ // },
124
+ // 'Z': () => {
125
+ // const timezoneOffset = date.getTimezoneOffset()
126
+ // if (timezoneOffset === 0) return 'Z'
127
+ // const offsetHours = Math.floor(Math.abs(timezoneOffset) / 60)
128
+ // const offsetMinutes = Math.abs(timezoneOffset) % 60
129
+ // const sign = timezoneOffset > 0 ? '-' : '+'
130
+ // return `${sign}${String(offsetHours).padStart(2, '0')}:${String(offsetMinutes).padStart(2, '0')}`
131
+ // },
132
+ // 'z': () => {
133
+ // return Intl.DateTimeFormat(locale, { timeZoneName: 'short' })
134
+ // .formatToParts(date)
135
+ // .find(part => part.type === 'timeZoneName')?.value || ''
136
+ // },
137
+ // 'zz': () => {
138
+ // return Intl.DateTimeFormat(locale, { timeZoneName: 'long' })
139
+ // .formatToParts(date)
140
+ // .find(part => part.type === 'timeZoneName')?.value || ''
141
+ // },
142
+ // 'tz': () => Intl.DateTimeFormat().resolvedOptions().timeZone || ''
@@ -1,142 +1,108 @@
1
- // src/agnostic/time/duration/index.ts
2
- var Duration = class {
3
- value;
4
- type;
5
- /**
6
- * Creates a new Duration instance.
7
- *
8
- * @param value - The numeric value of the duration.
9
- * @param type - The unit of the duration, either long or short form.
10
- */
11
- constructor(value, type) {
12
- this.toMilliseconds = this.toMilliseconds.bind(this);
13
- this.toSeconds = this.toSeconds.bind(this);
14
- this.toMinutes = this.toMinutes.bind(this);
15
- this.toHours = this.toHours.bind(this);
16
- this.toDays = this.toDays.bind(this);
17
- this.toWeeks = this.toWeeks.bind(this);
18
- this.toMonths = this.toMonths.bind(this);
19
- this.toYear = this.toYear.bind(this);
20
- this.value = value;
21
- if (type === "ms" || type === "milliseconds") {
22
- this.type = "milliseconds";
23
- } else if (type === "s" || type === "sec" || type === "seconds") {
24
- this.type = "seconds";
25
- } else if (type === "m" || type === "min" || type === "minutes") {
26
- this.type = "minutes";
27
- } else if (type === "h" || type === "hours") {
28
- this.type = "hours";
29
- } else if (type === "d" || type === "days") {
30
- this.type = "days";
31
- } else if (type === "w" || type === "weeks") {
32
- this.type = "weeks";
33
- } else if (type === "mo" || type === "mth" || type === "months") {
34
- this.type = "months";
35
- } else if (type === "y" || type === "years") {
36
- this.type = "years";
37
- } else {
38
- this.type = "milliseconds";
1
+ /**
2
+ * Represents a duration in a specific unit and allows conversion to other units.
3
+ */
4
+ export class Duration {
5
+ value;
6
+ type;
7
+ /**
8
+ * Creates a new Duration instance.
9
+ *
10
+ * @param value - The numeric value of the duration.
11
+ * @param type - The unit of the duration, either long or short form.
12
+ */
13
+ constructor(value, type) {
14
+ this.toMilliseconds = this.toMilliseconds.bind(this);
15
+ this.toSeconds = this.toSeconds.bind(this);
16
+ this.toMinutes = this.toMinutes.bind(this);
17
+ this.toHours = this.toHours.bind(this);
18
+ this.toDays = this.toDays.bind(this);
19
+ this.toWeeks = this.toWeeks.bind(this);
20
+ this.toMonths = this.toMonths.bind(this);
21
+ this.toYear = this.toYear.bind(this);
22
+ this.value = value;
23
+ if (type === 'ms' || type === 'milliseconds') {
24
+ this.type = 'milliseconds';
25
+ }
26
+ else if (type === 's' || type === 'sec' || type === 'seconds') {
27
+ this.type = 'seconds';
28
+ }
29
+ else if (type === 'm' || type === 'min' || type === 'minutes') {
30
+ this.type = 'minutes';
31
+ }
32
+ else if (type === 'h' || type === 'hours') {
33
+ this.type = 'hours';
34
+ }
35
+ else if (type === 'd' || type === 'days') {
36
+ this.type = 'days';
37
+ }
38
+ else if (type === 'w' || type === 'weeks') {
39
+ this.type = 'weeks';
40
+ }
41
+ else if (type === 'mo' || type === 'mth' || type === 'months') {
42
+ this.type = 'months';
43
+ }
44
+ else if (type === 'y' || type === 'years') {
45
+ this.type = 'years';
46
+ }
47
+ else {
48
+ this.type = 'milliseconds';
49
+ } // defaults to milliseconds
39
50
  }
40
- }
41
- // [WIP] why only toMs and no other shorthands ?
42
- toMilliseconds() {
43
- if (this.type === "milliseconds") return this.value;
44
- if (this.type === "seconds") return this.value * 1e3;
45
- if (this.type === "minutes") return this.value * 1e3 * 60;
46
- if (this.type === "hours") return this.value * 1e3 * 60 * 60;
47
- if (this.type === "days") return this.value * 1e3 * 60 * 60 * 24;
48
- if (this.type === "weeks") return this.value * 1e3 * 60 * 60 * 24 * 7;
49
- if (this.type === "months") return this.value * 1e3 * 60 * 60 * 24 * 30;
50
- if (this.type === "years") return this.value * 1e3 * 60 * 60 * 24 * 365;
51
- return this.value;
52
- }
53
- toMs = this.toMilliseconds.bind(this);
54
- toSeconds() {
55
- return this.toMs() / 1e3;
56
- }
57
- toS = this.toSeconds.bind(this);
58
- toSec = this.toSeconds.bind(this);
59
- toMinutes() {
60
- return this.toMs() / (1e3 * 60);
61
- }
62
- toM = this.toMinutes.bind(this);
63
- toMin = this.toMinutes.bind(this);
64
- toHours() {
65
- return this.toMs() / (1e3 * 60 * 60);
66
- }
67
- toH = this.toHours.bind(this);
68
- toDays() {
69
- return this.toMs() / (1e3 * 60 * 60 * 24);
70
- }
71
- toD = this.toDays.bind(this);
72
- toWeeks() {
73
- return this.toMs() / (1e3 * 60 * 60 * 24 * 7);
74
- }
75
- toW = this.toWeeks.bind(this);
76
- toMonths() {
77
- return this.toMs() / (1e3 * 60 * 60 * 24 * 30);
78
- }
79
- toMth = this.toMonths.bind(this);
80
- toYear() {
81
- return this.toMs() / (1e3 * 60 * 60 * 24 * 365);
82
- }
83
- toY = this.toYear.bind(this);
84
- toYr = this.toYear.bind(this);
85
- };
86
- function milliseconds(value) {
87
- return new Duration(value, "milliseconds");
88
- }
89
- var ms = milliseconds;
90
- function seconds(value) {
91
- return new Duration(value, "seconds");
92
- }
93
- var s = seconds;
94
- var sec = seconds;
95
- function minutes(value) {
96
- return new Duration(value, "minutes");
97
- }
98
- var m = minutes;
99
- var min = minutes;
100
- function hours(value) {
101
- return new Duration(value, "hours");
102
- }
103
- var h = hours;
104
- function days(value) {
105
- return new Duration(value, "days");
106
- }
107
- var d = days;
108
- function weeks(value) {
109
- return new Duration(value, "weeks");
110
- }
111
- var w = weeks;
112
- function months(value) {
113
- return new Duration(value, "months");
114
- }
115
- var mth = months;
116
- function years(value) {
117
- return new Duration(value, "years");
51
+ // [WIP] why only toMs and no other shorthands ?
52
+ toMilliseconds() {
53
+ if (this.type === 'milliseconds')
54
+ return this.value;
55
+ if (this.type === 'seconds')
56
+ return this.value * 1000;
57
+ if (this.type === 'minutes')
58
+ return this.value * 1000 * 60;
59
+ if (this.type === 'hours')
60
+ return this.value * 1000 * 60 * 60;
61
+ if (this.type === 'days')
62
+ return this.value * 1000 * 60 * 60 * 24;
63
+ if (this.type === 'weeks')
64
+ return this.value * 1000 * 60 * 60 * 24 * 7;
65
+ if (this.type === 'months')
66
+ return this.value * 1000 * 60 * 60 * 24 * 30;
67
+ if (this.type === 'years')
68
+ return this.value * 1000 * 60 * 60 * 24 * 365;
69
+ return this.value; // defaults to milliseconds
70
+ }
71
+ toMs = this.toMilliseconds.bind(this);
72
+ toSeconds() { return this.toMs() / 1000; }
73
+ toS = this.toSeconds.bind(this);
74
+ toSec = this.toSeconds.bind(this);
75
+ toMinutes() { return this.toMs() / (1000 * 60); }
76
+ toM = this.toMinutes.bind(this);
77
+ toMin = this.toMinutes.bind(this);
78
+ toHours() { return this.toMs() / (1000 * 60 * 60); }
79
+ toH = this.toHours.bind(this);
80
+ toDays() { return this.toMs() / (1000 * 60 * 60 * 24); }
81
+ toD = this.toDays.bind(this);
82
+ toWeeks() { return this.toMs() / (1000 * 60 * 60 * 24 * 7); }
83
+ toW = this.toWeeks.bind(this);
84
+ toMonths() { return this.toMs() / (1000 * 60 * 60 * 24 * 30); }
85
+ toMth = this.toMonths.bind(this);
86
+ toYear() { return this.toMs() / (1000 * 60 * 60 * 24 * 365); }
87
+ toY = this.toYear.bind(this);
88
+ toYr = this.toYear.bind(this);
118
89
  }
119
- var y = years;
120
- var yr = years;
121
- export {
122
- Duration,
123
- d,
124
- days,
125
- h,
126
- hours,
127
- m,
128
- milliseconds,
129
- min,
130
- minutes,
131
- months,
132
- ms,
133
- mth,
134
- s,
135
- sec,
136
- seconds,
137
- w,
138
- weeks,
139
- y,
140
- years,
141
- yr
142
- };
90
+ export function milliseconds(value) { return new Duration(value, 'milliseconds'); }
91
+ export const ms = milliseconds;
92
+ export function seconds(value) { return new Duration(value, 'seconds'); }
93
+ export const s = seconds;
94
+ export const sec = seconds;
95
+ export function minutes(value) { return new Duration(value, 'minutes'); }
96
+ export const m = minutes;
97
+ export const min = minutes;
98
+ export function hours(value) { return new Duration(value, 'hours'); }
99
+ export const h = hours;
100
+ export function days(value) { return new Duration(value, 'days'); }
101
+ export const d = days;
102
+ export function weeks(value) { return new Duration(value, 'weeks'); }
103
+ export const w = weeks;
104
+ export function months(value) { return new Duration(value, 'months'); }
105
+ export const mth = months;
106
+ export function years(value) { return new Duration(value, 'years'); }
107
+ export const y = years;
108
+ export const yr = years;
@@ -1,17 +1,25 @@
1
- // src/agnostic/time/timeout/index.ts
2
- async function timeout(timeoutMs, callback) {
3
- let hasRejected = false;
4
- return await new Promise(async (resolve, reject) => {
5
- const rejectTimeout = setTimeout(() => {
6
- reject(false);
7
- hasRejected = true;
8
- }, timeoutMs);
9
- const callbackResult = await callback();
10
- if (hasRejected) return;
11
- clearTimeout(rejectTimeout);
12
- return resolve(callbackResult);
13
- });
1
+ /**
2
+ * Executes a callback and rejects if it does not complete within a specified timeout.
3
+ *
4
+ * @template T - The type of the callback's return value.
5
+ * @param timeoutMs - Maximum time in milliseconds to wait for the callback to complete.
6
+ * @param callback - The function to execute. Can be synchronous or return a promise.
7
+ * @returns A promise that resolves with the callback result if completed in time, or rejects with `false` if timed out.
8
+ */
9
+ export async function timeout(timeoutMs, callback) {
10
+ let hasRejected = false;
11
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises, no-async-promise-executor
12
+ return await new Promise(async (resolve, reject) => {
13
+ const rejectTimeout = setTimeout(() => {
14
+ // eslint-disable-next-line prefer-promise-reject-errors
15
+ reject(false);
16
+ hasRejected = true;
17
+ }, timeoutMs);
18
+ // eslint-disable-next-line @typescript-eslint/await-thenable
19
+ const callbackResult = await callback();
20
+ if (hasRejected)
21
+ return;
22
+ clearTimeout(rejectTimeout);
23
+ return resolve(callbackResult);
24
+ });
14
25
  }
15
- export {
16
- timeout
17
- };