@design-edito/tools 0.4.5 → 0.4.11

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 (421) 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.d.ts +1 -1
  11. package/agnostic/arrays/make/index.js +11 -6
  12. package/agnostic/arrays/make/index.test.js +10 -0
  13. package/agnostic/arrays/random-pick/index.js +38 -22
  14. package/agnostic/arrays/random-pick/index.test.js +23 -0
  15. package/agnostic/arrays/shuffle/index.js +15 -11
  16. package/agnostic/arrays/shuffle/index.test.js +14 -0
  17. package/agnostic/booleans/is-falsy/index.js +24 -15
  18. package/agnostic/booleans/is-falsy/index.test.js +26 -0
  19. package/agnostic/colors/channels/index.js +139 -936
  20. package/agnostic/colors/channels/index.test.js +64 -0
  21. package/agnostic/colors/contrast/index.js +24 -643
  22. package/agnostic/colors/contrast/index.test.js +21 -0
  23. package/agnostic/colors/convert/index.js +811 -837
  24. package/agnostic/colors/convert/index.test.js +98 -0
  25. package/agnostic/colors/cssColorsMap.js +153 -0
  26. package/agnostic/colors/distance/index.js +66 -538
  27. package/agnostic/colors/distance/index.test.js +21 -0
  28. package/agnostic/colors/grayscale/index.js +95 -872
  29. package/agnostic/colors/grayscale/index.test.js +34 -0
  30. package/agnostic/colors/index.d.ts +4 -4
  31. package/agnostic/colors/index.js +4 -4
  32. package/agnostic/colors/invert/index.js +34 -719
  33. package/agnostic/colors/invert/index.test.js +31 -0
  34. package/agnostic/colors/lerp/index.js +75 -804
  35. package/agnostic/colors/lerp/index.test.js +55 -0
  36. package/agnostic/colors/luminance/index.js +17 -625
  37. package/agnostic/colors/luminance/index.test.js +30 -0
  38. package/agnostic/colors/palette/index.js +83 -917
  39. package/agnostic/colors/palette/index.test.js +35 -0
  40. package/agnostic/colors/rotate/index.js +35 -835
  41. package/agnostic/colors/rotate/index.test.js +45 -0
  42. package/agnostic/colors/tidy/index.js +79 -530
  43. package/agnostic/colors/tidy/index.test.js +45 -0
  44. package/agnostic/colors/typechecks/index.js +188 -250
  45. package/agnostic/colors/typechecks/index.test.js +113 -0
  46. package/agnostic/colors/types.js +1 -0
  47. package/agnostic/css/bem/index.js +134 -171
  48. package/agnostic/css/clss/index.js +64 -29
  49. package/agnostic/css/clss/index.test.js +60 -0
  50. package/agnostic/css/generate-nice-color/index.js +26 -71
  51. package/agnostic/css/generate-nice-color/index.test.js +8 -0
  52. package/agnostic/css/index.d.ts +2 -2
  53. package/agnostic/css/index.js +2 -2
  54. package/agnostic/css/is-valid-css-class-name/index.js +14 -8
  55. package/agnostic/css/is-valid-css-class-name/index.test.js +36 -0
  56. package/agnostic/css/scale/index.d.ts +46 -16
  57. package/agnostic/css/scale/index.js +70 -54
  58. package/agnostic/css/scale/index.test.js +88 -0
  59. package/agnostic/css/styles-set/index.js +151 -178
  60. package/agnostic/errors/index.d.ts +1 -1
  61. package/agnostic/errors/index.js +1 -1
  62. package/agnostic/errors/register/index.js +45 -49
  63. package/agnostic/errors/unknown-to-string/index.js +17 -10
  64. package/agnostic/errors/unknown-to-string/index.test.js +35 -0
  65. package/agnostic/html/get-node-ancestors/index.js +29 -29
  66. package/agnostic/html/get-node-ancestors/index.test.js +58 -0
  67. package/agnostic/html/get-position-inside-parent/index.js +13 -8
  68. package/agnostic/html/get-position-inside-parent/index.test.js +56 -0
  69. package/agnostic/html/hyper-json/cast/index.js +128 -2931
  70. package/agnostic/html/hyper-json/index.js +23 -2954
  71. package/agnostic/html/hyper-json/method/index.js +10 -14
  72. package/agnostic/html/hyper-json/serialize/index.js +88 -222
  73. package/agnostic/html/hyper-json/smart-tags/coalesced/add/index.js +14 -2938
  74. package/agnostic/html/hyper-json/smart-tags/coalesced/addclass/index.js +27 -2937
  75. package/agnostic/html/hyper-json/smart-tags/coalesced/and/index.js +13 -2938
  76. package/agnostic/html/hyper-json/smart-tags/coalesced/append/index.js +34 -2938
  77. package/agnostic/html/hyper-json/smart-tags/coalesced/at/index.js +42 -2935
  78. package/agnostic/html/hyper-json/smart-tags/coalesced/call/index.js +47 -2937
  79. package/agnostic/html/hyper-json/smart-tags/coalesced/clone/index.js +10 -2939
  80. package/agnostic/html/hyper-json/smart-tags/coalesced/deleteproperties/index.js +45 -2936
  81. package/agnostic/html/hyper-json/smart-tags/coalesced/equals/index.js +22 -2938
  82. package/agnostic/html/hyper-json/smart-tags/coalesced/getattribute/index.js +26 -2938
  83. package/agnostic/html/hyper-json/smart-tags/coalesced/getproperties/index.js +19 -2938
  84. package/agnostic/html/hyper-json/smart-tags/coalesced/getproperty/index.js +67 -2935
  85. package/agnostic/html/hyper-json/smart-tags/coalesced/hjparse/index.js +21 -2937
  86. package/agnostic/html/hyper-json/smart-tags/coalesced/hjstringify/index.js +89 -2938
  87. package/agnostic/html/hyper-json/smart-tags/coalesced/if/index.js +20 -2938
  88. package/agnostic/html/hyper-json/smart-tags/coalesced/index.d.ts +11 -11
  89. package/agnostic/html/hyper-json/smart-tags/coalesced/index.js +11 -11
  90. package/agnostic/html/hyper-json/smart-tags/coalesced/initialize/index.js +37 -2938
  91. package/agnostic/html/hyper-json/smart-tags/coalesced/join/index.js +16 -2938
  92. package/agnostic/html/hyper-json/smart-tags/coalesced/length/index.js +21 -2938
  93. package/agnostic/html/hyper-json/smart-tags/coalesced/map/index.js +31 -2938
  94. package/agnostic/html/hyper-json/smart-tags/coalesced/negate/index.js +10 -2939
  95. package/agnostic/html/hyper-json/smart-tags/coalesced/notrailing/index.js +33 -2938
  96. package/agnostic/html/hyper-json/smart-tags/coalesced/or/index.js +13 -2938
  97. package/agnostic/html/hyper-json/smart-tags/coalesced/pickrandom/index.js +17 -2938
  98. package/agnostic/html/hyper-json/smart-tags/coalesced/populate/index.js +59 -2938
  99. package/agnostic/html/hyper-json/smart-tags/coalesced/print/index.js +23 -2938
  100. package/agnostic/html/hyper-json/smart-tags/coalesced/push/index.js +10 -2939
  101. package/agnostic/html/hyper-json/smart-tags/coalesced/pusheach/index.js +26 -2938
  102. package/agnostic/html/hyper-json/smart-tags/coalesced/recordtoarray/index.js +10 -2939
  103. package/agnostic/html/hyper-json/smart-tags/coalesced/removeattribute/index.js +53 -2935
  104. package/agnostic/html/hyper-json/smart-tags/coalesced/removeclass/index.js +27 -2937
  105. package/agnostic/html/hyper-json/smart-tags/coalesced/renameproperty/index.js +31 -2937
  106. package/agnostic/html/hyper-json/smart-tags/coalesced/replace/index.js +55 -2940
  107. package/agnostic/html/hyper-json/smart-tags/coalesced/select/index.js +29 -2935
  108. package/agnostic/html/hyper-json/smart-tags/coalesced/set/index.js +29 -2938
  109. package/agnostic/html/hyper-json/smart-tags/coalesced/setattribute/index.js +53 -2935
  110. package/agnostic/html/hyper-json/smart-tags/coalesced/setproperty/index.js +232 -2936
  111. package/agnostic/html/hyper-json/smart-tags/coalesced/sorton/index.js +89 -2936
  112. package/agnostic/html/hyper-json/smart-tags/coalesced/split/index.js +20 -2938
  113. package/agnostic/html/hyper-json/smart-tags/coalesced/spread/index.js +23 -2939
  114. package/agnostic/html/hyper-json/smart-tags/coalesced/toarray/index.js +11 -2939
  115. package/agnostic/html/hyper-json/smart-tags/coalesced/toboolean/index.js +11 -2939
  116. package/agnostic/html/hyper-json/smart-tags/coalesced/toelement/index.js +17 -2938
  117. package/agnostic/html/hyper-json/smart-tags/coalesced/toggleclass/index.js +27 -2937
  118. package/agnostic/html/hyper-json/smart-tags/coalesced/tonodelist/index.js +11 -2939
  119. package/agnostic/html/hyper-json/smart-tags/coalesced/tonull/index.js +10 -2939
  120. package/agnostic/html/hyper-json/smart-tags/coalesced/tonumber/index.js +11 -2939
  121. package/agnostic/html/hyper-json/smart-tags/coalesced/torecord/index.js +11 -2939
  122. package/agnostic/html/hyper-json/smart-tags/coalesced/toref/index.js +11 -2939
  123. package/agnostic/html/hyper-json/smart-tags/coalesced/tostring/index.js +11 -2939
  124. package/agnostic/html/hyper-json/smart-tags/coalesced/totext/index.js +11 -2939
  125. package/agnostic/html/hyper-json/smart-tags/coalesced/transformselected/index.js +84 -2938
  126. package/agnostic/html/hyper-json/smart-tags/coalesced/trim/index.js +14 -2938
  127. package/agnostic/html/hyper-json/smart-tags/index.js +28 -181
  128. package/agnostic/html/hyper-json/smart-tags/isolated/any/index.js +12 -195
  129. package/agnostic/html/hyper-json/smart-tags/isolated/array/index.js +12 -195
  130. package/agnostic/html/hyper-json/smart-tags/isolated/boolean/index.js +12 -2939
  131. package/agnostic/html/hyper-json/smart-tags/isolated/element/index.js +24 -2938
  132. package/agnostic/html/hyper-json/smart-tags/isolated/get/index.js +18 -2938
  133. package/agnostic/html/hyper-json/smart-tags/isolated/guess/index.js +56 -2937
  134. package/agnostic/html/hyper-json/smart-tags/isolated/index.d.ts +2 -2
  135. package/agnostic/html/hyper-json/smart-tags/isolated/index.js +2 -2
  136. package/agnostic/html/hyper-json/smart-tags/isolated/nodelist/index.js +18 -2938
  137. package/agnostic/html/hyper-json/smart-tags/isolated/null/index.js +9 -193
  138. package/agnostic/html/hyper-json/smart-tags/isolated/number/index.js +16 -2938
  139. package/agnostic/html/hyper-json/smart-tags/isolated/record/index.js +12 -2938
  140. package/agnostic/html/hyper-json/smart-tags/isolated/ref/index.js +40 -2935
  141. package/agnostic/html/hyper-json/smart-tags/isolated/string/index.js +16 -2938
  142. package/agnostic/html/hyper-json/smart-tags/isolated/text/index.js +18 -2938
  143. package/agnostic/html/hyper-json/transformer/index.js +112 -148
  144. package/agnostic/html/hyper-json/tree/index.js +411 -2928
  145. package/agnostic/html/hyper-json/types/index.js +27 -18
  146. package/agnostic/html/hyper-json/utils/index.js +497 -2921
  147. package/agnostic/html/index.d.ts +2 -2
  148. package/agnostic/html/index.js +2 -2
  149. package/agnostic/html/insert-node/index.js +27 -16
  150. package/agnostic/html/insert-node/index.test.js +73 -0
  151. package/agnostic/html/placeholders/index.js +26 -29
  152. package/agnostic/html/replace-in-element/index.js +31 -48
  153. package/agnostic/html/replace-in-element/index.test.js +80 -0
  154. package/agnostic/html/selector-to-element/index.js +53 -39
  155. package/agnostic/html/selector-to-element/index.test.js +69 -0
  156. package/agnostic/html/string-to-nodes/index.js +24 -25
  157. package/agnostic/html/string-to-nodes/index.test.js +54 -0
  158. package/agnostic/index.d.ts +4 -4
  159. package/agnostic/index.js +4 -4
  160. package/agnostic/misc/assert/index.js +60 -66
  161. package/agnostic/misc/cast/index.js +123 -57
  162. package/agnostic/misc/cast/index.test.js +134 -0
  163. package/agnostic/misc/connection/index.js +55 -36
  164. package/agnostic/misc/connection/index.test.js +143 -0
  165. package/agnostic/misc/crawler/index.js +68 -46
  166. package/agnostic/misc/crawler/index.test.js +56 -0
  167. package/agnostic/misc/crossenv/detect-runtime/index.js +41 -13
  168. package/agnostic/misc/crossenv/detect-runtime/index.test.js +24 -0
  169. package/agnostic/misc/crossenv/types.js +21 -14
  170. package/agnostic/misc/crossenv/window/index.js +45 -24
  171. package/agnostic/misc/crossenv/window/index.test.js +24 -0
  172. package/agnostic/misc/data-size/index.js +182 -294
  173. package/agnostic/misc/data-size/index.test.js +100 -0
  174. package/agnostic/misc/data-size/types.js +1 -0
  175. package/agnostic/misc/index.d.ts +5 -5
  176. package/agnostic/misc/index.js +5 -5
  177. package/agnostic/misc/is-constructor-function/index.js +12 -6
  178. package/agnostic/misc/is-constructor-function/index.test.js +36 -0
  179. package/agnostic/misc/is-nullish/index.js +24 -11
  180. package/agnostic/misc/is-nullish/index.test.js +44 -0
  181. package/agnostic/misc/logs/index.d.ts +1 -1
  182. package/agnostic/misc/logs/index.js +1 -1
  183. package/agnostic/misc/logs/logger/index.js +115 -140
  184. package/agnostic/misc/logs/make-text-block/index.js +13 -13
  185. package/agnostic/misc/logs/styles/index.js +29 -48
  186. package/agnostic/misc/lorem-ipsum/index.js +51 -201
  187. package/agnostic/misc/lorem-ipsum/index.test.js +49 -0
  188. package/agnostic/misc/normalize-extension/index.js +99 -88
  189. package/agnostic/misc/normalize-extension/index.test.js +40 -0
  190. package/agnostic/misc/outcome/index.js +20 -14
  191. package/agnostic/misc/outcome/index.test.js +40 -0
  192. package/agnostic/numbers/absolute-modulo/index.js +9 -6
  193. package/agnostic/numbers/absolute-modulo/index.test.js +23 -0
  194. package/agnostic/numbers/approximate-rational/index.js +86 -69
  195. package/agnostic/numbers/approximate-rational/index.test.js +90 -0
  196. package/agnostic/numbers/clamp/index.js +12 -8
  197. package/agnostic/numbers/clamp/index.test.js +24 -0
  198. package/agnostic/numbers/geometric-progressions/index.js +25 -16
  199. package/agnostic/numbers/geometric-progressions/index.test.js +45 -0
  200. package/agnostic/numbers/index.d.ts +2 -2
  201. package/agnostic/numbers/index.js +2 -2
  202. package/agnostic/numbers/interpolate/index.js +25 -10
  203. package/agnostic/numbers/interpolate/index.test.js +40 -0
  204. package/agnostic/numbers/round/index.js +30 -15
  205. package/agnostic/numbers/round/index.test.js +56 -0
  206. package/agnostic/objects/deep-get-property/index.js +30 -27
  207. package/agnostic/objects/deep-get-property/index.test.js +59 -0
  208. package/agnostic/objects/enums/is-in-enum/index.js +17 -11
  209. package/agnostic/objects/enums/is-in-enum/index.test.js +100 -0
  210. package/agnostic/objects/flatten-getters/index.js +15 -14
  211. package/agnostic/objects/flatten-getters/index.test.js +78 -0
  212. package/agnostic/objects/index.d.ts +4 -4
  213. package/agnostic/objects/index.js +4 -4
  214. package/agnostic/objects/is-object/index.js +16 -9
  215. package/agnostic/objects/is-object/index.test.js +60 -0
  216. package/agnostic/objects/is-record/index.js +12 -7
  217. package/agnostic/objects/is-record/index.test.js +48 -0
  218. package/agnostic/objects/record-format/index.js +18 -12
  219. package/agnostic/objects/record-format/index.test.js +92 -0
  220. package/agnostic/objects/record-map/index.js +16 -11
  221. package/agnostic/objects/record-map/index.test.js +56 -0
  222. package/agnostic/objects/sort-keys/index.js +15 -11
  223. package/agnostic/objects/sort-keys/index.test.js +37 -0
  224. package/agnostic/objects/validation/index.js +21 -8
  225. package/agnostic/objects/validation/index.test.js +72 -0
  226. package/agnostic/optim/memoize/index.js +24 -16
  227. package/agnostic/optim/memoize/index.test.js +30 -0
  228. package/agnostic/optim/throttle-debounce/index.js +120 -102
  229. package/agnostic/optim/throttle-debounce/index.test.js +44 -0
  230. package/agnostic/optim/throttle-debounce/types.js +1 -0
  231. package/agnostic/random/hex-char/index.js +8 -10
  232. package/agnostic/random/hex-char/index.test.js +20 -0
  233. package/agnostic/random/index.d.ts +1 -1
  234. package/agnostic/random/index.js +1 -1
  235. package/agnostic/random/random/index.js +17 -14
  236. package/agnostic/random/random/index.test.js +73 -0
  237. package/agnostic/random/uuid/index.js +28 -20
  238. package/agnostic/random/uuid/index.test.js +45 -0
  239. package/agnostic/regexps/index.js +126 -84
  240. package/agnostic/regexps/index.test.js +108 -0
  241. package/agnostic/sanitization/file-name/index.js +24 -8
  242. package/agnostic/sanitization/file-name/index.test.js +23 -0
  243. package/agnostic/sanitization/html/index.js +172 -122
  244. package/agnostic/sanitization/index.d.ts +1 -1
  245. package/agnostic/sanitization/index.js +1 -1
  246. package/agnostic/sanitization/path/index.js +23 -15
  247. package/agnostic/sanitization/path/index.test.js +18 -0
  248. package/agnostic/sanitization/types.js +1 -0
  249. package/agnostic/sanitization/user-input/index.js +36 -24
  250. package/agnostic/sanitization/user-input/index.test.js +31 -0
  251. package/agnostic/strings/char-codes/index.js +123 -55
  252. package/agnostic/strings/index.d.ts +1 -1
  253. package/agnostic/strings/index.js +1 -1
  254. package/agnostic/strings/matches/index.js +35 -16
  255. package/agnostic/strings/normalize-indent/index.js +34 -16
  256. package/agnostic/strings/parse-table/index.js +153 -86
  257. package/agnostic/strings/replace-all/index.js +36 -15
  258. package/agnostic/strings/to-alphanum/index.js +23 -8
  259. package/agnostic/strings/trim/index.js +22 -9
  260. package/agnostic/time/dates/format-date/index.js +140 -72
  261. package/agnostic/time/duration/index.js +106 -140
  262. package/agnostic/time/timeout/index.js +24 -16
  263. package/agnostic/time/transitions/index.js +200 -158
  264. package/agnostic/time/wait/index.js +10 -8
  265. package/agnostic/typescript/types.js +1 -0
  266. package/components/BeforeAfter/index.controlled.js +95 -0
  267. package/components/BeforeAfter/index.js +54 -189
  268. package/components/BeforeAfter/utils.js +9 -0
  269. package/components/Disclaimer/index.js +50 -110
  270. package/components/Drawer/index.js +81 -196
  271. package/components/EventListener/index.js +29 -80
  272. package/components/Gallery/index.js +146 -221
  273. package/components/Gallery/utils.js +12 -0
  274. package/components/Image/index.js +66 -293
  275. package/components/IntersectionObserver/index.js +62 -110
  276. package/components/Overlayer/index.js +59 -103
  277. package/components/Paginator/index.js +124 -155
  278. package/components/ResizeObserver/index.js +66 -119
  279. package/components/ResizeObserver/style.module.css +0 -0
  280. package/components/Scrllgngn/index.js +171 -468
  281. package/components/ScrollListener/index.js +97 -276
  282. package/components/ScrollListener/utils.js +51 -0
  283. package/components/Sequencer/index.controlled.js +67 -0
  284. package/components/Sequencer/index.js +105 -262
  285. package/components/ShadowRoot/index.js +42 -96
  286. package/components/Subtitles/index.js +107 -244
  287. package/components/Subtitles/types.js +1 -0
  288. package/components/Subtitles/utils.js +102 -0
  289. package/components/Theatre/index.js +88 -136
  290. package/components/UIModule/index.js +156 -199
  291. package/components/Video/index.js +292 -857
  292. package/components/Video/utils.js +137 -0
  293. package/components/_WIP_AudioQuote/index.js +1 -0
  294. package/components/_WIP_Icon/index.js +1 -0
  295. package/components/index.d.ts +4 -4
  296. package/components/index.js +4 -4
  297. package/components/public-classnames.js +18 -0
  298. package/components/utils/index.js +11 -11
  299. package/components/utils/types.js +1 -0
  300. package/index.d.ts +1 -1
  301. package/index.js +1 -1
  302. package/node/@aws-s3/index.test.js +6 -0
  303. package/node/@aws-s3/storage/directory/copy-dir/index.js +66 -72
  304. package/node/@aws-s3/storage/directory/index.d.ts +1 -1
  305. package/node/@aws-s3/storage/directory/index.js +1 -1
  306. package/node/@aws-s3/storage/directory/list/index.js +32 -42
  307. package/node/@aws-s3/storage/directory/move-dir/index.js +68 -86
  308. package/node/@aws-s3/storage/directory/remove-dir/index.js +56 -67
  309. package/node/@aws-s3/storage/file/copy/index.js +41 -53
  310. package/node/@aws-s3/storage/file/download/index.js +29 -40
  311. package/node/@aws-s3/storage/file/exists/index.js +35 -43
  312. package/node/@aws-s3/storage/file/index.d.ts +1 -1
  313. package/node/@aws-s3/storage/file/index.js +1 -1
  314. package/node/@aws-s3/storage/file/move/index.js +57 -63
  315. package/node/@aws-s3/storage/file/remove/index.js +35 -43
  316. package/node/@aws-s3/storage/file/stat/index.js +33 -47
  317. package/node/@aws-s3/storage/file/upload/index.js +52 -63
  318. package/node/@design-edito/index.js +1 -0
  319. package/node/@express/@multer/index.js +61 -55
  320. package/node/@google-cloud/storage/bucket/get-metadata/index.js +25 -29
  321. package/node/@google-cloud/storage/directory/copy-dir/index.js +35 -41
  322. package/node/@google-cloud/storage/directory/index.d.ts +1 -1
  323. package/node/@google-cloud/storage/directory/index.js +1 -1
  324. package/node/@google-cloud/storage/directory/list/index.js +28 -35
  325. package/node/@google-cloud/storage/directory/move-dir/index.js +43 -42
  326. package/node/@google-cloud/storage/directory/remove-dir/index.js +34 -38
  327. package/node/@google-cloud/storage/file/copy/index.js +35 -40
  328. package/node/@google-cloud/storage/file/download/index.js +27 -34
  329. package/node/@google-cloud/storage/file/exists/index.js +25 -31
  330. package/node/@google-cloud/storage/file/generate-signed-url/index.js +33 -35
  331. package/node/@google-cloud/storage/file/get-metadata/index.js +28 -31
  332. package/node/@google-cloud/storage/file/get-permissions/index.js +25 -31
  333. package/node/@google-cloud/storage/file/index.d.ts +3 -3
  334. package/node/@google-cloud/storage/file/index.js +3 -3
  335. package/node/@google-cloud/storage/file/move/index.js +38 -42
  336. package/node/@google-cloud/storage/file/remove/index.js +34 -35
  337. package/node/@google-cloud/storage/file/revoke-signed-urls/index.js +32 -95
  338. package/node/@google-cloud/storage/file/stat/index.js +34 -38
  339. package/node/@google-cloud/storage/file/update-metadata/index.js +30 -31
  340. package/node/@google-cloud/storage/file/upload/index.js +44 -46
  341. package/node/@google-cloud/storage/index.d.ts +1 -1
  342. package/node/@google-cloud/storage/index.js +1 -1
  343. package/node/cloud-storage/clients/index.js +35 -15
  344. package/node/cloud-storage/operations/copy-dir/index.js +30 -203
  345. package/node/cloud-storage/operations/copy-file/index.js +30 -152
  346. package/node/cloud-storage/operations/download-file/index.js +30 -103
  347. package/node/cloud-storage/operations/exists-file/index.js +30 -103
  348. package/node/cloud-storage/operations/index.d.ts +2 -2
  349. package/node/cloud-storage/operations/index.js +2 -2
  350. package/node/cloud-storage/operations/list-dir/index.js +29 -98
  351. package/node/cloud-storage/operations/move-dir/index.js +30 -169
  352. package/node/cloud-storage/operations/move-file/index.js +30 -157
  353. package/node/cloud-storage/operations/remove-dir/index.js +29 -159
  354. package/node/cloud-storage/operations/remove-file/index.js +29 -121
  355. package/node/cloud-storage/operations/stat-file/index.js +29 -124
  356. package/node/cloud-storage/operations/upload-file/index.js +30 -162
  357. package/node/encryption/@aes-256-gcm/buffer/index.js +31 -72
  358. package/node/encryption/@aes-256-gcm/uint8-array/index.js +55 -55
  359. package/node/encryption/key/index.js +19 -12
  360. package/node/files/index.d.ts +1 -1
  361. package/node/files/index.js +1 -1
  362. package/node/files/is-in-directory/index.js +11 -8
  363. package/node/files/read-write/index.js +11 -15
  364. package/node/files/subpaths/index.js +156 -121
  365. package/node/ftps/directory/copy-dir/index.js +55 -62
  366. package/node/ftps/directory/list/index.js +24 -29
  367. package/node/ftps/directory/move-dir/index.js +38 -38
  368. package/node/ftps/directory/remove-dir/index.js +39 -42
  369. package/node/ftps/file/copy/index.js +42 -47
  370. package/node/ftps/file/download/index.js +29 -34
  371. package/node/ftps/file/exists/index.js +38 -36
  372. package/node/ftps/file/index.d.ts +2 -2
  373. package/node/ftps/file/index.js +2 -2
  374. package/node/ftps/file/move/index.js +46 -44
  375. package/node/ftps/file/remove/index.js +36 -39
  376. package/node/ftps/file/stat/index.js +30 -38
  377. package/node/ftps/file/upload/index.js +40 -44
  378. package/node/images/create/index.js +10 -562
  379. package/node/images/format/index.js +264 -815
  380. package/node/images/metadata/index.js +10 -571
  381. package/node/images/transform/index.js +169 -1022
  382. package/node/images/transform/operations/blur/index.js +11 -24
  383. package/node/images/transform/operations/brighten/index.js +11 -24
  384. package/node/images/transform/operations/extend/index.js +25 -589
  385. package/node/images/transform/operations/extract/index.js +15 -28
  386. package/node/images/transform/operations/flatten/index.js +20 -584
  387. package/node/images/transform/operations/flip/index.js +2 -6
  388. package/node/images/transform/operations/flop/index.js +2 -6
  389. package/node/images/transform/operations/hue/index.js +13 -26
  390. package/node/images/transform/operations/index.d.ts +3 -3
  391. package/node/images/transform/operations/index.js +3 -3
  392. package/node/images/transform/operations/level/index.js +14 -30
  393. package/node/images/transform/operations/lighten/index.js +13 -26
  394. package/node/images/transform/operations/normalize/index.js +14 -27
  395. package/node/images/transform/operations/overlay/index.js +89 -673
  396. package/node/images/transform/operations/resize/index.js +46 -610
  397. package/node/images/transform/operations/rotate/index.js +20 -584
  398. package/node/images/transform/operations/saturate/index.js +14 -27
  399. package/node/images/types.js +34 -31
  400. package/node/images/utils/index.js +84 -568
  401. package/node/index.d.ts +2 -2
  402. package/node/index.js +2 -2
  403. package/node/process/on-exit/index.js +45 -26
  404. package/node/process/prompt-continue/index.js +29 -14
  405. package/node/process/spawner/index.js +104 -134
  406. package/node/sftp/directory/copy-dir/index.js +52 -60
  407. package/node/sftp/directory/index.d.ts +1 -1
  408. package/node/sftp/directory/index.js +1 -1
  409. package/node/sftp/directory/list/index.js +22 -29
  410. package/node/sftp/directory/move-dir/index.js +35 -35
  411. package/node/sftp/directory/remove-dir/index.js +39 -42
  412. package/node/sftp/file/copy/index.js +37 -45
  413. package/node/sftp/file/download/index.js +26 -32
  414. package/node/sftp/file/exists/index.js +29 -29
  415. package/node/sftp/file/index.d.ts +2 -2
  416. package/node/sftp/file/index.js +2 -2
  417. package/node/sftp/file/move/index.js +39 -38
  418. package/node/sftp/file/remove/index.js +31 -34
  419. package/node/sftp/file/stat/index.js +26 -37
  420. package/node/sftp/file/upload/index.js +34 -38
  421. package/package.json +1 -1
@@ -0,0 +1,55 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { lerp } from './index.js';
3
+ import { toRgb } from '../convert/index.js';
4
+ describe('lerp', () => {
5
+ it('returns first color when amount is 0', () => {
6
+ const c1 = { r: 255, g: 0, b: 0 };
7
+ const c2 = { r: 0, g: 255, b: 0 };
8
+ const result = lerp(c1, c2, 0);
9
+ const rgb = toRgb(result);
10
+ expect(rgb.r).toBe(255);
11
+ expect(rgb.g).toBe(0);
12
+ expect(rgb.b).toBe(0);
13
+ });
14
+ it('returns second color when amount is 1', () => {
15
+ const c1 = { r: 255, g: 0, b: 0 };
16
+ const c2 = { r: 0, g: 255, b: 0 };
17
+ const result = lerp(c1, c2, 1);
18
+ const rgb = toRgb(result);
19
+ expect(rgb.r).toBe(0);
20
+ expect(rgb.g).toBe(255);
21
+ expect(rgb.b).toBe(0);
22
+ });
23
+ it('interpolates between colors', () => {
24
+ const c1 = { r: 0, g: 0, b: 0 };
25
+ const c2 = { r: 255, g: 255, b: 255 };
26
+ const result = lerp(c1, c2, 0.5);
27
+ const rgb = toRgb(result);
28
+ expect(rgb.r).toBeGreaterThan(0);
29
+ expect(rgb.r).toBeLessThan(255);
30
+ });
31
+ it('preserves first color format', () => {
32
+ const c1 = { h: 0, s: 100, l: 50 };
33
+ const c2 = { r: 0, g: 255, b: 0 };
34
+ const result = lerp(c1, c2, 0.5);
35
+ expect(result).toHaveProperty('h');
36
+ expect(result).toHaveProperty('s');
37
+ expect(result).toHaveProperty('l');
38
+ });
39
+ it('uses rgb method by default', () => {
40
+ const c1 = { r: 0, g: 0, b: 0 };
41
+ const c2 = { r: 255, g: 255, b: 255 };
42
+ const result1 = lerp(c1, c2, 0.5);
43
+ const result2 = lerp(c1, c2, 0.5, 'rgb');
44
+ expect(toRgb(result1)).toEqual(toRgb(result2));
45
+ });
46
+ it('interpolates using lab method', () => {
47
+ const c1 = { r: 255, g: 0, b: 0 };
48
+ const c2 = { r: 0, g: 255, b: 0 };
49
+ const result = lerp(c1, c2, 0.5, 'lab');
50
+ const rgb = toRgb(result);
51
+ expect(rgb).toHaveProperty('r');
52
+ expect(rgb).toHaveProperty('g');
53
+ expect(rgb).toHaveProperty('b');
54
+ });
55
+ });
@@ -1,627 +1,19 @@
1
- // src/agnostic/numbers/absolute-modulo/index.ts
2
- function absoluteModulo(nbr, modulo) {
3
- return (nbr % modulo + modulo) % modulo;
4
- }
5
-
6
- // src/agnostic/objects/is-object/index.ts
7
- function isObject(unk) {
8
- return typeof unk === "object";
9
- }
10
- function isNonNullObject(unk) {
11
- return unk !== null && isObject(unk);
12
- }
13
-
14
- // src/agnostic/colors/cssColorsMap.ts
15
- var cssColors = {
16
- aliceblue: { r: 240, g: 248, b: 255 },
17
- antiquewhite: { r: 250, g: 235, b: 215 },
18
- aqua: { r: 0, g: 255, b: 255 },
19
- aquamarine: { r: 127, g: 255, b: 212 },
20
- azure: { r: 240, g: 255, b: 255 },
21
- beige: { r: 245, g: 245, b: 220 },
22
- bisque: { r: 255, g: 228, b: 196 },
23
- black: { r: 0, g: 0, b: 0 },
24
- blanchedalmond: { r: 255, g: 235, b: 205 },
25
- blue: { r: 0, g: 0, b: 255 },
26
- blueviolet: { r: 138, g: 43, b: 226 },
27
- brown: { r: 165, g: 42, b: 42 },
28
- burlywood: { r: 222, g: 184, b: 135 },
29
- cadetblue: { r: 95, g: 158, b: 160 },
30
- chartreuse: { r: 127, g: 255, b: 0 },
31
- chocolate: { r: 210, g: 105, b: 30 },
32
- coral: { r: 255, g: 127, b: 80 },
33
- cornflowerblue: { r: 100, g: 149, b: 237 },
34
- cornsilk: { r: 255, g: 248, b: 220 },
35
- crimson: { r: 220, g: 20, b: 60 },
36
- cyan: { r: 0, g: 255, b: 255 },
37
- darkblue: { r: 0, g: 0, b: 139 },
38
- darkcyan: { r: 0, g: 139, b: 139 },
39
- darkgoldenrod: { r: 184, g: 134, b: 11 },
40
- darkgray: { r: 169, g: 169, b: 169 },
41
- darkgreen: { r: 0, g: 100, b: 0 },
42
- darkgrey: { r: 169, g: 169, b: 169 },
43
- darkkhaki: { r: 189, g: 183, b: 107 },
44
- darkmagenta: { r: 139, g: 0, b: 139 },
45
- darkolivegreen: { r: 85, g: 107, b: 47 },
46
- darkorange: { r: 255, g: 140, b: 0 },
47
- darkorchid: { r: 153, g: 50, b: 204 },
48
- darkred: { r: 139, g: 0, b: 0 },
49
- darksalmon: { r: 233, g: 150, b: 122 },
50
- darkseagreen: { r: 143, g: 188, b: 143 },
51
- darkslateblue: { r: 72, g: 61, b: 139 },
52
- darkslategray: { r: 47, g: 79, b: 79 },
53
- darkslategrey: { r: 47, g: 79, b: 79 },
54
- darkturquoise: { r: 0, g: 206, b: 209 },
55
- darkviolet: { r: 148, g: 0, b: 211 },
56
- deeppink: { r: 255, g: 20, b: 147 },
57
- deepskyblue: { r: 0, g: 191, b: 255 },
58
- dimgray: { r: 105, g: 105, b: 105 },
59
- dimgrey: { r: 105, g: 105, b: 105 },
60
- dodgerblue: { r: 30, g: 144, b: 255 },
61
- firebrick: { r: 178, g: 34, b: 34 },
62
- floralwhite: { r: 255, g: 250, b: 240 },
63
- forestgreen: { r: 34, g: 139, b: 34 },
64
- fuchsia: { r: 255, g: 0, b: 255 },
65
- gainsboro: { r: 220, g: 220, b: 220 },
66
- ghostwhite: { r: 248, g: 248, b: 255 },
67
- gold: { r: 255, g: 215, b: 0 },
68
- goldenrod: { r: 218, g: 165, b: 32 },
69
- gray: { r: 128, g: 128, b: 128 },
70
- green: { r: 0, g: 128, b: 0 },
71
- greenyellow: { r: 173, g: 255, b: 47 },
72
- grey: { r: 128, g: 128, b: 128 },
73
- honeydew: { r: 240, g: 255, b: 240 },
74
- hotpink: { r: 255, g: 105, b: 180 },
75
- indianred: { r: 205, g: 92, b: 92 },
76
- indigo: { r: 75, g: 0, b: 130 },
77
- ivory: { r: 255, g: 255, b: 240 },
78
- khaki: { r: 240, g: 230, b: 140 },
79
- lavender: { r: 230, g: 230, b: 250 },
80
- lavenderblush: { r: 255, g: 240, b: 245 },
81
- lawngreen: { r: 124, g: 252, b: 0 },
82
- lemonchiffon: { r: 255, g: 250, b: 205 },
83
- lightblue: { r: 173, g: 216, b: 230 },
84
- lightcoral: { r: 240, g: 128, b: 128 },
85
- lightcyan: { r: 224, g: 255, b: 255 },
86
- lightgoldenrodyellow: { r: 250, g: 250, b: 210 },
87
- lightgray: { r: 211, g: 211, b: 211 },
88
- lightgreen: { r: 144, g: 238, b: 144 },
89
- lightgrey: { r: 211, g: 211, b: 211 },
90
- lightpink: { r: 255, g: 182, b: 193 },
91
- lightsalmon: { r: 255, g: 160, b: 122 },
92
- lightseagreen: { r: 32, g: 178, b: 170 },
93
- lightskyblue: { r: 135, g: 206, b: 250 },
94
- lightslategray: { r: 119, g: 136, b: 153 },
95
- lightslategrey: { r: 119, g: 136, b: 153 },
96
- lightsteelblue: { r: 176, g: 196, b: 222 },
97
- lightyellow: { r: 255, g: 255, b: 224 },
98
- lime: { r: 0, g: 255, b: 0 },
99
- limegreen: { r: 50, g: 205, b: 50 },
100
- linen: { r: 250, g: 240, b: 230 },
101
- magenta: { r: 255, g: 0, b: 255 },
102
- maroon: { r: 128, g: 0, b: 0 },
103
- mediumaquamarine: { r: 102, g: 205, b: 170 },
104
- mediumblue: { r: 0, g: 0, b: 205 },
105
- mediumorchid: { r: 186, g: 85, b: 211 },
106
- mediumpurple: { r: 147, g: 112, b: 219 },
107
- mediumseagreen: { r: 60, g: 179, b: 113 },
108
- mediumslateblue: { r: 123, g: 104, b: 238 },
109
- mediumspringgreen: { r: 0, g: 250, b: 154 },
110
- mediumturquoise: { r: 72, g: 209, b: 204 },
111
- mediumvioletred: { r: 199, g: 21, b: 133 },
112
- midnightblue: { r: 25, g: 25, b: 112 },
113
- mintcream: { r: 245, g: 255, b: 250 },
114
- mistyrose: { r: 255, g: 228, b: 225 },
115
- moccasin: { r: 255, g: 228, b: 181 },
116
- navajowhite: { r: 255, g: 222, b: 173 },
117
- navy: { r: 0, g: 0, b: 128 },
118
- oldlace: { r: 253, g: 245, b: 230 },
119
- olive: { r: 128, g: 128, b: 0 },
120
- olivedrab: { r: 107, g: 142, b: 35 },
121
- orange: { r: 255, g: 165, b: 0 },
122
- orangered: { r: 255, g: 69, b: 0 },
123
- orchid: { r: 218, g: 112, b: 214 },
124
- palegoldenrod: { r: 238, g: 232, b: 170 },
125
- palegreen: { r: 152, g: 251, b: 152 },
126
- paleturquoise: { r: 175, g: 238, b: 238 },
127
- palevioletred: { r: 219, g: 112, b: 147 },
128
- papayawhip: { r: 255, g: 239, b: 213 },
129
- peachpuff: { r: 255, g: 218, b: 185 },
130
- peru: { r: 205, g: 133, b: 63 },
131
- pink: { r: 255, g: 192, b: 203 },
132
- plum: { r: 221, g: 160, b: 221 },
133
- powderblue: { r: 176, g: 224, b: 230 },
134
- purple: { r: 128, g: 0, b: 128 },
135
- rebeccapurple: { r: 102, g: 51, b: 153 },
136
- red: { r: 255, g: 0, b: 0 },
137
- rosybrown: { r: 188, g: 143, b: 143 },
138
- royalblue: { r: 65, g: 105, b: 225 },
139
- saddlebrown: { r: 139, g: 69, b: 19 },
140
- salmon: { r: 250, g: 128, b: 114 },
141
- sandybrown: { r: 244, g: 164, b: 96 },
142
- seagreen: { r: 46, g: 139, b: 87 },
143
- seashell: { r: 255, g: 245, b: 238 },
144
- sienna: { r: 160, g: 82, b: 45 },
145
- silver: { r: 192, g: 192, b: 192 },
146
- skyblue: { r: 135, g: 206, b: 235 },
147
- slateblue: { r: 106, g: 90, b: 205 },
148
- slategray: { r: 112, g: 128, b: 144 },
149
- slategrey: { r: 112, g: 128, b: 144 },
150
- snow: { r: 255, g: 250, b: 250 },
151
- springgreen: { r: 0, g: 255, b: 127 },
152
- steelblue: { r: 70, g: 130, b: 180 },
153
- tan: { r: 210, g: 180, b: 140 },
154
- teal: { r: 0, g: 128, b: 128 },
155
- thistle: { r: 216, g: 191, b: 216 },
156
- tomato: { r: 255, g: 99, b: 71 },
157
- turquoise: { r: 64, g: 224, b: 208 },
158
- violet: { r: 238, g: 130, b: 238 },
159
- wheat: { r: 245, g: 222, b: 179 },
160
- white: { r: 255, g: 255, b: 255 },
161
- whitesmoke: { r: 245, g: 245, b: 245 },
162
- yellow: { r: 255, g: 255, b: 0 },
163
- yellowgreen: { r: 154, g: 205, b: 50 }
164
- };
165
-
166
- // src/agnostic/colors/typechecks/index.ts
167
- var isHex = (color) => {
168
- if (typeof color !== "string") return false;
169
- if (!color.startsWith("#")) return false;
170
- const withoutHash = color.slice(1);
171
- const withoutHashLength = withoutHash.length;
172
- const allowedLengths = [3, 4, 6, 8];
173
- if (!allowedLengths.includes(withoutHashLength)) return false;
174
- return /^[0-9a-f]+$/igm.test(withoutHash);
175
- };
176
- var isRgb = (color) => {
177
- if (!isNonNullObject(color)) return false;
178
- const { r, g, b, a } = color;
179
- if (typeof r !== "number") return false;
180
- if (typeof g !== "number") return false;
181
- if (typeof b !== "number") return false;
182
- if (a !== void 0 && typeof a !== "number") return false;
183
- return true;
184
- };
185
- var isHsl = (color) => {
186
- if (!isNonNullObject(color)) return false;
187
- const { h, s, l, a } = color;
188
- if (typeof h !== "number") return false;
189
- if (typeof s !== "number") return false;
190
- if (typeof l !== "number") return false;
191
- if (a !== void 0 && typeof a !== "number") return false;
192
- return true;
193
- };
194
- var isHsb = (color) => {
195
- if (!isNonNullObject(color)) return false;
196
- const { h, s, b, a } = color;
197
- if (typeof h !== "number") return false;
198
- if (typeof s !== "number") return false;
199
- if (typeof b !== "number") return false;
200
- if (a !== void 0 && typeof a !== "number") return false;
201
- return true;
202
- };
203
- var isLab = (color) => {
204
- if (!isNonNullObject(color)) return false;
205
- const { l, a, b, al } = color;
206
- if (typeof l !== "number") return false;
207
- if (typeof a !== "number") return false;
208
- if (typeof b !== "number") return false;
209
- if (al !== void 0 && typeof al !== "number") return false;
210
- return true;
211
- };
212
- var isLch = (color) => {
213
- if (!isNonNullObject(color)) return false;
214
- const { l, c, h, a } = color;
215
- if (typeof l !== "number") return false;
216
- if (typeof c !== "number") return false;
217
- if (typeof h !== "number") return false;
218
- if (a !== void 0 && typeof a !== "number") return false;
219
- return true;
220
- };
221
- var isCmyk = (color) => {
222
- if (!isNonNullObject(color)) return false;
223
- const { c, m, y, k, a } = color;
224
- if (typeof c !== "number") return false;
225
- if (typeof m !== "number") return false;
226
- if (typeof y !== "number") return false;
227
- if (typeof k !== "number") return false;
228
- if (a !== void 0 && typeof a !== "number") return false;
229
- return true;
230
- };
231
- var isXyz = (color) => {
232
- if (!isNonNullObject(color)) return false;
233
- const { x, y, z, a } = color;
234
- if (typeof x !== "number") return false;
235
- if (typeof y !== "number") return false;
236
- if (typeof z !== "number") return false;
237
- if (a !== void 0 && typeof a !== "number") return false;
238
- return true;
239
- };
240
- var isCssColor = (color) => typeof color === "string" && cssColors[color] !== void 0;
241
-
242
- // src/agnostic/numbers/clamp/index.ts
243
- function clamp(num, bound1, bound2) {
244
- const min = Math.min(bound1, bound2);
245
- const max = Math.max(bound1, bound2);
246
- return Math.min(Math.max(num, min), max);
247
- }
248
-
249
- // src/agnostic/errors/unknown-to-string/index.ts
250
- function unknownToString(unk, encoding) {
251
- if (unk instanceof Error) return unk.message;
252
- if (unk instanceof Buffer) return unk.toString(encoding ?? "utf-8");
253
- if (typeof unk === "string") return unk;
254
- if (typeof unk === "object" && unk !== null) return JSON.stringify(unk);
255
- return `${unk}`;
256
- }
257
-
258
- // src/agnostic/colors/tidy/index.ts
259
- function tidy(color) {
260
- const _color = color;
261
- if (isRgb(_color)) return {
262
- r: clamp(_color.r, 0, 255),
263
- g: clamp(_color.g, 0, 255),
264
- b: clamp(_color.b, 0, 255),
265
- a: clamp(_color.a ?? 1, 0, 1)
266
- };
267
- if (isHsl(_color)) return {
268
- h: absoluteModulo(_color.h, 360),
269
- s: clamp(_color.s, 0, 100),
270
- l: clamp(_color.l, 0, 100),
271
- a: clamp(_color.a ?? 1, 0, 1)
272
- };
273
- if (isHsb(_color)) return {
274
- h: absoluteModulo(_color.h, 360),
275
- s: clamp(_color.s, 0, 100),
276
- b: clamp(_color.b, 0, 100),
277
- a: clamp(_color.a ?? 1, 0, 1)
278
- };
279
- if (isCmyk(_color)) return {
280
- c: clamp(_color.c, 0, 100),
281
- m: clamp(_color.m, 0, 100),
282
- y: clamp(_color.y, 0, 100),
283
- k: clamp(_color.k, 0, 100),
284
- a: clamp(_color.a ?? 1, 0, 1)
285
- };
286
- if (isXyz(_color)) return {
287
- x: _color.x,
288
- y: _color.y,
289
- z: _color.z,
290
- a: clamp(_color.a ?? 1, 0, 1)
291
- };
292
- if (isLab(_color)) return {
293
- l: clamp(_color.l, 0, 100),
294
- a: _color.a,
295
- b: _color.b,
296
- al: clamp(_color.al ?? 1, 0, 1)
297
- };
298
- if (isLch(_color)) return {
299
- l: clamp(_color.l, 0, 100),
300
- c: Math.max(0, _color.c),
301
- h: clamp(_color.h, 0, 360),
302
- a: clamp(_color.a ?? 1, 0, 1)
303
- };
304
- if (isCssColor(_color)) return tidy(toRgb(_color));
305
- if (isHex(_color)) return toHex(tidy(toRgb(_color)));
306
- const _typecheck = true;
307
- throw new Error(`Invalid color input: ${unknownToString(_color)}`);
308
- }
309
-
310
- // src/agnostic/colors/convert/index.ts
311
- function _hex2rgb(hex) {
312
- if (!isHex(hex)) throw new Error(`invalid hex color ${unknownToString(hex)}`);
313
- let hexString = hex;
314
- const inputHex = hexString;
315
- const startsWithHash = hexString.startsWith("#");
316
- if (!startsWithHash) throw new Error(`invalid hex color ${inputHex}`);
317
- hexString = hexString.slice(1);
318
- if (hexString.length === 3) {
319
- hexString = hexString.split("").map((c) => c + c).join("") + "ff";
320
- } else if (hexString.length === 4) {
321
- hexString = hexString.split("").map((c) => c + c).join("");
322
- } else if (hexString.length === 6) {
323
- hexString = hexString + "ff";
324
- } else if (hexString.length !== 8) throw new Error(`invalid hex color ${inputHex}`);
325
- const r = parseInt(hexString.slice(0, 2), 16);
326
- const g = parseInt(hexString.slice(2, 4), 16);
327
- const b = parseInt(hexString.slice(4, 6), 16);
328
- const a = parseInt(hexString.slice(6, 8), 16) / 255;
329
- return { r, g, b, a };
330
- }
331
- function _rgb2hex(rgb) {
332
- const { r, g, b, a = 1 } = rgb;
333
- const rHex = Math.round(r).toString(16).padStart(2, "0");
334
- const gHex = Math.round(g).toString(16).padStart(2, "0");
335
- const bHex = Math.round(b).toString(16).padStart(2, "0");
336
- const aHex = Math.round(a * 255).toString(16).padStart(2, "0");
337
- const returned = `#${rHex}${gHex}${bHex}${aHex}`;
338
- if (!isHex(returned)) {
339
- throw new Error(`invalid hex color output ${unknownToString(returned)}`);
340
- }
341
- return returned;
342
- }
343
- function _css2rgb(color) {
344
- if (color in cssColors) return cssColors[color];
345
- return void 0;
346
- }
347
- var cssColorsWithHex = Object.entries(cssColors).map(([cssColor, rgba]) => ({
348
- name: cssColor,
349
- hex: _rgb2hex(rgba),
350
- rgba
351
- }));
352
- function _hsl2rgb(hsl) {
353
- const { h, s, l, a = 1 } = hsl;
354
- const H = absoluteModulo(h, 360) / 360;
355
- const S = Math.max(0, Math.min(1, s / 100));
356
- const L = Math.max(0, Math.min(1, l / 100));
357
- const A = Math.max(0, Math.min(1, a));
358
- const hue2rgb = (p, q, t) => {
359
- if (t < 0) t += 1;
360
- if (t > 1) t -= 1;
361
- if (t < 1 / 6) return p + (q - p) * 6 * t;
362
- if (t < 1 / 2) return q;
363
- if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;
364
- return p;
365
- };
366
- let r;
367
- let g;
368
- let b;
369
- if (S === 0) {
370
- r = g = b = L;
371
- } else {
372
- const q = L < 0.5 ? L * (1 + S) : L + S - L * S;
373
- const p = 2 * L - q;
374
- r = hue2rgb(p, q, H + 1 / 3);
375
- g = hue2rgb(p, q, H);
376
- b = hue2rgb(p, q, H - 1 / 3);
377
- }
378
- return {
379
- r: Math.round(r * 255),
380
- g: Math.round(g * 255),
381
- b: Math.round(b * 255),
382
- a: A
383
- };
384
- }
385
- function _hsb2rgb(hsb) {
386
- const { h, s, b, a = 1 } = hsb;
387
- const H = absoluteModulo(h, 360) / 360;
388
- const S = Math.max(0, Math.min(1, s / 100));
389
- const B = Math.max(0, Math.min(1, b / 100));
390
- const A = Math.max(0, Math.min(1, a));
391
- const i = Math.floor(H * 6);
392
- const f = H * 6 - i;
393
- const p = B * (1 - S);
394
- const q = B * (1 - f * S);
395
- const t = B * (1 - (1 - f) * S);
396
- let r;
397
- let g;
398
- let blue;
399
- switch (absoluteModulo(i, 6)) {
400
- case 0:
401
- r = B;
402
- g = t;
403
- blue = p;
404
- break;
405
- case 1:
406
- r = q;
407
- g = B;
408
- blue = p;
409
- break;
410
- case 2:
411
- r = p;
412
- g = B;
413
- blue = t;
414
- break;
415
- case 3:
416
- r = p;
417
- g = q;
418
- blue = B;
419
- break;
420
- case 4:
421
- r = t;
422
- g = p;
423
- blue = B;
424
- break;
425
- case 5:
426
- r = B;
427
- g = p;
428
- blue = q;
429
- break;
430
- default:
431
- r = g = blue = 0;
432
- }
433
- return {
434
- r: Math.round(r * 255),
435
- g: Math.round(g * 255),
436
- b: Math.round(blue * 255),
437
- a: A
438
- };
439
- }
440
- function _cmyk2rgb(cmyka) {
441
- const { c, m, y, k, a = 1 } = cmyka;
442
- const C = Math.max(0, Math.min(100, c)) / 100;
443
- const M = Math.max(0, Math.min(100, m)) / 100;
444
- const Y = Math.max(0, Math.min(100, y)) / 100;
445
- const K = Math.max(0, Math.min(100, k)) / 100;
446
- const A = Math.max(0, Math.min(1, a));
447
- const R = 1 - Math.min(1, C * (1 - K) + K);
448
- const G = 1 - Math.min(1, M * (1 - K) + K);
449
- const B = 1 - Math.min(1, Y * (1 - K) + K);
450
- return {
451
- r: Math.round(R * 255),
452
- g: Math.round(G * 255),
453
- b: Math.round(B * 255),
454
- a: A
455
- };
456
- }
457
- function _xyz2rgb(xyza) {
458
- const { x, y, z, a = 1 } = xyza;
459
- const X = x / 100;
460
- const Y = y / 100;
461
- const Z = z / 100;
462
- const A = Math.max(0, Math.min(1, a));
463
- let R = X * 3.2404542 + Y * -1.5371385 + Z * -0.4985314;
464
- let G = X * -0.969266 + Y * 1.8760108 + Z * 0.041556;
465
- let B = X * 0.0556434 + Y * -0.2040259 + Z * 1.0572252;
466
- const GAMMA_THRESHOLD = 31308e-7;
467
- const GAMMA_EXPONENT = 1 / 2.4;
468
- const GAMMA_MULT = 1.055;
469
- const GAMMA_OFFSET = 0.055;
470
- const LINEAR_DIVISOR = 12.92;
471
- const gammaCorrect = (c) => c <= GAMMA_THRESHOLD ? c * LINEAR_DIVISOR : GAMMA_MULT * Math.pow(c, GAMMA_EXPONENT) - GAMMA_OFFSET;
472
- R = gammaCorrect(R);
473
- G = gammaCorrect(G);
474
- B = gammaCorrect(B);
475
- return {
476
- r: Math.round(Math.max(0, Math.min(1, R)) * 255),
477
- g: Math.round(Math.max(0, Math.min(1, G)) * 255),
478
- b: Math.round(Math.max(0, Math.min(1, B)) * 255),
479
- a: A
480
- };
481
- }
482
- function _rgb2xyz(rgb) {
483
- const { r, g, b, a = 1 } = rgb;
484
- let R = Math.max(0, Math.min(1, r / 255));
485
- let G = Math.max(0, Math.min(1, g / 255));
486
- let B = Math.max(0, Math.min(1, b / 255));
487
- const A = Math.max(0, Math.min(1, a));
488
- const SRGB_THRESHOLD = 0.04045;
489
- const SRGB_OFFSET = 0.055;
490
- const SRGB_DIVISOR = 1.055;
491
- const SRGB_EXPONENT = 2.4;
492
- const SRGB_LINEAR_DIVISOR = 12.92;
493
- const linearize = (c) => c > SRGB_THRESHOLD ? Math.pow((c + SRGB_OFFSET) / SRGB_DIVISOR, SRGB_EXPONENT) : c / SRGB_LINEAR_DIVISOR;
494
- R = linearize(R);
495
- G = linearize(G);
496
- B = linearize(B);
497
- const X = R * 0.4124564 + G * 0.3575761 + B * 0.1804375;
498
- const Y = R * 0.2126729 + G * 0.7151522 + B * 0.072175;
499
- const Z = R * 0.0193339 + G * 0.119192 + B * 0.9503041;
500
- return {
501
- x: X * 100,
502
- y: Y * 100,
503
- z: Z * 100,
504
- a: A
505
- };
506
- }
507
- function _lab2xyz(lab) {
508
- const { l, a: A = 0, b: B = 0, al: alpha = 1 } = lab;
509
- const REF_X = 95.047;
510
- const REF_Y = 100;
511
- const REF_Z = 108.883;
512
- const fy = (l + 16) / 116;
513
- const fx = fy + A / 500;
514
- const fz = fy - B / 200;
515
- const fx3 = Math.pow(fx, 3);
516
- const fz3 = Math.pow(fz, 3);
517
- const fy3 = Math.pow(fy, 3);
518
- const epsilon = 8856e-6;
519
- const kappa = 903.3;
520
- const X = fx3 > epsilon ? fx3 : (116 * fx - 16) / kappa;
521
- const Y = l > kappa * epsilon ? fy3 : l / kappa;
522
- const Z = fz3 > epsilon ? fz3 : (116 * fz - 16) / kappa;
523
- return {
524
- x: X * REF_X,
525
- y: Y * REF_Y,
526
- z: Z * REF_Z,
527
- a: Math.max(0, Math.min(1, alpha))
528
- };
529
- }
530
- function _xyz2lab(xyza) {
531
- const { x, y, z, a: alpha = 1 } = xyza;
532
- const REF_X = 95.047;
533
- const REF_Y = 100;
534
- const REF_Z = 108.883;
535
- const X = x / REF_X;
536
- const Y = y / REF_Y;
537
- const Z = z / REF_Z;
538
- const epsilon = 8856e-6;
539
- const kappa = 903.3;
540
- const fx = X > epsilon ? Math.cbrt(X) : (kappa * X + 16) / 116;
541
- const fy = Y > epsilon ? Math.cbrt(Y) : (kappa * Y + 16) / 116;
542
- const fz = Z > epsilon ? Math.cbrt(Z) : (kappa * Z + 16) / 116;
543
- const L = 116 * fy - 16;
544
- const A = 500 * (fx - fy);
545
- const B = 200 * (fy - fz);
546
- return {
547
- l: L,
548
- a: A,
549
- b: B,
550
- al: Math.max(0, Math.min(1, alpha))
551
- };
552
- }
553
- function _lch2lab(lch) {
554
- const { l, c, h, a = 1 } = lch;
555
- const hRad = h * Math.PI / 180;
556
- const A = c * Math.cos(hRad);
557
- const B = c * Math.sin(hRad);
558
- return { l, a: A, b: B, al: a };
559
- }
560
- function toRgb(color) {
561
- if (isRgb(color)) return color;
562
- if (isHsl(color)) return _hsl2rgb(color);
563
- if (isHsb(color)) return _hsb2rgb(color);
564
- if (isCmyk(color)) return _cmyk2rgb(color);
565
- if (isCssColor(color)) return _css2rgb(color);
566
- if (isHex(color)) return _hex2rgb(color);
567
- if (isXyz(color)) return _xyz2rgb(color);
568
- if (isLab(color)) return _xyz2rgb(_lab2xyz(color));
569
- if (isLch(color)) return _xyz2rgb(_lab2xyz(_lch2lab(color)));
570
- throw new Error(`Invalid color input: ${unknownToString(color)}`);
571
- }
572
- function toXyz(color) {
573
- if (isXyz(color)) return color;
574
- if (isLab(color)) return _lab2xyz(color);
575
- if (isLch(color)) return _lab2xyz(_lch2lab(color));
576
- if (isRgb(color)) return _rgb2xyz(color);
577
- if (isHsl(color)) return _rgb2xyz(_hsl2rgb(color));
578
- if (isHsb(color)) return _rgb2xyz(_hsb2rgb(color));
579
- if (isCmyk(color)) return _rgb2xyz(_cmyk2rgb(color));
580
- if (isCssColor(color)) return _rgb2xyz(_css2rgb(color));
581
- if (isHex(color)) return _rgb2xyz(_hex2rgb(color));
582
- throw new Error(`Invalid color input: ${unknownToString(color)}`);
583
- }
584
- function toLab(color) {
585
- if (isLab(color)) return color;
586
- if (isLch(color)) return _lch2lab(color);
587
- const xyzColor = toXyz(color);
588
- return _xyz2lab(xyzColor);
589
- }
590
- function toHex(color) {
591
- if (isHex(color)) return color;
592
- const rgbColor = toRgb(color);
593
- return _rgb2hex(rgbColor);
594
- }
595
- function linearizeToSRgb(rgb) {
596
- const cleanRgb = tidy(rgb);
597
- const linearChannel = (v) => {
598
- const n = v / 255;
599
- if (n <= 0.04045) return n / 12.92;
600
- else return Math.pow((n + 0.055) / 1.055, 2.4);
601
- };
602
- return {
603
- linearR: linearChannel(cleanRgb.r),
604
- linearG: linearChannel(cleanRgb.g),
605
- linearB: linearChannel(cleanRgb.b),
606
- a: cleanRgb.a
607
- };
608
- }
609
-
610
- // src/agnostic/colors/luminance/index.ts
1
+ import { linearizeToSRgb, toLab, toRgb, toXyz } from '../convert/index.js';
611
2
  function luminanceRgb(rgb) {
612
- const { linearR, linearG, linearB } = linearizeToSRgb(rgb);
613
- return 0.2126 * linearR + 0.7152 * linearG + 0.0722 * linearB;
614
- }
615
- function luminance(color, method = "lab") {
616
- switch (method) {
617
- case "rgb":
618
- return luminanceRgb(toRgb(color));
619
- case "xyz":
620
- return toXyz(color).y / 100;
621
- case "lab":
622
- return toLab(color).l / 100;
623
- }
3
+ const { linearR, linearG, linearB } = linearizeToSRgb(rgb);
4
+ return (0.2126 * linearR + 0.7152 * linearG + 0.0722 * linearB);
5
+ }
6
+ /**
7
+ * Calculates the relative luminance of a color using the specified method.
8
+ *
9
+ * @param {Color} color - The color to analyze.
10
+ * @param {LuminanceMethod} [method='lab'] - The calculation method to use.
11
+ * @returns {number} The relative luminance value (0-1).
12
+ */
13
+ export function luminance(color, method = 'lab') {
14
+ switch (method) {
15
+ case 'rgb': return luminanceRgb(toRgb(color));
16
+ case 'xyz': return toXyz(color).y / 100;
17
+ case 'lab': return toLab(color).l / 100;
18
+ }
624
19
  }
625
- export {
626
- luminance
627
- };