@design-edito/tools 0.4.22 → 0.5.0

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 (505) hide show
  1. package/agnostic/arrays/find-duplicates/index.d.ts +1 -1
  2. package/agnostic/arrays/find-duplicates/index.js +3 -2
  3. package/agnostic/arrays/is-array-of/index.d.ts +1 -1
  4. package/agnostic/arrays/is-array-of/index.js +3 -1
  5. package/agnostic/arrays/make/index.d.ts +1 -1
  6. package/agnostic/arrays/random-pick/index.js +2 -1
  7. package/agnostic/arrays/shuffle/index.js +1 -1
  8. package/agnostic/booleans/is-falsy/index.d.ts +3 -3
  9. package/agnostic/booleans/is-falsy/index.js +2 -3
  10. package/agnostic/colors/channels/index.d.ts +16 -16
  11. package/agnostic/colors/channels/index.js +15 -15
  12. package/agnostic/colors/contrast/index.d.ts +6 -6
  13. package/agnostic/colors/contrast/index.js +6 -8
  14. package/agnostic/colors/contrast/index.test.js +1 -1
  15. package/agnostic/colors/convert/index.d.ts +43 -43
  16. package/agnostic/colors/convert/index.js +60 -55
  17. package/agnostic/colors/distance/index.d.ts +5 -5
  18. package/agnostic/colors/distance/index.js +5 -4
  19. package/agnostic/colors/grayscale/index.d.ts +3 -3
  20. package/agnostic/colors/grayscale/index.js +3 -3
  21. package/agnostic/colors/index.d.ts +1 -1
  22. package/agnostic/colors/index.js +1 -1
  23. package/agnostic/colors/invert/index.d.ts +4 -4
  24. package/agnostic/colors/invert/index.js +3 -3
  25. package/agnostic/colors/lerp/index.d.ts +6 -7
  26. package/agnostic/colors/lerp/index.js +5 -6
  27. package/agnostic/colors/luminance/index.d.ts +4 -4
  28. package/agnostic/colors/luminance/index.js +3 -3
  29. package/agnostic/colors/palette/index.d.ts +3 -3
  30. package/agnostic/colors/palette/index.js +4 -3
  31. package/agnostic/colors/rotate/index.d.ts +4 -4
  32. package/agnostic/colors/rotate/index.js +4 -4
  33. package/agnostic/colors/tidy/index.d.ts +2 -2
  34. package/agnostic/colors/tidy/index.js +2 -2
  35. package/agnostic/colors/typechecks/index.d.ts +21 -21
  36. package/agnostic/colors/typechecks/index.js +22 -21
  37. package/agnostic/colors/types.d.ts +33 -33
  38. package/agnostic/css/bem/index.d.ts +11 -11
  39. package/agnostic/css/bem/index.js +9 -8
  40. package/agnostic/css/clss/index.d.ts +1 -1
  41. package/agnostic/css/clss/index.js +1 -1
  42. package/agnostic/css/index.d.ts +1 -1
  43. package/agnostic/css/index.js +1 -1
  44. package/agnostic/css/is-valid-css-class-name/index.d.ts +2 -2
  45. package/agnostic/css/is-valid-css-class-name/index.js +3 -3
  46. package/agnostic/css/scale/index.d.ts +18 -18
  47. package/agnostic/css/scale/index.js +18 -18
  48. package/agnostic/css/styles-set/index.d.ts +1 -1
  49. package/agnostic/css/styles-set/index.js +0 -2
  50. package/agnostic/errors/register/index.d.ts +1 -1
  51. package/agnostic/errors/register/index.js +3 -0
  52. package/agnostic/errors/unknown-to-string/index.d.ts +2 -2
  53. package/agnostic/errors/unknown-to-string/index.js +2 -3
  54. package/agnostic/html/deep-select/index.d.ts +3 -3
  55. package/agnostic/html/deep-select/index.js +11 -7
  56. package/agnostic/html/get-node-ancestors/index.d.ts +3 -3
  57. package/agnostic/html/get-node-ancestors/index.js +3 -3
  58. package/agnostic/html/get-position-inside-parent/index.d.ts +2 -2
  59. package/agnostic/html/get-position-inside-parent/index.js +2 -2
  60. package/agnostic/html/hyper-json/cast/index.d.ts +1 -1
  61. package/agnostic/html/hyper-json/cast/index.js +6 -5
  62. package/agnostic/html/hyper-json/method/index.d.ts +2 -2
  63. package/agnostic/html/hyper-json/serialize/index.d.ts +1 -1
  64. package/agnostic/html/hyper-json/serialize/index.js +9 -5
  65. package/agnostic/html/hyper-json/smart-tags/coalesced/addclass/index.js +1 -0
  66. package/agnostic/html/hyper-json/smart-tags/coalesced/and/index.d.ts +1 -1
  67. package/agnostic/html/hyper-json/smart-tags/coalesced/append/index.d.ts +1 -1
  68. package/agnostic/html/hyper-json/smart-tags/coalesced/append/index.js +1 -0
  69. package/agnostic/html/hyper-json/smart-tags/coalesced/at/index.d.ts +1 -1
  70. package/agnostic/html/hyper-json/smart-tags/coalesced/at/index.js +1 -0
  71. package/agnostic/html/hyper-json/smart-tags/coalesced/call/index.d.ts +1 -1
  72. package/agnostic/html/hyper-json/smart-tags/coalesced/call/index.js +1 -1
  73. package/agnostic/html/hyper-json/smart-tags/coalesced/clone/index.d.ts +1 -1
  74. package/agnostic/html/hyper-json/smart-tags/coalesced/deleteproperties/index.d.ts +1 -1
  75. package/agnostic/html/hyper-json/smart-tags/coalesced/deleteproperties/index.js +0 -1
  76. package/agnostic/html/hyper-json/smart-tags/coalesced/equals/index.d.ts +1 -1
  77. package/agnostic/html/hyper-json/smart-tags/coalesced/getattribute/index.js +1 -0
  78. package/agnostic/html/hyper-json/smart-tags/coalesced/getproperties/index.d.ts +1 -1
  79. package/agnostic/html/hyper-json/smart-tags/coalesced/getproperty/index.d.ts +1 -1
  80. package/agnostic/html/hyper-json/smart-tags/coalesced/getproperty/index.js +1 -2
  81. package/agnostic/html/hyper-json/smart-tags/coalesced/hjparse/index.d.ts +1 -1
  82. package/agnostic/html/hyper-json/smart-tags/coalesced/hjstringify/index.d.ts +1 -1
  83. package/agnostic/html/hyper-json/smart-tags/coalesced/hjstringify/index.js +4 -0
  84. package/agnostic/html/hyper-json/smart-tags/coalesced/if/index.d.ts +1 -1
  85. package/agnostic/html/hyper-json/smart-tags/coalesced/if/index.js +1 -0
  86. package/agnostic/html/hyper-json/smart-tags/coalesced/index.d.ts +11 -11
  87. package/agnostic/html/hyper-json/smart-tags/coalesced/index.js +11 -11
  88. package/agnostic/html/hyper-json/smart-tags/coalesced/initialize/index.d.ts +1 -1
  89. package/agnostic/html/hyper-json/smart-tags/coalesced/initialize/index.js +1 -0
  90. package/agnostic/html/hyper-json/smart-tags/coalesced/join/index.d.ts +1 -1
  91. package/agnostic/html/hyper-json/smart-tags/coalesced/length/index.d.ts +1 -1
  92. package/agnostic/html/hyper-json/smart-tags/coalesced/map/index.d.ts +1 -1
  93. package/agnostic/html/hyper-json/smart-tags/coalesced/or/index.d.ts +1 -1
  94. package/agnostic/html/hyper-json/smart-tags/coalesced/pickrandom/index.d.ts +1 -1
  95. package/agnostic/html/hyper-json/smart-tags/coalesced/populate/index.d.ts +1 -1
  96. package/agnostic/html/hyper-json/smart-tags/coalesced/populate/index.js +1 -0
  97. package/agnostic/html/hyper-json/smart-tags/coalesced/print/index.d.ts +1 -1
  98. package/agnostic/html/hyper-json/smart-tags/coalesced/print/index.js +2 -0
  99. package/agnostic/html/hyper-json/smart-tags/coalesced/push/index.d.ts +1 -1
  100. package/agnostic/html/hyper-json/smart-tags/coalesced/pusheach/index.d.ts +1 -1
  101. package/agnostic/html/hyper-json/smart-tags/coalesced/pusheach/index.js +1 -0
  102. package/agnostic/html/hyper-json/smart-tags/coalesced/recordtoarray/index.d.ts +1 -1
  103. package/agnostic/html/hyper-json/smart-tags/coalesced/removeattribute/index.js +3 -0
  104. package/agnostic/html/hyper-json/smart-tags/coalesced/removeclass/index.js +1 -0
  105. package/agnostic/html/hyper-json/smart-tags/coalesced/renameproperty/index.d.ts +1 -1
  106. package/agnostic/html/hyper-json/smart-tags/coalesced/renameproperty/index.js +1 -0
  107. package/agnostic/html/hyper-json/smart-tags/coalesced/replace/index.d.ts +1 -1
  108. package/agnostic/html/hyper-json/smart-tags/coalesced/replace/index.js +1 -0
  109. package/agnostic/html/hyper-json/smart-tags/coalesced/select/index.js +1 -0
  110. package/agnostic/html/hyper-json/smart-tags/coalesced/set/index.d.ts +1 -1
  111. package/agnostic/html/hyper-json/smart-tags/coalesced/set/index.js +1 -0
  112. package/agnostic/html/hyper-json/smart-tags/coalesced/setattribute/index.js +3 -0
  113. package/agnostic/html/hyper-json/smart-tags/coalesced/setproperty/index.d.ts +1 -1
  114. package/agnostic/html/hyper-json/smart-tags/coalesced/setproperty/index.js +4 -2
  115. package/agnostic/html/hyper-json/smart-tags/coalesced/sorton/index.d.ts +1 -1
  116. package/agnostic/html/hyper-json/smart-tags/coalesced/sorton/index.js +5 -0
  117. package/agnostic/html/hyper-json/smart-tags/coalesced/spread/index.d.ts +1 -1
  118. package/agnostic/html/hyper-json/smart-tags/coalesced/spread/index.js +1 -0
  119. package/agnostic/html/hyper-json/smart-tags/coalesced/toarray/index.d.ts +1 -1
  120. package/agnostic/html/hyper-json/smart-tags/coalesced/toboolean/index.d.ts +1 -1
  121. package/agnostic/html/hyper-json/smart-tags/coalesced/toelement/index.d.ts +1 -1
  122. package/agnostic/html/hyper-json/smart-tags/coalesced/toggleclass/index.js +3 -2
  123. package/agnostic/html/hyper-json/smart-tags/coalesced/tonodelist/index.d.ts +1 -1
  124. package/agnostic/html/hyper-json/smart-tags/coalesced/tonull/index.d.ts +1 -1
  125. package/agnostic/html/hyper-json/smart-tags/coalesced/tonumber/index.d.ts +1 -1
  126. package/agnostic/html/hyper-json/smart-tags/coalesced/torecord/index.d.ts +1 -1
  127. package/agnostic/html/hyper-json/smart-tags/coalesced/toref/index.d.ts +1 -1
  128. package/agnostic/html/hyper-json/smart-tags/coalesced/tostring/index.d.ts +1 -1
  129. package/agnostic/html/hyper-json/smart-tags/coalesced/totext/index.d.ts +1 -1
  130. package/agnostic/html/hyper-json/smart-tags/coalesced/transformselected/index.d.ts +1 -1
  131. package/agnostic/html/hyper-json/smart-tags/coalesced/trim/index.js +1 -1
  132. package/agnostic/html/hyper-json/smart-tags/index.d.ts +1 -1
  133. package/agnostic/html/hyper-json/smart-tags/isolated/any/index.d.ts +1 -1
  134. package/agnostic/html/hyper-json/smart-tags/isolated/array/index.d.ts +1 -1
  135. package/agnostic/html/hyper-json/smart-tags/isolated/get/index.d.ts +1 -1
  136. package/agnostic/html/hyper-json/smart-tags/isolated/guess/index.d.ts +1 -1
  137. package/agnostic/html/hyper-json/smart-tags/isolated/guess/index.js +3 -1
  138. package/agnostic/html/hyper-json/smart-tags/isolated/index.d.ts +1 -1
  139. package/agnostic/html/hyper-json/smart-tags/isolated/index.js +1 -1
  140. package/agnostic/html/hyper-json/smart-tags/isolated/nodelist/index.d.ts +1 -1
  141. package/agnostic/html/hyper-json/smart-tags/isolated/nodelist/index.js +1 -0
  142. package/agnostic/html/hyper-json/smart-tags/isolated/null/index.d.ts +1 -1
  143. package/agnostic/html/hyper-json/smart-tags/isolated/record/index.d.ts +1 -1
  144. package/agnostic/html/hyper-json/smart-tags/isolated/ref/index.d.ts +1 -1
  145. package/agnostic/html/hyper-json/smart-tags/isolated/ref/index.js +3 -1
  146. package/agnostic/html/hyper-json/smart-tags/isolated/text/index.js +2 -2
  147. package/agnostic/html/hyper-json/transformer/index.d.ts +5 -5
  148. package/agnostic/html/hyper-json/tree/index.d.ts +1 -1
  149. package/agnostic/html/hyper-json/tree/index.js +14 -8
  150. package/agnostic/html/hyper-json/types/index.d.ts +11 -11
  151. package/agnostic/html/hyper-json/utils/index.d.ts +3 -3
  152. package/agnostic/html/hyper-json/utils/index.js +8 -3
  153. package/agnostic/html/index.d.ts +1 -1
  154. package/agnostic/html/index.js +1 -1
  155. package/agnostic/html/insert-node/index.d.ts +4 -4
  156. package/agnostic/html/insert-node/index.js +4 -4
  157. package/agnostic/html/replace-in-element/index.d.ts +3 -3
  158. package/agnostic/html/replace-in-element/index.js +4 -4
  159. package/agnostic/html/selector-to-element/index.d.ts +2 -2
  160. package/agnostic/html/selector-to-element/index.js +11 -11
  161. package/agnostic/html/string-to-nodes/index.d.ts +3 -3
  162. package/agnostic/html/string-to-nodes/index.js +3 -3
  163. package/agnostic/html/watch-selection/index.d.ts +4 -5
  164. package/agnostic/html/watch-selection/index.js +5 -6
  165. package/agnostic/misc/assert/index.js +3 -1
  166. package/agnostic/misc/cast/index.d.ts +16 -16
  167. package/agnostic/misc/cast/index.js +18 -18
  168. package/agnostic/misc/connection/index.d.ts +5 -5
  169. package/agnostic/misc/connection/index.js +4 -2
  170. package/agnostic/misc/crawler/index.d.ts +18 -18
  171. package/agnostic/misc/crawler/index.js +10 -9
  172. package/agnostic/misc/crawler/index.test.js +2 -2
  173. package/agnostic/misc/crossenv/detect-runtime/index.d.ts +1 -1
  174. package/agnostic/misc/crossenv/detect-runtime/index.js +10 -11
  175. package/agnostic/misc/crossenv/window/index.d.ts +6 -6
  176. package/agnostic/misc/crossenv/window/index.js +6 -5
  177. package/agnostic/misc/data-size/index.js +2 -0
  178. package/agnostic/misc/index.d.ts +3 -3
  179. package/agnostic/misc/index.js +3 -3
  180. package/agnostic/misc/is-constructor-function/index.d.ts +2 -2
  181. package/agnostic/misc/is-constructor-function/index.js +3 -2
  182. package/agnostic/misc/is-constructor-function/index.test.js +2 -2
  183. package/agnostic/misc/is-nullish/index.d.ts +5 -5
  184. package/agnostic/misc/is-nullish/index.js +5 -4
  185. package/agnostic/misc/logs/index.d.ts +1 -1
  186. package/agnostic/misc/logs/index.js +1 -1
  187. package/agnostic/misc/logs/logger/index.js +2 -2
  188. package/agnostic/misc/lorem-ipsum/index.js +4 -4
  189. package/agnostic/misc/normalize-extension/index.d.ts +3 -3
  190. package/agnostic/misc/normalize-extension/index.js +4 -4
  191. package/agnostic/misc/outcome/index.d.ts +14 -14
  192. package/agnostic/misc/outcome/index.js +6 -4
  193. package/agnostic/numbers/absolute-modulo/index.d.ts +3 -3
  194. package/agnostic/numbers/absolute-modulo/index.js +3 -3
  195. package/agnostic/numbers/approximate-rational/index.d.ts +6 -6
  196. package/agnostic/numbers/approximate-rational/index.js +9 -9
  197. package/agnostic/numbers/clamp/index.d.ts +4 -4
  198. package/agnostic/numbers/clamp/index.js +4 -4
  199. package/agnostic/numbers/geometric-progressions/index.d.ts +5 -5
  200. package/agnostic/numbers/geometric-progressions/index.js +7 -5
  201. package/agnostic/numbers/geometric-progressions/index.test.js +2 -2
  202. package/agnostic/numbers/index.d.ts +1 -1
  203. package/agnostic/numbers/index.js +1 -1
  204. package/agnostic/numbers/interpolate/index.d.ts +8 -8
  205. package/agnostic/numbers/interpolate/index.js +8 -8
  206. package/agnostic/numbers/round/index.d.ts +9 -9
  207. package/agnostic/numbers/round/index.js +9 -9
  208. package/agnostic/objects/deep-get-property/index.d.ts +4 -4
  209. package/agnostic/objects/deep-get-property/index.js +3 -3
  210. package/agnostic/objects/enums/is-in-enum/index.d.ts +3 -3
  211. package/agnostic/objects/enums/is-in-enum/index.js +3 -3
  212. package/agnostic/objects/flatten-getters/index.d.ts +2 -2
  213. package/agnostic/objects/flatten-getters/index.js +3 -2
  214. package/agnostic/objects/index.d.ts +1 -1
  215. package/agnostic/objects/index.js +1 -1
  216. package/agnostic/objects/is-object/index.d.ts +4 -4
  217. package/agnostic/objects/is-object/index.js +4 -4
  218. package/agnostic/objects/is-record/index.d.ts +2 -2
  219. package/agnostic/objects/is-record/index.js +2 -2
  220. package/agnostic/objects/record-format/index.d.ts +9 -9
  221. package/agnostic/objects/record-format/index.js +8 -3
  222. package/agnostic/objects/record-map/index.d.ts +4 -4
  223. package/agnostic/objects/record-map/index.js +5 -3
  224. package/agnostic/objects/sort-keys/index.d.ts +3 -3
  225. package/agnostic/objects/sort-keys/index.js +4 -3
  226. package/agnostic/objects/validation/index.d.ts +3 -3
  227. package/agnostic/objects/validation/index.js +4 -3
  228. package/agnostic/optim/memoize/index.d.ts +2 -2
  229. package/agnostic/optim/memoize/index.js +4 -2
  230. package/agnostic/optim/throttle-debounce/index.d.ts +2 -2
  231. package/agnostic/optim/throttle-debounce/index.js +7 -6
  232. package/agnostic/optim/throttle-debounce/types.d.ts +2 -1
  233. package/agnostic/random/random/index.d.ts +7 -8
  234. package/agnostic/random/random/index.js +3 -3
  235. package/agnostic/random/uuid/index.d.ts +6 -6
  236. package/agnostic/random/uuid/index.js +6 -6
  237. package/agnostic/regexps/index.d.ts +30 -60
  238. package/agnostic/regexps/index.js +27 -26
  239. package/agnostic/sanitization/file-name/index.d.ts +3 -3
  240. package/agnostic/sanitization/file-name/index.js +10 -10
  241. package/agnostic/sanitization/html/index.d.ts +6 -6
  242. package/agnostic/sanitization/html/index.js +9 -6
  243. package/agnostic/sanitization/path/index.d.ts +2 -2
  244. package/agnostic/sanitization/path/index.js +2 -2
  245. package/agnostic/sanitization/user-input/index.js +1 -0
  246. package/agnostic/strings/char-codes/index.js +2 -6
  247. package/agnostic/strings/index.d.ts +1 -1
  248. package/agnostic/strings/index.js +1 -1
  249. package/agnostic/strings/normalize-indent/index.js +2 -2
  250. package/agnostic/strings/parse-table/index.d.ts +13 -13
  251. package/agnostic/strings/parse-table/index.js +31 -16
  252. package/agnostic/strings/replace-all/index.d.ts +1 -1
  253. package/agnostic/strings/replace-all/index.js +1 -0
  254. package/agnostic/strings/to-alphanum/index.js +2 -2
  255. package/agnostic/strings/trim/index.js +2 -2
  256. package/agnostic/time/dates/format-date/index.js +3 -1
  257. package/agnostic/time/dates/index.d.ts +1 -0
  258. package/agnostic/time/dates/index.js +1 -0
  259. package/agnostic/time/dates/to-french-republican/index.d.ts +16 -0
  260. package/agnostic/time/dates/to-french-republican/index.js +82 -0
  261. package/agnostic/time/dates/to-french-republican/index.test.d.ts +1 -0
  262. package/agnostic/time/dates/to-french-republican/index.test.js +112 -0
  263. package/agnostic/time/dates/to-french-republican/types.d.ts +91 -0
  264. package/agnostic/time/dates/to-french-republican/types.js +47 -0
  265. package/agnostic/time/dates/to-french-republican/utils.d.ts +32 -0
  266. package/agnostic/time/dates/to-french-republican/utils.js +155 -0
  267. package/agnostic/time/duration/index.js +2 -0
  268. package/agnostic/time/index.d.ts +2 -2
  269. package/agnostic/time/index.js +2 -2
  270. package/agnostic/time/timeout/index.js +9 -9
  271. package/agnostic/time/transitions/index.js +8 -7
  272. package/components/BeforeAfter/index.controlled.js +1 -0
  273. package/components/BeforeAfter/index.js +4 -0
  274. package/components/Button/index.d.ts +2 -7
  275. package/components/Button/index.js +2 -2
  276. package/components/Clippable/index.js +1 -0
  277. package/components/Drawer/index.js +1 -1
  278. package/components/Gallery/index.js +2 -1
  279. package/components/Gallery/utils.js +5 -1
  280. package/components/Iframe/index.d.ts +16 -34
  281. package/components/Iframe/index.js +70 -27
  282. package/components/Image/index.js +2 -0
  283. package/components/Input/index.controlled.d.ts +42 -0
  284. package/components/Input/index.controlled.js +54 -0
  285. package/components/Input/index.d.ts +21 -17
  286. package/components/Input/index.js +27 -18
  287. package/components/IntersectionObserver/index.js +5 -2
  288. package/components/JsonEditor/index.js +1 -1
  289. package/components/Overlayer/index.d.ts +1 -1
  290. package/components/ScrollListener/utils.d.ts +29 -0
  291. package/components/Select/index.controlled.d.ts +43 -0
  292. package/components/Select/index.controlled.js +54 -0
  293. package/components/Select/index.d.ts +22 -18
  294. package/components/Select/index.js +27 -18
  295. package/components/Sequencer/index.controlled.js +1 -1
  296. package/components/Subtitles/index.js +3 -1
  297. package/components/Subtitles/types.d.ts +14 -0
  298. package/components/Subtitles/utils.d.ts +19 -15
  299. package/components/Subtitles/utils.js +29 -24
  300. package/components/Textarea/index.controlled.d.ts +50 -0
  301. package/components/Textarea/index.controlled.js +75 -0
  302. package/components/Textarea/index.d.ts +22 -17
  303. package/components/Textarea/index.js +27 -18
  304. package/components/UIModule/index.js +3 -1
  305. package/components/Video/index.controlled.d.ts +1 -1
  306. package/components/Video/index.controlled.js +11 -10
  307. package/components/Video/index.js +27 -20
  308. package/components/Video/utils.d.ts +1 -1
  309. package/components/Video/utils.js +11 -2
  310. package/components/index.d.ts +1 -1
  311. package/components/index.js +1 -1
  312. package/components/utils/types.d.ts +5 -0
  313. package/node/@aws-s3/storage/directory/copy-dir/index.d.ts +9 -9
  314. package/node/@aws-s3/storage/directory/copy-dir/index.js +15 -12
  315. package/node/@aws-s3/storage/directory/index.d.ts +1 -1
  316. package/node/@aws-s3/storage/directory/index.js +1 -1
  317. package/node/@aws-s3/storage/directory/list/index.d.ts +5 -5
  318. package/node/@aws-s3/storage/directory/list/index.js +5 -5
  319. package/node/@aws-s3/storage/directory/move-dir/index.d.ts +6 -6
  320. package/node/@aws-s3/storage/directory/move-dir/index.js +11 -7
  321. package/node/@aws-s3/storage/directory/remove-dir/index.d.ts +5 -5
  322. package/node/@aws-s3/storage/directory/remove-dir/index.js +5 -5
  323. package/node/@aws-s3/storage/file/copy/index.d.ts +8 -8
  324. package/node/@aws-s3/storage/file/copy/index.js +12 -9
  325. package/node/@aws-s3/storage/file/download/index.d.ts +6 -6
  326. package/node/@aws-s3/storage/file/download/index.js +6 -5
  327. package/node/@aws-s3/storage/file/exists/index.d.ts +6 -6
  328. package/node/@aws-s3/storage/file/exists/index.js +15 -12
  329. package/node/@aws-s3/storage/file/index.d.ts +1 -1
  330. package/node/@aws-s3/storage/file/index.js +1 -1
  331. package/node/@aws-s3/storage/file/move/index.d.ts +9 -9
  332. package/node/@aws-s3/storage/file/move/index.js +18 -15
  333. package/node/@aws-s3/storage/file/remove/index.d.ts +5 -5
  334. package/node/@aws-s3/storage/file/remove/index.js +16 -11
  335. package/node/@aws-s3/storage/file/stat/index.d.ts +5 -5
  336. package/node/@aws-s3/storage/file/stat/index.js +10 -7
  337. package/node/@aws-s3/storage/file/upload/index.d.ts +7 -7
  338. package/node/@aws-s3/storage/file/upload/index.js +11 -9
  339. package/node/@express/@multer/index.d.ts +12 -12
  340. package/node/@express/@multer/index.js +27 -25
  341. package/node/@google-cloud/storage/bucket/get-metadata/index.d.ts +4 -4
  342. package/node/@google-cloud/storage/bucket/get-metadata/index.js +3 -3
  343. package/node/@google-cloud/storage/directory/copy-dir/index.d.ts +7 -7
  344. package/node/@google-cloud/storage/directory/copy-dir/index.js +6 -6
  345. package/node/@google-cloud/storage/directory/index.d.ts +1 -1
  346. package/node/@google-cloud/storage/directory/index.js +1 -1
  347. package/node/@google-cloud/storage/directory/list/index.d.ts +6 -6
  348. package/node/@google-cloud/storage/directory/list/index.js +5 -5
  349. package/node/@google-cloud/storage/directory/move-dir/index.d.ts +6 -6
  350. package/node/@google-cloud/storage/directory/move-dir/index.js +5 -5
  351. package/node/@google-cloud/storage/directory/remove-dir/index.d.ts +7 -7
  352. package/node/@google-cloud/storage/directory/remove-dir/index.js +6 -6
  353. package/node/@google-cloud/storage/file/copy/index.d.ts +9 -9
  354. package/node/@google-cloud/storage/file/copy/index.js +8 -8
  355. package/node/@google-cloud/storage/file/download/index.d.ts +7 -7
  356. package/node/@google-cloud/storage/file/download/index.js +5 -5
  357. package/node/@google-cloud/storage/file/exists/index.d.ts +7 -7
  358. package/node/@google-cloud/storage/file/exists/index.js +6 -6
  359. package/node/@google-cloud/storage/file/generate-signed-url/index.d.ts +7 -7
  360. package/node/@google-cloud/storage/file/generate-signed-url/index.js +6 -6
  361. package/node/@google-cloud/storage/file/get-metadata/index.d.ts +5 -5
  362. package/node/@google-cloud/storage/file/get-metadata/index.js +4 -4
  363. package/node/@google-cloud/storage/file/get-permissions/index.d.ts +6 -6
  364. package/node/@google-cloud/storage/file/get-permissions/index.js +4 -4
  365. package/node/@google-cloud/storage/file/index.d.ts +1 -1
  366. package/node/@google-cloud/storage/file/index.js +1 -1
  367. package/node/@google-cloud/storage/file/move/index.d.ts +10 -10
  368. package/node/@google-cloud/storage/file/move/index.js +9 -9
  369. package/node/@google-cloud/storage/file/remove/index.d.ts +5 -5
  370. package/node/@google-cloud/storage/file/remove/index.js +4 -4
  371. package/node/@google-cloud/storage/file/revoke-signed-urls/index.d.ts +5 -5
  372. package/node/@google-cloud/storage/file/revoke-signed-urls/index.js +5 -5
  373. package/node/@google-cloud/storage/file/stat/index.d.ts +5 -5
  374. package/node/@google-cloud/storage/file/stat/index.js +4 -4
  375. package/node/@google-cloud/storage/file/update-metadata/index.d.ts +7 -7
  376. package/node/@google-cloud/storage/file/update-metadata/index.js +5 -5
  377. package/node/@google-cloud/storage/file/upload/index.d.ts +7 -7
  378. package/node/@google-cloud/storage/file/upload/index.js +5 -5
  379. package/node/@google-cloud/storage/index.d.ts +1 -1
  380. package/node/@google-cloud/storage/index.js +1 -1
  381. package/node/cloud-storage/clients/index.d.ts +8 -8
  382. package/node/cloud-storage/clients/index.js +8 -8
  383. package/node/cloud-storage/operations/copy-dir/index.d.ts +22 -22
  384. package/node/cloud-storage/operations/copy-dir/index.js +5 -5
  385. package/node/cloud-storage/operations/copy-file/index.d.ts +22 -22
  386. package/node/cloud-storage/operations/copy-file/index.js +5 -5
  387. package/node/cloud-storage/operations/download-file/index.d.ts +19 -19
  388. package/node/cloud-storage/operations/download-file/index.js +6 -6
  389. package/node/cloud-storage/operations/exists-file/index.d.ts +15 -26
  390. package/node/cloud-storage/operations/exists-file/index.js +4 -4
  391. package/node/cloud-storage/operations/index.d.ts +1 -1
  392. package/node/cloud-storage/operations/index.js +1 -1
  393. package/node/cloud-storage/operations/list-dir/index.d.ts +15 -25
  394. package/node/cloud-storage/operations/list-dir/index.js +4 -4
  395. package/node/cloud-storage/operations/move-dir/index.d.ts +22 -22
  396. package/node/cloud-storage/operations/move-dir/index.js +5 -5
  397. package/node/cloud-storage/operations/move-file/index.d.ts +22 -22
  398. package/node/cloud-storage/operations/move-file/index.js +5 -5
  399. package/node/cloud-storage/operations/remove-dir/index.d.ts +18 -18
  400. package/node/cloud-storage/operations/remove-dir/index.js +4 -4
  401. package/node/cloud-storage/operations/remove-file/index.d.ts +18 -18
  402. package/node/cloud-storage/operations/remove-file/index.js +4 -4
  403. package/node/cloud-storage/operations/stat-file/index.d.ts +16 -16
  404. package/node/cloud-storage/operations/stat-file/index.js +4 -4
  405. package/node/cloud-storage/operations/upload-file/index.d.ts +23 -23
  406. package/node/cloud-storage/operations/upload-file/index.js +5 -5
  407. package/node/encryption/@aes-256-gcm/buffer/index.d.ts +6 -6
  408. package/node/encryption/@aes-256-gcm/buffer/index.js +6 -6
  409. package/node/encryption/@aes-256-gcm/uint8-array/index.d.ts +8 -8
  410. package/node/encryption/@aes-256-gcm/uint8-array/index.js +8 -8
  411. package/node/encryption/key/index.d.ts +6 -6
  412. package/node/encryption/key/index.js +6 -6
  413. package/node/files/read-write/index.d.ts +16 -16
  414. package/node/files/subpaths/index.d.ts +8 -8
  415. package/node/files/subpaths/index.js +11 -13
  416. package/node/ftps/directory/copy-dir/index.d.ts +6 -6
  417. package/node/ftps/directory/copy-dir/index.js +6 -6
  418. package/node/ftps/directory/list/index.d.ts +4 -4
  419. package/node/ftps/directory/list/index.js +3 -3
  420. package/node/ftps/directory/move-dir/index.d.ts +6 -6
  421. package/node/ftps/directory/move-dir/index.js +5 -5
  422. package/node/ftps/directory/remove-dir/index.d.ts +6 -6
  423. package/node/ftps/directory/remove-dir/index.js +8 -7
  424. package/node/ftps/file/copy/index.d.ts +6 -6
  425. package/node/ftps/file/copy/index.js +5 -5
  426. package/node/ftps/file/download/index.d.ts +6 -6
  427. package/node/ftps/file/download/index.js +5 -5
  428. package/node/ftps/file/exists/index.d.ts +3 -3
  429. package/node/ftps/file/exists/index.js +3 -3
  430. package/node/ftps/file/move/index.d.ts +8 -8
  431. package/node/ftps/file/move/index.js +11 -9
  432. package/node/ftps/file/remove/index.d.ts +5 -5
  433. package/node/ftps/file/remove/index.js +4 -4
  434. package/node/ftps/file/stat/index.d.ts +4 -4
  435. package/node/ftps/file/stat/index.js +4 -4
  436. package/node/ftps/file/upload/index.d.ts +7 -7
  437. package/node/ftps/file/upload/index.js +5 -5
  438. package/node/images/create/index.d.ts +2 -2
  439. package/node/images/create/index.js +1 -1
  440. package/node/images/format/index.d.ts +8 -8
  441. package/node/images/metadata/index.d.ts +2 -2
  442. package/node/images/transform/index.d.ts +2 -2
  443. package/node/images/transform/index.js +12 -2
  444. package/node/images/transform/operations/blur/index.d.ts +2 -2
  445. package/node/images/transform/operations/blur/index.js +1 -0
  446. package/node/images/transform/operations/brighten/index.d.ts +2 -2
  447. package/node/images/transform/operations/brighten/index.js +1 -0
  448. package/node/images/transform/operations/extend/index.d.ts +2 -2
  449. package/node/images/transform/operations/extend/index.js +1 -0
  450. package/node/images/transform/operations/extract/index.d.ts +2 -2
  451. package/node/images/transform/operations/extract/index.js +1 -0
  452. package/node/images/transform/operations/flatten/index.d.ts +2 -2
  453. package/node/images/transform/operations/flatten/index.js +1 -0
  454. package/node/images/transform/operations/flip/index.d.ts +2 -2
  455. package/node/images/transform/operations/flip/index.js +1 -0
  456. package/node/images/transform/operations/flop/index.d.ts +2 -2
  457. package/node/images/transform/operations/flop/index.js +1 -0
  458. package/node/images/transform/operations/hue/index.d.ts +2 -2
  459. package/node/images/transform/operations/hue/index.js +1 -0
  460. package/node/images/transform/operations/index.d.ts +1 -1
  461. package/node/images/transform/operations/index.js +1 -1
  462. package/node/images/transform/operations/level/index.d.ts +2 -2
  463. package/node/images/transform/operations/level/index.js +1 -0
  464. package/node/images/transform/operations/lighten/index.d.ts +2 -2
  465. package/node/images/transform/operations/lighten/index.js +1 -0
  466. package/node/images/transform/operations/normalize/index.d.ts +2 -2
  467. package/node/images/transform/operations/normalize/index.js +1 -0
  468. package/node/images/transform/operations/overlay/index.d.ts +2 -2
  469. package/node/images/transform/operations/resize/index.d.ts +2 -2
  470. package/node/images/transform/operations/resize/index.js +1 -0
  471. package/node/images/transform/operations/rotate/index.d.ts +2 -2
  472. package/node/images/transform/operations/rotate/index.js +1 -0
  473. package/node/images/transform/operations/saturate/index.d.ts +2 -2
  474. package/node/images/transform/operations/saturate/index.js +1 -0
  475. package/node/images/types.d.ts +41 -2
  476. package/node/images/utils/index.d.ts +10 -5
  477. package/node/index.d.ts +1 -1
  478. package/node/index.js +1 -1
  479. package/node/process/on-exit/index.js +2 -4
  480. package/node/process/prompt-continue/index.d.ts +3 -3
  481. package/node/process/prompt-continue/index.js +4 -3
  482. package/node/process/spawner/index.js +7 -6
  483. package/node/sftp/directory/copy-dir/index.d.ts +6 -6
  484. package/node/sftp/directory/copy-dir/index.js +6 -6
  485. package/node/sftp/directory/list/index.d.ts +3 -3
  486. package/node/sftp/directory/list/index.js +4 -4
  487. package/node/sftp/directory/move-dir/index.d.ts +7 -7
  488. package/node/sftp/directory/move-dir/index.js +7 -7
  489. package/node/sftp/directory/remove-dir/index.d.ts +5 -5
  490. package/node/sftp/directory/remove-dir/index.js +8 -7
  491. package/node/sftp/file/copy/index.d.ts +6 -6
  492. package/node/sftp/file/copy/index.js +5 -5
  493. package/node/sftp/file/download/index.d.ts +7 -7
  494. package/node/sftp/file/download/index.js +5 -5
  495. package/node/sftp/file/exists/index.d.ts +3 -3
  496. package/node/sftp/file/exists/index.js +3 -3
  497. package/node/sftp/file/move/index.d.ts +7 -7
  498. package/node/sftp/file/move/index.js +7 -7
  499. package/node/sftp/file/remove/index.d.ts +4 -4
  500. package/node/sftp/file/remove/index.js +4 -4
  501. package/node/sftp/file/stat/index.d.ts +3 -3
  502. package/node/sftp/file/stat/index.js +6 -5
  503. package/node/sftp/file/upload/index.d.ts +6 -6
  504. package/node/sftp/file/upload/index.js +5 -5
  505. package/package.json +40 -39
@@ -5,8 +5,6 @@
5
5
  * @returns Base-36 encoded character code.
6
6
  */
7
7
  export function charCodeToB36(charCode) {
8
- if (charCode === null)
9
- return '\x00';
10
8
  return charCode.toString(36);
11
9
  }
12
10
  /**
@@ -15,8 +13,6 @@ export function charCodeToB36(charCode) {
15
13
  * @returns Unicode character code.
16
14
  */
17
15
  export function b36CharCodeToCharCode(b36CharCode) {
18
- if (b36CharCode === null)
19
- return 0;
20
16
  const charCode = parseInt(b36CharCode, 36);
21
17
  if (!Number.isInteger(charCode))
22
18
  return 0;
@@ -91,7 +87,7 @@ export function toB36CharCodes(string) {
91
87
  export function fromCharCodes(charCodes) {
92
88
  return charCodes
93
89
  .map(charFromCharCode)
94
- .map(char => char ?? '\x00')
90
+ .map(char => char)
95
91
  .join('');
96
92
  }
97
93
  /**
@@ -102,7 +98,7 @@ export function fromCharCodes(charCodes) {
102
98
  export function fromB36CharCodes(b36CharCodes) {
103
99
  return b36CharCodes
104
100
  .map(charFromB36CharCode)
105
- .map(char => char ?? '\x00')
101
+ .map(char => char)
106
102
  .join('');
107
103
  }
108
104
  // Serialization
@@ -1,6 +1,6 @@
1
+ export * as charCodes from './char-codes/index.js'
1
2
  export * as matches from './matches/index.js'
2
3
  export * as normalizeIndent from './normalize-indent/index.js'
3
- export * as charCodes from './char-codes/index.js'
4
4
  export * as parseTable from './parse-table/index.js'
5
5
  export * as replaceAll from './replace-all/index.js'
6
6
  export * as splitTrim from './split-trim/index.js'
@@ -1,6 +1,6 @@
1
+ export * as charCodes from './char-codes/index.js'
1
2
  export * as matches from './matches/index.js'
2
3
  export * as normalizeIndent from './normalize-indent/index.js'
3
- export * as charCodes from './char-codes/index.js'
4
4
  export * as parseTable from './parse-table/index.js'
5
5
  export * as replaceAll from './replace-all/index.js'
6
6
  export * as splitTrim from './split-trim/index.js'
@@ -23,9 +23,9 @@
23
23
  export function normalizeIndent(input, indentLevel = 0) {
24
24
  const indent = (' ').repeat(indentLevel);
25
25
  const lines = input.split('\n');
26
- const noIndentLines = lines.map(line => line.replace(/^\s*/igm, ''));
26
+ const noIndentLines = lines.map(line => line.replace(/^\s*/igmv, ''));
27
27
  const pipeReplacedLines = noIndentLines.map(line => {
28
- const nbPipeCharsOnLineStart = line.match(/^\|+/igm)?.[0].length ?? 0;
28
+ const nbPipeCharsOnLineStart = line.match(/^\|+/igmv)?.[0].length ?? 0;
29
29
  const noPipeLine = line.slice(nbPipeCharsOnLineStart);
30
30
  const replacedPipes = (' ').repeat(nbPipeCharsOnLineStart);
31
31
  return replacedPipes + noPipeLine;
@@ -90,24 +90,24 @@ export type ParseTableOptions<T extends Record<string, string>> = ParseTableLine
90
90
  * 2. **Fixed-width columns** (`mode: 'column'` or when `columns` is provided): Slices text at fixed character positions
91
91
  *
92
92
  * @template T - The type of objects in the resulting array, extending `Record<string, string>`.
93
- * @param {string} table - The string representation of the table to parse.
94
- * @param {Partial<ParseTableOptions<T>> & { schema: (obj: unknown) => T | undefined }} options - Configuration options.
95
- * @param {function(unknown): T | undefined} options.schema - **Required.** Validates and transforms each row. Return `undefined` to skip invalid rows.
96
- * @param {'line' | 'column'} [options.mode] - Parsing mode. If omitted, inferred from presence of `columns` property.
97
- * @param {function(string): string[]} [options.splitLines] - How to split input into lines.
98
- * @param {number} [options.headerPos=0] - Index of the header line.
99
- * @param {[number, number]} [options.bodyBounds=[1, Infinity]] - Range of lines to parse as body rows `[start, end)`.
93
+ * @param table - The string representation of the table to parse.
94
+ * @param options - Configuration options.
95
+ * @param options.schema - **Required.** Validates and transforms each row. Return `undefined` to skip invalid rows.
96
+ * @param [options.mode] - Parsing mode. If omitted, inferred from presence of `columns` property.
97
+ * @param [options.splitLines] - How to split input into lines.
98
+ * @param [options.headerPos=0] - Index of the header line.
99
+ * @param [options.bodyBounds=[1, Infinity]] - Range of lines to parse as body rows `[start, end)`.
100
100
  *
101
101
  * **Delimiter-based mode options:**
102
- * @param {function(string): string[]} [options.splitHeaderCells] - How to split header line into column names.
103
- * @param {function(string): string[]} [options.splitBodyCells] - How to split body lines into cell values.
102
+ * @param [options.splitHeaderCells] - How to split header line into column names.
103
+ * @param [options.splitBodyCells] - How to split body lines into cell values.
104
104
  *
105
105
  * **Fixed-width column mode options:**
106
- * @param {number[]} [options.columns] - Starting positions for each column.
107
- * @param {function(string): string} [options.headerCellRefine] - Clean/normalize header names.
108
- * @param {function(string): string} [options.bodyCellRefine] - Clean/normalize cell values.
106
+ * @param [options.columns] - Starting positions for each column.
107
+ * @param [options.headerCellRefine] - Clean/normalize header names.
108
+ * @param [options.bodyCellRefine] - Clean/normalize cell values.
109
109
  *
110
- * @returns {Outcome.Either<T[], string>}
110
+ * @returns
111
111
  * - On success: `{ success: true, payload: T[] }` containing parsed rows.
112
112
  * - On failure: `{ success: false, payload: string }` containing error message.
113
113
  *
@@ -1,4 +1,5 @@
1
1
  import * as Outcome from '../../misc/outcome/index.js';
2
+ import { isRecord } from '../../objects/is-record/index.js';
2
3
  const defaultLineModeOptions = {
3
4
  mode: 'line',
4
5
  splitLines: i => i.split('\n'),
@@ -6,7 +7,14 @@ const defaultLineModeOptions = {
6
7
  splitHeaderCells: h => h.split('\t'),
7
8
  bodyBounds: [1, Infinity],
8
9
  splitBodyCells: i => i.split('\t'),
9
- schema: i => i
10
+ schema: i => {
11
+ if (isRecord(i)
12
+ && Object.values(i).every(v => typeof v === 'string')) {
13
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
14
+ return i;
15
+ }
16
+ return {};
17
+ }
10
18
  };
11
19
  const defaultColumnModeOptions = {
12
20
  mode: 'column',
@@ -16,7 +24,14 @@ const defaultColumnModeOptions = {
16
24
  columns: [],
17
25
  headerCellRefine: h => h,
18
26
  bodyCellRefine: v => v,
19
- schema: i => i
27
+ schema: i => {
28
+ if (isRecord(i)
29
+ && Object.values(i).every(v => typeof v === 'string')) {
30
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
31
+ return i;
32
+ }
33
+ return {};
34
+ }
20
35
  };
21
36
  /**
22
37
  * Parses a tabular string input into an array of typed objects.
@@ -26,24 +41,24 @@ const defaultColumnModeOptions = {
26
41
  * 2. **Fixed-width columns** (`mode: 'column'` or when `columns` is provided): Slices text at fixed character positions
27
42
  *
28
43
  * @template T - The type of objects in the resulting array, extending `Record<string, string>`.
29
- * @param {string} table - The string representation of the table to parse.
30
- * @param {Partial<ParseTableOptions<T>> & { schema: (obj: unknown) => T | undefined }} options - Configuration options.
31
- * @param {function(unknown): T | undefined} options.schema - **Required.** Validates and transforms each row. Return `undefined` to skip invalid rows.
32
- * @param {'line' | 'column'} [options.mode] - Parsing mode. If omitted, inferred from presence of `columns` property.
33
- * @param {function(string): string[]} [options.splitLines] - How to split input into lines.
34
- * @param {number} [options.headerPos=0] - Index of the header line.
35
- * @param {[number, number]} [options.bodyBounds=[1, Infinity]] - Range of lines to parse as body rows `[start, end)`.
44
+ * @param table - The string representation of the table to parse.
45
+ * @param options - Configuration options.
46
+ * @param options.schema - **Required.** Validates and transforms each row. Return `undefined` to skip invalid rows.
47
+ * @param [options.mode] - Parsing mode. If omitted, inferred from presence of `columns` property.
48
+ * @param [options.splitLines] - How to split input into lines.
49
+ * @param [options.headerPos=0] - Index of the header line.
50
+ * @param [options.bodyBounds=[1, Infinity]] - Range of lines to parse as body rows `[start, end)`.
36
51
  *
37
52
  * **Delimiter-based mode options:**
38
- * @param {function(string): string[]} [options.splitHeaderCells] - How to split header line into column names.
39
- * @param {function(string): string[]} [options.splitBodyCells] - How to split body lines into cell values.
53
+ * @param [options.splitHeaderCells] - How to split header line into column names.
54
+ * @param [options.splitBodyCells] - How to split body lines into cell values.
40
55
  *
41
56
  * **Fixed-width column mode options:**
42
- * @param {number[]} [options.columns] - Starting positions for each column.
43
- * @param {function(string): string} [options.headerCellRefine] - Clean/normalize header names.
44
- * @param {function(string): string} [options.bodyCellRefine] - Clean/normalize cell values.
57
+ * @param [options.columns] - Starting positions for each column.
58
+ * @param [options.headerCellRefine] - Clean/normalize header names.
59
+ * @param [options.bodyCellRefine] - Clean/normalize cell values.
45
60
  *
46
- * @returns {Outcome.Either<T[], string>}
61
+ * @returns
47
62
  * - On success: `{ success: true, payload: T[] }` containing parsed rows.
48
63
  * - On failure: `{ success: false, payload: string }` containing error message.
49
64
  *
@@ -102,7 +117,7 @@ export function parseTable(table, _options) {
102
117
  bodyLinesSplit.forEach(lineCells => {
103
118
  const row = {};
104
119
  const cellCount = Math.min(lineCells.length, headers.length);
105
- for (let cellPos = 0; cellPos < cellCount; cellPos++) {
120
+ for (let cellPos = 0; cellPos < cellCount; cellPos = cellPos + 1) {
106
121
  const cellName = headers[cellPos];
107
122
  const cellValue = lineCells[cellPos];
108
123
  if (cellName !== undefined
@@ -18,4 +18,4 @@
18
18
  * replaceAll('abc 123 abc', /abc/g, match => match.toUpperCase())
19
19
  * // => 'ABC 123 ABC'
20
20
  */
21
- export declare function replaceAll(input: string, pattern: string | RegExp, replacer: string | ((substring: string, ...args: any[]) => string)): string;
21
+ export declare function replaceAll(input: string, pattern: string | RegExp, replacer: string | ((substring: string, ...args: unknown[]) => string)): string;
@@ -21,6 +21,7 @@
21
21
  * // => 'ABC 123 ABC'
22
22
  */
23
23
  export function replaceAll(input, pattern, replacer) {
24
+ // eslint-disable-next-line no-console
24
25
  console.warn('[DEPRECATED] Use String.replaceAll instead');
25
26
  const found = Array.from(input.match(pattern) ?? []);
26
27
  const foundReplaced = typeof replacer === 'string'
@@ -17,8 +17,8 @@
17
17
  * // => "Hello-World"
18
18
  */
19
19
  export function toAlphanum(string, replacer = '') {
20
- const replaced = string.replace(/[^a-z0-9]/igm, replacer);
20
+ const replaced = string.replace(/[^a-z0-9]/igmv, replacer);
21
21
  if (replacer.length === 0)
22
22
  return replaced;
23
- return replaced.replace(new RegExp(`${replacer}+`, 'igm'), replacer);
23
+ return replaced.replace(new RegExp(`${replacer}+`, 'igmv'), replacer);
24
24
  }
@@ -8,7 +8,7 @@
8
8
  * trimStart(" hello") // => "hello"
9
9
  */
10
10
  export function trimStart(string) {
11
- return string.replace(/^\s*/, '');
11
+ return string.replace(/^\s*/v, '');
12
12
  }
13
13
  /**
14
14
  * Removes all trailing whitespace characters from a string.
@@ -20,5 +20,5 @@ export function trimStart(string) {
20
20
  * trimEnd("hello ") // => "hello"
21
21
  */
22
22
  export function trimEnd(string) {
23
- return string.replace(/\s*$/, '');
23
+ return string.replace(/\s*$/v, '');
24
24
  }
@@ -52,6 +52,7 @@ export function formatDate(date, format, locale = 'en') {
52
52
  if (Intl
53
53
  .DateTimeFormat
54
54
  .supportedLocalesOf(locale).length === 0) {
55
+ // eslint-disable-next-line no-param-reassign
55
56
  locale = 'en';
56
57
  }
57
58
  const day = date.getDate();
@@ -109,7 +110,8 @@ export function formatDate(date, format, locale = 'en') {
109
110
  return '';
110
111
  }
111
112
  };
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
+ const regexp = /\{\{(DD|D|dd|d|MM|M|MMMM|MMM|YYYY|YY|HH|H|hh|h|mm|m|ss|s|A|a|th|ms)\}\}/gv;
114
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
113
115
  return format.replace(regexp, (match, token) => replacements[token]?.() ?? match);
114
116
  }
115
117
  // [WIP] this was removed since JavaScript's Date object don't hold timezone data
@@ -1 +1,2 @@
1
1
  export * as formatDate from './format-date/index.js'
2
+ export * as toFrenchRepublican from './to-french-republican/index.js'
@@ -1 +1,2 @@
1
1
  export * as formatDate from './format-date/index.js'
2
+ export * as toFrenchRepublican from './to-french-republican/index.js'
@@ -0,0 +1,16 @@
1
+ import type { FrenchRepublicanDate } from './types.js';
2
+ /**
3
+ * Converts a `Date` to the French Republican calendar.
4
+ *
5
+ * @param date - The date to convert.
6
+ * @returns The equivalent {@link FrenchRepublicanDate}.
7
+ *
8
+ * @remarks
9
+ * The date's local calendar day (`getFullYear` / `getMonth` / `getDate`) is
10
+ * used as the Gregorian date, so the result reflects the runtime's local
11
+ * timezone. Build the `Date` in the timezone you care about if this matters.
12
+ *
13
+ * @example
14
+ * toFrenchRepublican(new Date(1799, 10, 9)).formatted // => '18 Brumaire an VIII'
15
+ */
16
+ export declare function toFrenchRepublican(date: Date): FrenchRepublicanDate;
@@ -0,0 +1,82 @@
1
+ // French Republican calendar conversion.
2
+ //
3
+ // Rule: the calendar as it was actually applied (1792–1805). A Republican year
4
+ // begins on the civil day, at the Paris meridian, during which the true autumnal
5
+ // (September) equinox occurs. We simply extrapolate that same rule to any date.
6
+ //
7
+ // Year N starts on the September equinox of Gregorian year (1791 + N):
8
+ // An I -> equinox of 1792 (22 September 1792).
9
+ //
10
+ // The gap between two consecutive equinox-based new years is 365 or 366 days, so
11
+ // the number of complementary days (5 or 6) falls out automatically — no separate
12
+ // leap-year rule is needed.
13
+ import { gregorianToJdn, republicanYearStartJdn, toRoman, MONTH_NAMES, COMPLEMENTARY_DAY_NAMES, DECADE_DAY_NAMES } from './utils.js';
14
+ /**
15
+ * Converts a `Date` to the French Republican calendar.
16
+ *
17
+ * @param date - The date to convert.
18
+ * @returns The equivalent {@link FrenchRepublicanDate}.
19
+ *
20
+ * @remarks
21
+ * The date's local calendar day (`getFullYear` / `getMonth` / `getDate`) is
22
+ * used as the Gregorian date, so the result reflects the runtime's local
23
+ * timezone. Build the `Date` in the timezone you care about if this matters.
24
+ *
25
+ * @example
26
+ * toFrenchRepublican(new Date(1799, 10, 9)).formatted // => '18 Brumaire an VIII'
27
+ */
28
+ export function toFrenchRepublican(date) {
29
+ const year = date.getFullYear();
30
+ const month = date.getMonth() + 1;
31
+ const day = date.getDate();
32
+ const jdn = gregorianToJdn(year, month, day);
33
+ // The Republican year that contains this date started at the equinox of some
34
+ // Gregorian year g. Guess g = the date's Gregorian year, then step back if the
35
+ // date falls before that year's new year (i.e. it's in Jan..Sep).
36
+ let g = year;
37
+ let startJdn = republicanYearStartJdn(g);
38
+ if (jdn < startJdn) {
39
+ g -= 1;
40
+ startJdn = republicanYearStartJdn(g);
41
+ }
42
+ const republicanYear = g - 1791;
43
+ const yearRoman = toRoman(republicanYear);
44
+ const dayOfYear = jdn - startJdn; // 0-based
45
+ if (dayOfYear >= 360) {
46
+ // Complementary day (sansculottide): dayOfYear 360..365 -> index 0..5.
47
+ const complementaryIndex = dayOfYear - 360;
48
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
49
+ const dayName = COMPLEMENTARY_DAY_NAMES[complementaryIndex];
50
+ return {
51
+ year: republicanYear,
52
+ yearRoman,
53
+ isComplementary: true,
54
+ monthIndex: null,
55
+ monthName: null,
56
+ dayOfMonth: complementaryIndex + 1,
57
+ dayName,
58
+ decade: null,
59
+ dayOfYear,
60
+ formatted: `${dayName}, an ${yearRoman}`
61
+ };
62
+ }
63
+ const monthIndex = Math.floor(dayOfYear / 30); // 0..11
64
+ const dayOfMonth = (dayOfYear % 30) + 1; // 1..30
65
+ const decadeDayIndex = (dayOfMonth - 1) % 10; // 0..9
66
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
67
+ const monthName = MONTH_NAMES[monthIndex];
68
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
69
+ const dayName = DECADE_DAY_NAMES[decadeDayIndex];
70
+ return {
71
+ year: republicanYear,
72
+ yearRoman,
73
+ isComplementary: false,
74
+ monthIndex,
75
+ monthName,
76
+ dayOfMonth,
77
+ dayName,
78
+ decade: Math.floor((dayOfMonth - 1) / 10) + 1, // 1..3
79
+ dayOfYear,
80
+ formatted: `${dayOfMonth} ${monthName} an ${yearRoman}`
81
+ };
82
+ }
@@ -0,0 +1,112 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { toFrenchRepublican } from './index.js';
3
+ import { RepublicanMonth, ComplementaryDay, DecadeDay } from './types.js';
4
+ describe('toFrenchRepublican', () => {
5
+ it('maps the first day of the calendar (An I) to 1 Vendémiaire', () => {
6
+ const result = toFrenchRepublican(new Date(1792, 8, 22));
7
+ expect(result).toMatchObject({
8
+ year: 1,
9
+ yearRoman: 'I',
10
+ isComplementary: false,
11
+ monthIndex: 0,
12
+ monthName: RepublicanMonth.VENDEMIAIRE,
13
+ dayOfMonth: 1,
14
+ dayName: DecadeDay.PRIMIDI,
15
+ decade: 1,
16
+ dayOfYear: 0,
17
+ formatted: '1 Vendémiaire an I'
18
+ });
19
+ });
20
+ it('converts a well-known historical date (18 Brumaire an VIII)', () => {
21
+ const result = toFrenchRepublican(new Date(1799, 10, 9));
22
+ expect(result.formatted).toBe('18 Brumaire an VIII');
23
+ expect(result.year).toBe(8);
24
+ expect(result.yearRoman).toBe('VIII');
25
+ expect(result.monthName).toBe(RepublicanMonth.BRUMAIRE);
26
+ expect(result.dayOfMonth).toBe(18);
27
+ });
28
+ it('converts 9 Thermidor an II (fall of Robespierre)', () => {
29
+ const result = toFrenchRepublican(new Date(1794, 6, 27));
30
+ expect(result.formatted).toBe('9 Thermidor an II');
31
+ expect(result.monthName).toBe(RepublicanMonth.THERMIDOR);
32
+ });
33
+ describe('regular days', () => {
34
+ it('computes the décade (1–3) from the day of the month', () => {
35
+ // 18 Brumaire -> second décade, Octidi (8th day of the décade).
36
+ const result = toFrenchRepublican(new Date(1799, 10, 9));
37
+ expect(result.isComplementary).toBe(false);
38
+ expect(result.decade).toBe(2);
39
+ expect(result.dayName).toBe(DecadeDay.OCTIDI);
40
+ });
41
+ it('never yields a day of month outside 1–30', () => {
42
+ const result = toFrenchRepublican(new Date(2026, 7, 25));
43
+ expect(result.isComplementary).toBe(false);
44
+ expect(result.dayOfMonth).toBeGreaterThanOrEqual(1);
45
+ expect(result.dayOfMonth).toBeLessThanOrEqual(30);
46
+ expect(result.dayOfYear).toBeLessThan(360);
47
+ });
48
+ });
49
+ describe('complementary days (sansculottides)', () => {
50
+ it('nulls out the month fields on a complementary day', () => {
51
+ const result = toFrenchRepublican(new Date(1795, 8, 17));
52
+ expect(result).toMatchObject({
53
+ isComplementary: true,
54
+ monthIndex: null,
55
+ monthName: null,
56
+ decade: null,
57
+ dayOfMonth: 1,
58
+ dayName: ComplementaryDay.VERTU,
59
+ formatted: 'Jour de la vertu, an III'
60
+ });
61
+ });
62
+ it('exposes the 6th complementary day in a sextile year (An III)', () => {
63
+ // An III is a leap (sextile) year, so it has a sixth sansculottide.
64
+ const result = toFrenchRepublican(new Date(1795, 8, 22));
65
+ expect(result.isComplementary).toBe(true);
66
+ expect(result.dayOfMonth).toBe(6);
67
+ expect(result.dayName).toBe(ComplementaryDay.REVOLUTION);
68
+ expect(result.dayOfYear).toBe(365);
69
+ });
70
+ it('rolls over to the next year on the following equinox', () => {
71
+ const lastDay = toFrenchRepublican(new Date(1795, 8, 22));
72
+ const newYear = toFrenchRepublican(new Date(1795, 8, 23));
73
+ expect(lastDay.year).toBe(3);
74
+ expect(newYear.year).toBe(4);
75
+ expect(newYear.formatted).toBe('1 Vendémiaire an IV');
76
+ expect(newYear.dayOfYear).toBe(0);
77
+ });
78
+ });
79
+ describe('year handling', () => {
80
+ it('steps back a Gregorian year for dates before the new year', () => {
81
+ // January 1800 still belongs to An VIII (started at the 1799 equinox).
82
+ const result = toFrenchRepublican(new Date(1800, 0, 1));
83
+ expect(result.year).toBe(8);
84
+ });
85
+ it('extrapolates the rule to modern dates', () => {
86
+ const result = toFrenchRepublican(new Date(2026, 7, 25));
87
+ expect(result.year).toBe(234);
88
+ expect(result.yearRoman).toBe('CCXXXIV');
89
+ expect(result.formatted).toBe('8 Fructidor an CCXXXIV');
90
+ });
91
+ });
92
+ });
93
+ describe('Republican calendar enums', () => {
94
+ it('lists the twelve months in order', () => {
95
+ const months = Object.values(RepublicanMonth);
96
+ expect(months).toHaveLength(12);
97
+ expect(months[0]).toBe('Vendémiaire');
98
+ expect(months[11]).toBe('Fructidor');
99
+ });
100
+ it('lists the six complementary days in order', () => {
101
+ const days = Object.values(ComplementaryDay);
102
+ expect(days).toHaveLength(6);
103
+ expect(days[0]).toBe('Jour de la vertu');
104
+ expect(days[5]).toBe('Jour de la Révolution');
105
+ });
106
+ it('lists the ten décade days in order', () => {
107
+ const days = Object.values(DecadeDay);
108
+ expect(days).toHaveLength(10);
109
+ expect(days[0]).toBe('Primidi');
110
+ expect(days[9]).toBe('Décadi');
111
+ });
112
+ });
@@ -0,0 +1,91 @@
1
+ /**
2
+ * The twelve 30-day months of the Republican year, in order.
3
+ */
4
+ export declare enum RepublicanMonth {
5
+ VENDEMIAIRE = "Vend\u00E9miaire",
6
+ BRUMAIRE = "Brumaire",
7
+ FRIMAIRE = "Frimaire",
8
+ NIVOSE = "Niv\u00F4se",
9
+ PLUVIOSE = "Pluvi\u00F4se",
10
+ VENTOSE = "Vent\u00F4se",
11
+ GERMINAL = "Germinal",
12
+ FLOREAL = "Flor\u00E9al",
13
+ PRAIRIAL = "Prairial",
14
+ MESSIDOR = "Messidor",
15
+ THERMIDOR = "Thermidor",
16
+ FRUCTIDOR = "Fructidor"
17
+ }
18
+ /**
19
+ * The complementary days ("les sansculottides"), in order. The 6th only exists
20
+ * in sextile years.
21
+ */
22
+ export declare enum ComplementaryDay {
23
+ VERTU = "Jour de la vertu",
24
+ GENIE = "Jour du g\u00E9nie",
25
+ TRAVAIL = "Jour du travail",
26
+ OPINION = "Jour de l'opinion",
27
+ RECOMPENSES = "Jour des r\u00E9compenses",
28
+ REVOLUTION = "Jour de la R\u00E9volution"
29
+ }
30
+ /**
31
+ * The ten days of a décade, in order. Each month is three décades.
32
+ */
33
+ export declare enum DecadeDay {
34
+ PRIMIDI = "Primidi",
35
+ DUODI = "Duodi",
36
+ TRIDI = "Tridi",
37
+ QUARTIDI = "Quartidi",
38
+ QUINTIDI = "Quintidi",
39
+ SEXTIDI = "Sextidi",
40
+ SEPTIDI = "Septidi",
41
+ OCTIDI = "Octidi",
42
+ NONIDI = "Nonidi",
43
+ DECADI = "D\u00E9cadi"
44
+ }
45
+ /**
46
+ * Fields shared by every Republican date, whether or not it is a complementary
47
+ * day.
48
+ */
49
+ type FrenchRepublicanDateCommon = {
50
+ /** Republican year (An I = 1), counted from the 1792 equinox. */
51
+ year: number;
52
+ /** Republican year in Roman numerals (e.g. `'VIII'`). */
53
+ yearRoman: string;
54
+ /** 1-based day number within the month or the complementary period. */
55
+ dayOfMonth: number;
56
+ /** 0-based day index within the Republican year (0–365). */
57
+ dayOfYear: number;
58
+ /** Human-readable French label (e.g. `'18 Brumaire an VIII'`). */
59
+ formatted: string;
60
+ };
61
+ /**
62
+ * A regular day, falling inside one of the twelve 30-day months.
63
+ */
64
+ export type FrenchRepublicanMonthDate = FrenchRepublicanDateCommon & {
65
+ isComplementary: false;
66
+ /** 0-based month index (0–11). */
67
+ monthIndex: number;
68
+ monthName: RepublicanMonth;
69
+ /** Name of the day within its décade. */
70
+ dayName: DecadeDay;
71
+ /** 1-based décade within the month (1–3). */
72
+ decade: number;
73
+ };
74
+ /**
75
+ * A complementary day ("sansculottide"), falling outside any month at the end
76
+ * of the year.
77
+ */
78
+ export type FrenchRepublicanComplementaryDate = FrenchRepublicanDateCommon & {
79
+ isComplementary: true;
80
+ monthIndex: null;
81
+ monthName: null;
82
+ dayName: ComplementaryDay;
83
+ decade: null;
84
+ };
85
+ /**
86
+ * A date expressed in the French Republican calendar. Discriminated on
87
+ * `isComplementary`: month fields are populated for a regular day and `null`
88
+ * for a complementary day.
89
+ */
90
+ export type FrenchRepublicanDate = FrenchRepublicanMonthDate | FrenchRepublicanComplementaryDate;
91
+ export {};
@@ -0,0 +1,47 @@
1
+ /**
2
+ * The twelve 30-day months of the Republican year, in order.
3
+ */
4
+ export var RepublicanMonth;
5
+ (function (RepublicanMonth) {
6
+ RepublicanMonth["VENDEMIAIRE"] = "Vend\u00E9miaire";
7
+ RepublicanMonth["BRUMAIRE"] = "Brumaire";
8
+ RepublicanMonth["FRIMAIRE"] = "Frimaire";
9
+ RepublicanMonth["NIVOSE"] = "Niv\u00F4se";
10
+ RepublicanMonth["PLUVIOSE"] = "Pluvi\u00F4se";
11
+ RepublicanMonth["VENTOSE"] = "Vent\u00F4se";
12
+ RepublicanMonth["GERMINAL"] = "Germinal";
13
+ RepublicanMonth["FLOREAL"] = "Flor\u00E9al";
14
+ RepublicanMonth["PRAIRIAL"] = "Prairial";
15
+ RepublicanMonth["MESSIDOR"] = "Messidor";
16
+ RepublicanMonth["THERMIDOR"] = "Thermidor";
17
+ RepublicanMonth["FRUCTIDOR"] = "Fructidor";
18
+ })(RepublicanMonth || (RepublicanMonth = {}));
19
+ /**
20
+ * The complementary days ("les sansculottides"), in order. The 6th only exists
21
+ * in sextile years.
22
+ */
23
+ export var ComplementaryDay;
24
+ (function (ComplementaryDay) {
25
+ ComplementaryDay["VERTU"] = "Jour de la vertu";
26
+ ComplementaryDay["GENIE"] = "Jour du g\u00E9nie";
27
+ ComplementaryDay["TRAVAIL"] = "Jour du travail";
28
+ ComplementaryDay["OPINION"] = "Jour de l'opinion";
29
+ ComplementaryDay["RECOMPENSES"] = "Jour des r\u00E9compenses";
30
+ ComplementaryDay["REVOLUTION"] = "Jour de la R\u00E9volution";
31
+ })(ComplementaryDay || (ComplementaryDay = {}));
32
+ /**
33
+ * The ten days of a décade, in order. Each month is three décades.
34
+ */
35
+ export var DecadeDay;
36
+ (function (DecadeDay) {
37
+ DecadeDay["PRIMIDI"] = "Primidi";
38
+ DecadeDay["DUODI"] = "Duodi";
39
+ DecadeDay["TRIDI"] = "Tridi";
40
+ DecadeDay["QUARTIDI"] = "Quartidi";
41
+ DecadeDay["QUINTIDI"] = "Quintidi";
42
+ DecadeDay["SEXTIDI"] = "Sextidi";
43
+ DecadeDay["SEPTIDI"] = "Septidi";
44
+ DecadeDay["OCTIDI"] = "Octidi";
45
+ DecadeDay["NONIDI"] = "Nonidi";
46
+ DecadeDay["DECADI"] = "D\u00E9cadi";
47
+ })(DecadeDay || (DecadeDay = {}));
@@ -0,0 +1,32 @@
1
+ import { RepublicanMonth, ComplementaryDay, DecadeDay } from './types.js';
2
+ /** The twelve month names, indexed by 0-based month index. */
3
+ export declare const MONTH_NAMES: RepublicanMonth[];
4
+ /** The six complementary day names, indexed by 0-based complementary index. */
5
+ export declare const COMPLEMENTARY_DAY_NAMES: ComplementaryDay[];
6
+ /** The ten décade day names, indexed by 0-based day-of-décade index. */
7
+ export declare const DECADE_DAY_NAMES: DecadeDay[];
8
+ /**
9
+ * Julian Day Number (integer, noon-based) for a proleptic Gregorian date.
10
+ *
11
+ * @param year - Gregorian year.
12
+ * @param month - Month, 1–12.
13
+ * @param day - Day of month, 1–31.
14
+ * @returns The Julian Day Number.
15
+ */
16
+ export declare function gregorianToJdn(year: number, month: number, day: number): number;
17
+ /**
18
+ * JDN of 1 Vendémiaire — the civil day (Paris meridian) hosting the September
19
+ * equinox of the given Gregorian year.
20
+ *
21
+ * @param gregorianYear - The Gregorian year whose equinox opens the Republican year.
22
+ * @returns The Julian Day Number of that year's 1 Vendémiaire.
23
+ */
24
+ export declare function republicanYearStartJdn(gregorianYear: number): number;
25
+ /**
26
+ * Formats a positive integer as a Roman numeral. Non-positive inputs are
27
+ * returned as their decimal string.
28
+ *
29
+ * @param n - The number to format.
30
+ * @returns The Roman numeral (e.g. `8` -> `'VIII'`).
31
+ */
32
+ export declare function toRoman(n: number): string;