@design-edito/tools 0.4.23 → 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 (490) 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 +3 -3
  22. package/agnostic/colors/index.js +3 -3
  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 +6 -6
  87. package/agnostic/html/hyper-json/smart-tags/coalesced/index.js +6 -6
  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 +2 -2
  139. package/agnostic/html/hyper-json/smart-tags/isolated/index.js +2 -2
  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 +4 -4
  154. package/agnostic/html/index.js +4 -4
  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 +2 -2
  179. package/agnostic/misc/index.js +2 -2
  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 +2 -2
  215. package/agnostic/objects/index.js +2 -2
  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/index.d.ts +1 -1
  244. package/agnostic/sanitization/index.js +1 -1
  245. package/agnostic/sanitization/path/index.d.ts +2 -2
  246. package/agnostic/sanitization/path/index.js +2 -2
  247. package/agnostic/sanitization/user-input/index.js +1 -0
  248. package/agnostic/strings/char-codes/index.js +2 -6
  249. package/agnostic/strings/index.d.ts +1 -1
  250. package/agnostic/strings/index.js +1 -1
  251. package/agnostic/strings/normalize-indent/index.js +2 -2
  252. package/agnostic/strings/parse-table/index.d.ts +13 -13
  253. package/agnostic/strings/parse-table/index.js +31 -16
  254. package/agnostic/strings/replace-all/index.d.ts +1 -1
  255. package/agnostic/strings/replace-all/index.js +1 -0
  256. package/agnostic/strings/to-alphanum/index.js +2 -2
  257. package/agnostic/strings/trim/index.js +2 -2
  258. package/agnostic/time/dates/format-date/index.js +3 -1
  259. package/agnostic/time/dates/index.d.ts +1 -0
  260. package/agnostic/time/dates/index.js +1 -0
  261. package/agnostic/time/dates/to-french-republican/index.d.ts +16 -0
  262. package/agnostic/time/dates/to-french-republican/index.js +82 -0
  263. package/agnostic/time/dates/to-french-republican/index.test.d.ts +1 -0
  264. package/agnostic/time/dates/to-french-republican/index.test.js +112 -0
  265. package/agnostic/time/dates/to-french-republican/types.d.ts +91 -0
  266. package/agnostic/time/dates/to-french-republican/types.js +47 -0
  267. package/agnostic/time/dates/to-french-republican/utils.d.ts +32 -0
  268. package/agnostic/time/dates/to-french-republican/utils.js +155 -0
  269. package/agnostic/time/duration/index.js +2 -0
  270. package/agnostic/time/index.d.ts +2 -2
  271. package/agnostic/time/index.js +2 -2
  272. package/agnostic/time/timeout/index.js +9 -9
  273. package/agnostic/time/transitions/index.js +8 -7
  274. package/components/BeforeAfter/index.controlled.js +1 -0
  275. package/components/BeforeAfter/index.js +4 -0
  276. package/components/Button/index.d.ts +1 -1
  277. package/components/Clippable/index.js +1 -0
  278. package/components/Drawer/index.js +1 -1
  279. package/components/Gallery/index.js +2 -1
  280. package/components/Gallery/utils.js +5 -1
  281. package/components/Iframe/index.js +3 -0
  282. package/components/Image/index.js +2 -0
  283. package/components/Input/index.controlled.js +3 -2
  284. package/components/IntersectionObserver/index.js +5 -2
  285. package/components/JsonEditor/index.js +1 -1
  286. package/components/Overlayer/index.d.ts +1 -1
  287. package/components/ScrollListener/utils.d.ts +29 -0
  288. package/components/Select/index.controlled.js +3 -2
  289. package/components/Sequencer/index.controlled.js +1 -1
  290. package/components/Subtitles/index.js +3 -1
  291. package/components/Subtitles/types.d.ts +14 -0
  292. package/components/Subtitles/utils.d.ts +19 -15
  293. package/components/Subtitles/utils.js +29 -24
  294. package/components/Textarea/index.controlled.js +3 -2
  295. package/components/UIModule/index.js +3 -1
  296. package/components/Video/index.controlled.d.ts +1 -1
  297. package/components/Video/index.controlled.js +11 -10
  298. package/components/Video/index.js +27 -20
  299. package/components/Video/utils.d.ts +1 -1
  300. package/components/Video/utils.js +11 -2
  301. package/components/index.d.ts +2 -2
  302. package/components/index.js +2 -2
  303. package/components/utils/types.d.ts +5 -0
  304. package/node/@aws-s3/storage/directory/copy-dir/index.d.ts +9 -9
  305. package/node/@aws-s3/storage/directory/copy-dir/index.js +15 -12
  306. package/node/@aws-s3/storage/directory/list/index.d.ts +5 -5
  307. package/node/@aws-s3/storage/directory/list/index.js +5 -5
  308. package/node/@aws-s3/storage/directory/move-dir/index.d.ts +6 -6
  309. package/node/@aws-s3/storage/directory/move-dir/index.js +11 -7
  310. package/node/@aws-s3/storage/directory/remove-dir/index.d.ts +5 -5
  311. package/node/@aws-s3/storage/directory/remove-dir/index.js +5 -5
  312. package/node/@aws-s3/storage/file/copy/index.d.ts +8 -8
  313. package/node/@aws-s3/storage/file/copy/index.js +12 -9
  314. package/node/@aws-s3/storage/file/download/index.d.ts +6 -6
  315. package/node/@aws-s3/storage/file/download/index.js +6 -5
  316. package/node/@aws-s3/storage/file/exists/index.d.ts +6 -6
  317. package/node/@aws-s3/storage/file/exists/index.js +15 -12
  318. package/node/@aws-s3/storage/file/move/index.d.ts +9 -9
  319. package/node/@aws-s3/storage/file/move/index.js +18 -15
  320. package/node/@aws-s3/storage/file/remove/index.d.ts +5 -5
  321. package/node/@aws-s3/storage/file/remove/index.js +16 -11
  322. package/node/@aws-s3/storage/file/stat/index.d.ts +5 -5
  323. package/node/@aws-s3/storage/file/stat/index.js +10 -7
  324. package/node/@aws-s3/storage/file/upload/index.d.ts +7 -7
  325. package/node/@aws-s3/storage/file/upload/index.js +11 -9
  326. package/node/@express/@multer/index.d.ts +12 -12
  327. package/node/@express/@multer/index.js +27 -25
  328. package/node/@google-cloud/storage/bucket/get-metadata/index.d.ts +4 -4
  329. package/node/@google-cloud/storage/bucket/get-metadata/index.js +3 -3
  330. package/node/@google-cloud/storage/directory/copy-dir/index.d.ts +7 -7
  331. package/node/@google-cloud/storage/directory/copy-dir/index.js +6 -6
  332. package/node/@google-cloud/storage/directory/index.d.ts +1 -1
  333. package/node/@google-cloud/storage/directory/index.js +1 -1
  334. package/node/@google-cloud/storage/directory/list/index.d.ts +6 -6
  335. package/node/@google-cloud/storage/directory/list/index.js +5 -5
  336. package/node/@google-cloud/storage/directory/move-dir/index.d.ts +6 -6
  337. package/node/@google-cloud/storage/directory/move-dir/index.js +5 -5
  338. package/node/@google-cloud/storage/directory/remove-dir/index.d.ts +7 -7
  339. package/node/@google-cloud/storage/directory/remove-dir/index.js +6 -6
  340. package/node/@google-cloud/storage/file/copy/index.d.ts +9 -9
  341. package/node/@google-cloud/storage/file/copy/index.js +8 -8
  342. package/node/@google-cloud/storage/file/download/index.d.ts +7 -7
  343. package/node/@google-cloud/storage/file/download/index.js +5 -5
  344. package/node/@google-cloud/storage/file/exists/index.d.ts +7 -7
  345. package/node/@google-cloud/storage/file/exists/index.js +6 -6
  346. package/node/@google-cloud/storage/file/generate-signed-url/index.d.ts +7 -7
  347. package/node/@google-cloud/storage/file/generate-signed-url/index.js +6 -6
  348. package/node/@google-cloud/storage/file/get-metadata/index.d.ts +5 -5
  349. package/node/@google-cloud/storage/file/get-metadata/index.js +4 -4
  350. package/node/@google-cloud/storage/file/get-permissions/index.d.ts +6 -6
  351. package/node/@google-cloud/storage/file/get-permissions/index.js +4 -4
  352. package/node/@google-cloud/storage/file/index.d.ts +1 -1
  353. package/node/@google-cloud/storage/file/index.js +1 -1
  354. package/node/@google-cloud/storage/file/move/index.d.ts +10 -10
  355. package/node/@google-cloud/storage/file/move/index.js +9 -9
  356. package/node/@google-cloud/storage/file/remove/index.d.ts +5 -5
  357. package/node/@google-cloud/storage/file/remove/index.js +4 -4
  358. package/node/@google-cloud/storage/file/revoke-signed-urls/index.d.ts +5 -5
  359. package/node/@google-cloud/storage/file/revoke-signed-urls/index.js +5 -5
  360. package/node/@google-cloud/storage/file/stat/index.d.ts +5 -5
  361. package/node/@google-cloud/storage/file/stat/index.js +4 -4
  362. package/node/@google-cloud/storage/file/update-metadata/index.d.ts +7 -7
  363. package/node/@google-cloud/storage/file/update-metadata/index.js +5 -5
  364. package/node/@google-cloud/storage/file/upload/index.d.ts +7 -7
  365. package/node/@google-cloud/storage/file/upload/index.js +5 -5
  366. package/node/cloud-storage/clients/index.d.ts +8 -8
  367. package/node/cloud-storage/clients/index.js +8 -8
  368. package/node/cloud-storage/operations/copy-dir/index.d.ts +22 -22
  369. package/node/cloud-storage/operations/copy-dir/index.js +5 -5
  370. package/node/cloud-storage/operations/copy-file/index.d.ts +22 -22
  371. package/node/cloud-storage/operations/copy-file/index.js +5 -5
  372. package/node/cloud-storage/operations/download-file/index.d.ts +19 -19
  373. package/node/cloud-storage/operations/download-file/index.js +6 -6
  374. package/node/cloud-storage/operations/exists-file/index.d.ts +15 -26
  375. package/node/cloud-storage/operations/exists-file/index.js +4 -4
  376. package/node/cloud-storage/operations/list-dir/index.d.ts +15 -25
  377. package/node/cloud-storage/operations/list-dir/index.js +4 -4
  378. package/node/cloud-storage/operations/move-dir/index.d.ts +22 -22
  379. package/node/cloud-storage/operations/move-dir/index.js +5 -5
  380. package/node/cloud-storage/operations/move-file/index.d.ts +22 -22
  381. package/node/cloud-storage/operations/move-file/index.js +5 -5
  382. package/node/cloud-storage/operations/remove-dir/index.d.ts +18 -18
  383. package/node/cloud-storage/operations/remove-dir/index.js +4 -4
  384. package/node/cloud-storage/operations/remove-file/index.d.ts +18 -18
  385. package/node/cloud-storage/operations/remove-file/index.js +4 -4
  386. package/node/cloud-storage/operations/stat-file/index.d.ts +16 -16
  387. package/node/cloud-storage/operations/stat-file/index.js +4 -4
  388. package/node/cloud-storage/operations/upload-file/index.d.ts +23 -23
  389. package/node/cloud-storage/operations/upload-file/index.js +5 -5
  390. package/node/encryption/@aes-256-gcm/buffer/index.d.ts +6 -6
  391. package/node/encryption/@aes-256-gcm/buffer/index.js +6 -6
  392. package/node/encryption/@aes-256-gcm/uint8-array/index.d.ts +8 -8
  393. package/node/encryption/@aes-256-gcm/uint8-array/index.js +8 -8
  394. package/node/encryption/key/index.d.ts +6 -6
  395. package/node/encryption/key/index.js +6 -6
  396. package/node/files/read-write/index.d.ts +16 -16
  397. package/node/files/subpaths/index.d.ts +8 -8
  398. package/node/files/subpaths/index.js +11 -13
  399. package/node/ftps/directory/copy-dir/index.d.ts +6 -6
  400. package/node/ftps/directory/copy-dir/index.js +6 -6
  401. package/node/ftps/directory/list/index.d.ts +4 -4
  402. package/node/ftps/directory/list/index.js +3 -3
  403. package/node/ftps/directory/move-dir/index.d.ts +6 -6
  404. package/node/ftps/directory/move-dir/index.js +5 -5
  405. package/node/ftps/directory/remove-dir/index.d.ts +6 -6
  406. package/node/ftps/directory/remove-dir/index.js +8 -7
  407. package/node/ftps/file/copy/index.d.ts +6 -6
  408. package/node/ftps/file/copy/index.js +5 -5
  409. package/node/ftps/file/download/index.d.ts +6 -6
  410. package/node/ftps/file/download/index.js +5 -5
  411. package/node/ftps/file/exists/index.d.ts +3 -3
  412. package/node/ftps/file/exists/index.js +3 -3
  413. package/node/ftps/file/move/index.d.ts +8 -8
  414. package/node/ftps/file/move/index.js +11 -9
  415. package/node/ftps/file/remove/index.d.ts +5 -5
  416. package/node/ftps/file/remove/index.js +4 -4
  417. package/node/ftps/file/stat/index.d.ts +4 -4
  418. package/node/ftps/file/stat/index.js +4 -4
  419. package/node/ftps/file/upload/index.d.ts +7 -7
  420. package/node/ftps/file/upload/index.js +5 -5
  421. package/node/images/create/index.d.ts +2 -2
  422. package/node/images/create/index.js +1 -1
  423. package/node/images/format/index.d.ts +8 -8
  424. package/node/images/metadata/index.d.ts +2 -2
  425. package/node/images/transform/index.d.ts +2 -2
  426. package/node/images/transform/index.js +12 -2
  427. package/node/images/transform/operations/blur/index.d.ts +2 -2
  428. package/node/images/transform/operations/blur/index.js +1 -0
  429. package/node/images/transform/operations/brighten/index.d.ts +2 -2
  430. package/node/images/transform/operations/brighten/index.js +1 -0
  431. package/node/images/transform/operations/extend/index.d.ts +2 -2
  432. package/node/images/transform/operations/extend/index.js +1 -0
  433. package/node/images/transform/operations/extract/index.d.ts +2 -2
  434. package/node/images/transform/operations/extract/index.js +1 -0
  435. package/node/images/transform/operations/flatten/index.d.ts +2 -2
  436. package/node/images/transform/operations/flatten/index.js +1 -0
  437. package/node/images/transform/operations/flip/index.d.ts +2 -2
  438. package/node/images/transform/operations/flip/index.js +1 -0
  439. package/node/images/transform/operations/flop/index.d.ts +2 -2
  440. package/node/images/transform/operations/flop/index.js +1 -0
  441. package/node/images/transform/operations/hue/index.d.ts +2 -2
  442. package/node/images/transform/operations/hue/index.js +1 -0
  443. package/node/images/transform/operations/index.d.ts +2 -2
  444. package/node/images/transform/operations/index.js +2 -2
  445. package/node/images/transform/operations/level/index.d.ts +2 -2
  446. package/node/images/transform/operations/level/index.js +1 -0
  447. package/node/images/transform/operations/lighten/index.d.ts +2 -2
  448. package/node/images/transform/operations/lighten/index.js +1 -0
  449. package/node/images/transform/operations/normalize/index.d.ts +2 -2
  450. package/node/images/transform/operations/normalize/index.js +1 -0
  451. package/node/images/transform/operations/overlay/index.d.ts +2 -2
  452. package/node/images/transform/operations/resize/index.d.ts +2 -2
  453. package/node/images/transform/operations/resize/index.js +1 -0
  454. package/node/images/transform/operations/rotate/index.d.ts +2 -2
  455. package/node/images/transform/operations/rotate/index.js +1 -0
  456. package/node/images/transform/operations/saturate/index.d.ts +2 -2
  457. package/node/images/transform/operations/saturate/index.js +1 -0
  458. package/node/images/types.d.ts +41 -2
  459. package/node/images/utils/index.d.ts +10 -5
  460. package/node/process/index.d.ts +1 -1
  461. package/node/process/index.js +1 -1
  462. package/node/process/on-exit/index.js +2 -4
  463. package/node/process/prompt-continue/index.d.ts +3 -3
  464. package/node/process/prompt-continue/index.js +4 -3
  465. package/node/process/spawner/index.js +7 -6
  466. package/node/sftp/directory/copy-dir/index.d.ts +6 -6
  467. package/node/sftp/directory/copy-dir/index.js +6 -6
  468. package/node/sftp/directory/list/index.d.ts +3 -3
  469. package/node/sftp/directory/list/index.js +4 -4
  470. package/node/sftp/directory/move-dir/index.d.ts +7 -7
  471. package/node/sftp/directory/move-dir/index.js +7 -7
  472. package/node/sftp/directory/remove-dir/index.d.ts +5 -5
  473. package/node/sftp/directory/remove-dir/index.js +8 -7
  474. package/node/sftp/file/copy/index.d.ts +6 -6
  475. package/node/sftp/file/copy/index.js +5 -5
  476. package/node/sftp/file/download/index.d.ts +7 -7
  477. package/node/sftp/file/download/index.js +5 -5
  478. package/node/sftp/file/exists/index.d.ts +3 -3
  479. package/node/sftp/file/exists/index.js +3 -3
  480. package/node/sftp/file/index.d.ts +1 -1
  481. package/node/sftp/file/index.js +1 -1
  482. package/node/sftp/file/move/index.d.ts +7 -7
  483. package/node/sftp/file/move/index.js +7 -7
  484. package/node/sftp/file/remove/index.d.ts +4 -4
  485. package/node/sftp/file/remove/index.js +4 -4
  486. package/node/sftp/file/stat/index.d.ts +3 -3
  487. package/node/sftp/file/stat/index.js +6 -5
  488. package/node/sftp/file/upload/index.d.ts +6 -6
  489. package/node/sftp/file/upload/index.js +5 -5
  490. package/package.json +40 -39
@@ -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;
@@ -0,0 +1,155 @@
1
+ import { RepublicanMonth, ComplementaryDay, DecadeDay } from './types.js';
2
+ // Ordered lookup tables derived from the enums (declaration order).
3
+ /** The twelve month names, indexed by 0-based month index. */
4
+ export const MONTH_NAMES = Object.values(RepublicanMonth);
5
+ /** The six complementary day names, indexed by 0-based complementary index. */
6
+ export const COMPLEMENTARY_DAY_NAMES = Object.values(ComplementaryDay);
7
+ /** The ten décade day names, indexed by 0-based day-of-décade index. */
8
+ export const DECADE_DAY_NAMES = Object.values(DecadeDay);
9
+ // Paris Observatory meridian: 2°20'14" E ≈ +9m21s, expressed in days.
10
+ // The Republican astronomers used the Paris meridian to decide which civil day
11
+ // hosts the equinox, so we keep using it for every year.
12
+ const PARIS_MERIDIAN_OFFSET_DAYS = (2 + 20 / 60 + 14 / 3600) / 360;
13
+ const DEG_TO_RAD = Math.PI / 180;
14
+ // --- Julian Day -------------------------------------------------------------
15
+ /**
16
+ * Julian Day Number (integer, noon-based) for a proleptic Gregorian date.
17
+ *
18
+ * @param year - Gregorian year.
19
+ * @param month - Month, 1–12.
20
+ * @param day - Day of month, 1–31.
21
+ * @returns The Julian Day Number.
22
+ */
23
+ export function gregorianToJdn(year, month, day) {
24
+ const a = Math.floor((14 - month) / 12);
25
+ const y = year + 4800 - a;
26
+ const m = month + 12 * a - 3;
27
+ return (day
28
+ + Math.floor((153 * m + 2) / 5)
29
+ + 365 * y
30
+ + Math.floor(y / 4)
31
+ - Math.floor(y / 100)
32
+ + Math.floor(y / 400)
33
+ - 32045);
34
+ }
35
+ // --- Astronomy: September equinox (Meeus, "Astronomical Algorithms", ch. 27) --
36
+ // Periodic-term table 27.A: rows of [A, B (deg), C (deg)].
37
+ const EQUINOX_TERMS = [
38
+ [485, 324.96, 1934.136], [203, 337.23, 32964.467], [199, 342.08, 20.186],
39
+ [182, 27.85, 445267.112], [156, 73.14, 45036.886], [136, 171.52, 22518.443],
40
+ [77, 222.54, 65928.934], [74, 296.72, 3034.906], [70, 243.58, 9037.513],
41
+ [58, 119.81, 33718.147], [52, 297.17, 150.678], [50, 21.02, 2281.226],
42
+ [45, 247.54, 29929.562], [44, 325.15, 31555.956], [29, 60.93, 4443.417],
43
+ [18, 155.12, 67555.328], [17, 288.79, 4562.452], [16, 198.04, 62894.029],
44
+ [14, 199.76, 31436.921], [12, 95.39, 14577.848], [12, 287.11, 31931.756],
45
+ [12, 320.81, 34777.259], [9, 227.73, 1222.114], [8, 15.45, 16859.074]
46
+ ];
47
+ // Instant of the September equinox for a Gregorian year, as a Julian Ephemeris
48
+ // Day (JDE) in Dynamical Time (TD). Valid roughly for years 1000..3000.
49
+ function septemberEquinoxJde(year) {
50
+ const y = (year - 2000) / 1000;
51
+ const jde0 = 2451810.21715
52
+ + 365242.01767 * y
53
+ - 0.11575 * y * y
54
+ + 0.00337 * y * y * y
55
+ + 0.00078 * y * y * y * y;
56
+ const t = (jde0 - 2451545.0) / 36525;
57
+ const w = (35999.373 * t - 2.47) * DEG_TO_RAD;
58
+ const deltaLambda = 1 + 0.0334 * Math.cos(w) + 0.0007 * Math.cos(2 * w);
59
+ let s = 0;
60
+ for (const [a, b, c] of EQUINOX_TERMS) {
61
+ s += a * Math.cos((b + c * t) * DEG_TO_RAD);
62
+ }
63
+ return jde0 + (0.00001 * s) / deltaLambda;
64
+ }
65
+ // TD - UT, in seconds. Espenak & Meeus (2006) polynomial approximations,
66
+ // covering the range that matters here (18th–22nd century) with a parabolic
67
+ // fallback outside it.
68
+ function deltaTSeconds(year) {
69
+ let t;
70
+ if (year >= 2005 && year < 2050) {
71
+ t = year - 2000;
72
+ return 62.92 + 0.32217 * t + 0.005589 * t * t;
73
+ }
74
+ if (year >= 1986 && year < 2005) {
75
+ t = year - 2000;
76
+ return (63.86 + 0.3345 * t - 0.060374 * t * t + 0.0017275 * t ** 3
77
+ + 0.000651814 * t ** 4 + 0.00002373599 * t ** 5);
78
+ }
79
+ if (year >= 1961 && year < 1986) {
80
+ t = year - 1975;
81
+ return 45.45 + 1.067 * t - (t * t) / 260 - (t ** 3) / 718;
82
+ }
83
+ if (year >= 1941 && year < 1961) {
84
+ t = year - 1950;
85
+ return 29.07 + 0.407 * t - (t * t) / 233 + (t ** 3) / 2547;
86
+ }
87
+ if (year >= 1920 && year < 1941) {
88
+ t = year - 1920;
89
+ return 21.20 + 0.84493 * t - 0.076100 * t * t + 0.0020936 * t ** 3;
90
+ }
91
+ if (year >= 1900 && year < 1920) {
92
+ t = year - 1900;
93
+ return (-2.79 + 1.494119 * t - 0.0598939 * t * t
94
+ + 0.0061966 * t ** 3 - 0.000197 * t ** 4);
95
+ }
96
+ if (year >= 1860 && year < 1900) {
97
+ t = year - 1860;
98
+ return (7.62 + 0.5737 * t - 0.251754 * t * t + 0.01680668 * t ** 3
99
+ - 0.0004473624 * t ** 4 + (t ** 5) / 233174);
100
+ }
101
+ if (year >= 1800 && year < 1860) {
102
+ t = year - 1800;
103
+ return (13.72 - 0.332447 * t + 0.0068612 * t * t + 0.0041116 * t ** 3
104
+ - 0.00037436 * t ** 4 + 0.0000121272 * t ** 5
105
+ - 0.0000001699 * t ** 6 + 0.000000000875 * t ** 7);
106
+ }
107
+ if (year >= 1700 && year < 1800) {
108
+ t = year - 1700;
109
+ return 8.83 + 0.1603 * t - 0.0059285 * t * t + 0.00013336 * t ** 3 - (t ** 4) / 1174000;
110
+ }
111
+ if (year >= 2050 && year < 2150) {
112
+ return -20 + 32 * ((year - 1820) / 100) ** 2 - 0.5628 * (2150 - year);
113
+ }
114
+ const u = (year - 1820) / 100;
115
+ return -20 + 32 * u * u;
116
+ }
117
+ /**
118
+ * JDN of 1 Vendémiaire — the civil day (Paris meridian) hosting the September
119
+ * equinox of the given Gregorian year.
120
+ *
121
+ * @param gregorianYear - The Gregorian year whose equinox opens the Republican year.
122
+ * @returns The Julian Day Number of that year's 1 Vendémiaire.
123
+ */
124
+ export function republicanYearStartJdn(gregorianYear) {
125
+ const jde = septemberEquinoxJde(gregorianYear); // TD
126
+ const ut = jde - deltaTSeconds(gregorianYear) / 86400;
127
+ const parisMeanTime = ut + PARIS_MERIDIAN_OFFSET_DAYS;
128
+ return Math.floor(parisMeanTime + 0.5);
129
+ }
130
+ // --- Roman numerals (years were written in Roman numerals: "an VIII") --------
131
+ /**
132
+ * Formats a positive integer as a Roman numeral. Non-positive inputs are
133
+ * returned as their decimal string.
134
+ *
135
+ * @param n - The number to format.
136
+ * @returns The Roman numeral (e.g. `8` -> `'VIII'`).
137
+ */
138
+ export function toRoman(n) {
139
+ if (n <= 0)
140
+ return String(n);
141
+ const table = [
142
+ [1000, 'M'], [900, 'CM'], [500, 'D'], [400, 'CD'],
143
+ [100, 'C'], [90, 'XC'], [50, 'L'], [40, 'XL'],
144
+ [10, 'X'], [9, 'IX'], [5, 'V'], [4, 'IV'], [1, 'I']
145
+ ];
146
+ let remaining = n;
147
+ let result = '';
148
+ for (const [value, symbol] of table) {
149
+ while (remaining >= value) {
150
+ result += symbol;
151
+ remaining -= value;
152
+ }
153
+ }
154
+ return result;
155
+ }
@@ -41,6 +41,7 @@ export class Duration {
41
41
  else if (type === 'mo' || type === 'mth' || type === 'months') {
42
42
  this.type = 'months';
43
43
  }
44
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
44
45
  else if (type === 'y' || type === 'years') {
45
46
  this.type = 'years';
46
47
  }
@@ -64,6 +65,7 @@ export class Duration {
64
65
  return this.value * 1000 * 60 * 60 * 24 * 7;
65
66
  if (this.type === 'months')
66
67
  return this.value * 1000 * 60 * 60 * 24 * 30;
68
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
67
69
  if (this.type === 'years')
68
70
  return this.value * 1000 * 60 * 60 * 24 * 365;
69
71
  return this.value; // defaults to milliseconds
@@ -1,5 +1,5 @@
1
+ export * as dates from './dates/index.js'
1
2
  export * as duration from './duration/index.js'
3
+ export * as timeout from './timeout/index.js'
2
4
  export * as transitions from './transitions/index.js'
3
5
  export * as wait from './wait/index.js'
4
- export * as timeout from './timeout/index.js'
5
- export * as dates from './dates/index.js'
@@ -1,5 +1,5 @@
1
+ export * as dates from './dates/index.js'
1
2
  export * as duration from './duration/index.js'
3
+ export * as timeout from './timeout/index.js'
2
4
  export * as transitions from './transitions/index.js'
3
5
  export * as wait from './wait/index.js'
4
- export * as timeout from './timeout/index.js'
5
- export * as dates from './dates/index.js'
@@ -8,18 +8,18 @@
8
8
  */
9
9
  export async function timeout(timeoutMs, callback) {
10
10
  let hasRejected = false;
11
- // eslint-disable-next-line @typescript-eslint/no-misused-promises, no-async-promise-executor
12
- return await new Promise(async (resolve, reject) => {
11
+ return await new Promise((resolve, reject) => {
13
12
  const rejectTimeout = setTimeout(() => {
14
- // eslint-disable-next-line prefer-promise-reject-errors
13
+ // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
15
14
  reject(false);
16
15
  hasRejected = true;
17
16
  }, timeoutMs);
18
- // eslint-disable-next-line @typescript-eslint/await-thenable
19
- const callbackResult = await callback();
20
- if (hasRejected)
21
- return;
22
- clearTimeout(rejectTimeout);
23
- return resolve(callbackResult);
17
+ void (async () => {
18
+ const callbackResult = await callback();
19
+ if (hasRejected)
20
+ return;
21
+ clearTimeout(rejectTimeout);
22
+ resolve(callbackResult);
23
+ })();
24
24
  });
25
25
  }
@@ -89,13 +89,14 @@ const c5 = (2 * PI) / 4.5;
89
89
  const bounceOut = function (x) {
90
90
  const n1 = 7.5625;
91
91
  const d1 = 2.75;
92
- if (x < 1 / d1)
93
- return n1 * x * x;
94
- if (x < 2 / d1)
95
- return n1 * (x -= 1.5 / d1) * x + 0.75;
96
- if (x < 2.5 / d1)
97
- return n1 * (x -= 2.25 / d1) * x + 0.9375;
98
- return n1 * (x -= 2.625 / d1) * x + 0.984375;
92
+ let t = x;
93
+ if (t < 1 / d1)
94
+ return n1 * t * t;
95
+ if (t < 2 / d1)
96
+ return n1 * (t -= 1.5 / d1) * t + 0.75;
97
+ if (t < 2.5 / d1)
98
+ return n1 * (t -= 2.25 / d1) * t + 0.9375;
99
+ return n1 * (t -= 2.625 / d1) * t + 0.984375;
99
100
  };
100
101
  /**
101
102
  * Predefined easing functions used internally by transitions.
@@ -32,6 +32,7 @@ import cssModule from './styles.module.css';
32
32
  * @returns A split-panel container with pointer interaction handlers and ratio state applied.
33
33
  */
34
34
  export const BeforeAfterControlled = ({ mode = 'horizontal', ratio = 0, before, after, className, children, actionHandlers }) => {
35
+ // eslint-disable-next-line no-param-reassign
35
36
  ratio = clamp(ratio, 0, 1);
36
37
  // State & refs
37
38
  const rootRef = useRef(null);
@@ -26,7 +26,9 @@ export const BeforeAfter = ({ mode = 'horizontal', actionHandlers, stateHandlers
26
26
  const isControlled = ratio !== undefined;
27
27
  const effectiveRatio = isControlled ? ratio : internalRatio;
28
28
  const handleDrag = (x, y) => {
29
+ // eslint-disable-next-line no-param-reassign
29
30
  x = 1.02 * x - 0.01;
31
+ // eslint-disable-next-line no-param-reassign
30
32
  y = 1.02 * y - 0.01;
31
33
  actionHandlers?.dragged?.(x, y);
32
34
  if (!isControlled) {
@@ -35,7 +37,9 @@ export const BeforeAfter = ({ mode = 'horizontal', actionHandlers, stateHandlers
35
37
  }
36
38
  };
37
39
  const handleClick = (x, y) => {
40
+ // eslint-disable-next-line no-param-reassign
38
41
  x = 1.02 * x - 0.01;
42
+ // eslint-disable-next-line no-param-reassign
39
43
  y = 1.02 * y - 0.01;
40
44
  actionHandlers?.clicked?.(x, y);
41
45
  if (!isControlled) {
@@ -1,4 +1,4 @@
1
- import { type FunctionComponent, type ButtonHTMLAttributes } from 'react';
1
+ import type { FunctionComponent, ButtonHTMLAttributes } from 'react';
2
2
  import type { WithClassName } from '../utils/types.js';
3
3
  /**
4
4
  * Props for the {@link Button} component.
@@ -51,6 +51,7 @@ export const Clippable = ({ className, children, toClip, actionHandlers, stateHa
51
51
  ]);
52
52
  }
53
53
  catch (err) {
54
+ // eslint-disable-next-line no-console
54
55
  console.error(err);
55
56
  }
56
57
  stateHandlers?.clipped?.(html);
@@ -49,7 +49,7 @@ export const Drawer = ({ openerContent, closerContent, initialIsOpened = false,
49
49
  setInternalIsOpened(false);
50
50
  };
51
51
  const handleROCompResize = ({ entry }) => {
52
- const { width, height } = entry?.contentRect ?? {};
52
+ const { width, height } = entry.contentRect;
53
53
  setContentDimensions({ width, height });
54
54
  };
55
55
  // Rendering