@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.
- package/agnostic/arrays/find-duplicates/index.d.ts +1 -1
- package/agnostic/arrays/find-duplicates/index.js +3 -2
- package/agnostic/arrays/is-array-of/index.d.ts +1 -1
- package/agnostic/arrays/is-array-of/index.js +3 -1
- package/agnostic/arrays/make/index.d.ts +1 -1
- package/agnostic/arrays/random-pick/index.js +2 -1
- package/agnostic/arrays/shuffle/index.js +1 -1
- package/agnostic/booleans/is-falsy/index.d.ts +3 -3
- package/agnostic/booleans/is-falsy/index.js +2 -3
- package/agnostic/colors/channels/index.d.ts +16 -16
- package/agnostic/colors/channels/index.js +15 -15
- package/agnostic/colors/contrast/index.d.ts +6 -6
- package/agnostic/colors/contrast/index.js +6 -8
- package/agnostic/colors/contrast/index.test.js +1 -1
- package/agnostic/colors/convert/index.d.ts +43 -43
- package/agnostic/colors/convert/index.js +60 -55
- package/agnostic/colors/distance/index.d.ts +5 -5
- package/agnostic/colors/distance/index.js +5 -4
- package/agnostic/colors/grayscale/index.d.ts +3 -3
- package/agnostic/colors/grayscale/index.js +3 -3
- package/agnostic/colors/index.d.ts +1 -1
- package/agnostic/colors/index.js +1 -1
- package/agnostic/colors/invert/index.d.ts +4 -4
- package/agnostic/colors/invert/index.js +3 -3
- package/agnostic/colors/lerp/index.d.ts +6 -7
- package/agnostic/colors/lerp/index.js +5 -6
- package/agnostic/colors/luminance/index.d.ts +4 -4
- package/agnostic/colors/luminance/index.js +3 -3
- package/agnostic/colors/palette/index.d.ts +3 -3
- package/agnostic/colors/palette/index.js +4 -3
- package/agnostic/colors/rotate/index.d.ts +4 -4
- package/agnostic/colors/rotate/index.js +4 -4
- package/agnostic/colors/tidy/index.d.ts +2 -2
- package/agnostic/colors/tidy/index.js +2 -2
- package/agnostic/colors/typechecks/index.d.ts +21 -21
- package/agnostic/colors/typechecks/index.js +22 -21
- package/agnostic/colors/types.d.ts +33 -33
- package/agnostic/css/bem/index.d.ts +11 -11
- package/agnostic/css/bem/index.js +9 -8
- package/agnostic/css/clss/index.d.ts +1 -1
- package/agnostic/css/clss/index.js +1 -1
- package/agnostic/css/index.d.ts +1 -1
- package/agnostic/css/index.js +1 -1
- package/agnostic/css/is-valid-css-class-name/index.d.ts +2 -2
- package/agnostic/css/is-valid-css-class-name/index.js +3 -3
- package/agnostic/css/scale/index.d.ts +18 -18
- package/agnostic/css/scale/index.js +18 -18
- package/agnostic/css/styles-set/index.d.ts +1 -1
- package/agnostic/css/styles-set/index.js +0 -2
- package/agnostic/errors/register/index.d.ts +1 -1
- package/agnostic/errors/register/index.js +3 -0
- package/agnostic/errors/unknown-to-string/index.d.ts +2 -2
- package/agnostic/errors/unknown-to-string/index.js +2 -3
- package/agnostic/html/deep-select/index.d.ts +3 -3
- package/agnostic/html/deep-select/index.js +11 -7
- package/agnostic/html/get-node-ancestors/index.d.ts +3 -3
- package/agnostic/html/get-node-ancestors/index.js +3 -3
- package/agnostic/html/get-position-inside-parent/index.d.ts +2 -2
- package/agnostic/html/get-position-inside-parent/index.js +2 -2
- package/agnostic/html/hyper-json/cast/index.d.ts +1 -1
- package/agnostic/html/hyper-json/cast/index.js +6 -5
- package/agnostic/html/hyper-json/method/index.d.ts +2 -2
- package/agnostic/html/hyper-json/serialize/index.d.ts +1 -1
- package/agnostic/html/hyper-json/serialize/index.js +9 -5
- package/agnostic/html/hyper-json/smart-tags/coalesced/addclass/index.js +1 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/and/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/append/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/append/index.js +1 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/at/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/at/index.js +1 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/call/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/call/index.js +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/clone/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/deleteproperties/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/deleteproperties/index.js +0 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/equals/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/getattribute/index.js +1 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/getproperties/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/getproperty/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/getproperty/index.js +1 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/hjparse/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/hjstringify/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/hjstringify/index.js +4 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/if/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/if/index.js +1 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/index.d.ts +11 -11
- package/agnostic/html/hyper-json/smart-tags/coalesced/index.js +11 -11
- package/agnostic/html/hyper-json/smart-tags/coalesced/initialize/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/initialize/index.js +1 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/join/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/length/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/map/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/or/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/pickrandom/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/populate/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/populate/index.js +1 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/print/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/print/index.js +2 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/push/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/pusheach/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/pusheach/index.js +1 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/recordtoarray/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/removeattribute/index.js +3 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/removeclass/index.js +1 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/renameproperty/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/renameproperty/index.js +1 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/replace/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/replace/index.js +1 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/select/index.js +1 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/set/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/set/index.js +1 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/setattribute/index.js +3 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/setproperty/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/setproperty/index.js +4 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/sorton/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/sorton/index.js +5 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/spread/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/spread/index.js +1 -0
- package/agnostic/html/hyper-json/smart-tags/coalesced/toarray/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/toboolean/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/toelement/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/toggleclass/index.js +3 -2
- package/agnostic/html/hyper-json/smart-tags/coalesced/tonodelist/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/tonull/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/tonumber/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/torecord/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/toref/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/tostring/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/totext/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/transformselected/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/coalesced/trim/index.js +1 -1
- package/agnostic/html/hyper-json/smart-tags/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/isolated/any/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/isolated/array/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/isolated/get/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/isolated/guess/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/isolated/guess/index.js +3 -1
- package/agnostic/html/hyper-json/smart-tags/isolated/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/isolated/index.js +1 -1
- package/agnostic/html/hyper-json/smart-tags/isolated/nodelist/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/isolated/nodelist/index.js +1 -0
- package/agnostic/html/hyper-json/smart-tags/isolated/null/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/isolated/record/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/isolated/ref/index.d.ts +1 -1
- package/agnostic/html/hyper-json/smart-tags/isolated/ref/index.js +3 -1
- package/agnostic/html/hyper-json/smart-tags/isolated/text/index.js +2 -2
- package/agnostic/html/hyper-json/transformer/index.d.ts +5 -5
- package/agnostic/html/hyper-json/tree/index.d.ts +1 -1
- package/agnostic/html/hyper-json/tree/index.js +14 -8
- package/agnostic/html/hyper-json/types/index.d.ts +11 -11
- package/agnostic/html/hyper-json/utils/index.d.ts +3 -3
- package/agnostic/html/hyper-json/utils/index.js +8 -3
- package/agnostic/html/index.d.ts +1 -1
- package/agnostic/html/index.js +1 -1
- package/agnostic/html/insert-node/index.d.ts +4 -4
- package/agnostic/html/insert-node/index.js +4 -4
- package/agnostic/html/replace-in-element/index.d.ts +3 -3
- package/agnostic/html/replace-in-element/index.js +4 -4
- package/agnostic/html/selector-to-element/index.d.ts +2 -2
- package/agnostic/html/selector-to-element/index.js +11 -11
- package/agnostic/html/string-to-nodes/index.d.ts +3 -3
- package/agnostic/html/string-to-nodes/index.js +3 -3
- package/agnostic/html/watch-selection/index.d.ts +4 -5
- package/agnostic/html/watch-selection/index.js +5 -6
- package/agnostic/misc/assert/index.js +3 -1
- package/agnostic/misc/cast/index.d.ts +16 -16
- package/agnostic/misc/cast/index.js +18 -18
- package/agnostic/misc/connection/index.d.ts +5 -5
- package/agnostic/misc/connection/index.js +4 -2
- package/agnostic/misc/crawler/index.d.ts +18 -18
- package/agnostic/misc/crawler/index.js +10 -9
- package/agnostic/misc/crawler/index.test.js +2 -2
- package/agnostic/misc/crossenv/detect-runtime/index.d.ts +1 -1
- package/agnostic/misc/crossenv/detect-runtime/index.js +10 -11
- package/agnostic/misc/crossenv/window/index.d.ts +6 -6
- package/agnostic/misc/crossenv/window/index.js +6 -5
- package/agnostic/misc/data-size/index.js +2 -0
- package/agnostic/misc/index.d.ts +3 -3
- package/agnostic/misc/index.js +3 -3
- package/agnostic/misc/is-constructor-function/index.d.ts +2 -2
- package/agnostic/misc/is-constructor-function/index.js +3 -2
- package/agnostic/misc/is-constructor-function/index.test.js +2 -2
- package/agnostic/misc/is-nullish/index.d.ts +5 -5
- package/agnostic/misc/is-nullish/index.js +5 -4
- package/agnostic/misc/logs/index.d.ts +1 -1
- package/agnostic/misc/logs/index.js +1 -1
- package/agnostic/misc/logs/logger/index.js +2 -2
- package/agnostic/misc/lorem-ipsum/index.js +4 -4
- package/agnostic/misc/normalize-extension/index.d.ts +3 -3
- package/agnostic/misc/normalize-extension/index.js +4 -4
- package/agnostic/misc/outcome/index.d.ts +14 -14
- package/agnostic/misc/outcome/index.js +6 -4
- package/agnostic/numbers/absolute-modulo/index.d.ts +3 -3
- package/agnostic/numbers/absolute-modulo/index.js +3 -3
- package/agnostic/numbers/approximate-rational/index.d.ts +6 -6
- package/agnostic/numbers/approximate-rational/index.js +9 -9
- package/agnostic/numbers/clamp/index.d.ts +4 -4
- package/agnostic/numbers/clamp/index.js +4 -4
- package/agnostic/numbers/geometric-progressions/index.d.ts +5 -5
- package/agnostic/numbers/geometric-progressions/index.js +7 -5
- package/agnostic/numbers/geometric-progressions/index.test.js +2 -2
- package/agnostic/numbers/index.d.ts +1 -1
- package/agnostic/numbers/index.js +1 -1
- package/agnostic/numbers/interpolate/index.d.ts +8 -8
- package/agnostic/numbers/interpolate/index.js +8 -8
- package/agnostic/numbers/round/index.d.ts +9 -9
- package/agnostic/numbers/round/index.js +9 -9
- package/agnostic/objects/deep-get-property/index.d.ts +4 -4
- package/agnostic/objects/deep-get-property/index.js +3 -3
- package/agnostic/objects/enums/is-in-enum/index.d.ts +3 -3
- package/agnostic/objects/enums/is-in-enum/index.js +3 -3
- package/agnostic/objects/flatten-getters/index.d.ts +2 -2
- package/agnostic/objects/flatten-getters/index.js +3 -2
- package/agnostic/objects/index.d.ts +1 -1
- package/agnostic/objects/index.js +1 -1
- package/agnostic/objects/is-object/index.d.ts +4 -4
- package/agnostic/objects/is-object/index.js +4 -4
- package/agnostic/objects/is-record/index.d.ts +2 -2
- package/agnostic/objects/is-record/index.js +2 -2
- package/agnostic/objects/record-format/index.d.ts +9 -9
- package/agnostic/objects/record-format/index.js +8 -3
- package/agnostic/objects/record-map/index.d.ts +4 -4
- package/agnostic/objects/record-map/index.js +5 -3
- package/agnostic/objects/sort-keys/index.d.ts +3 -3
- package/agnostic/objects/sort-keys/index.js +4 -3
- package/agnostic/objects/validation/index.d.ts +3 -3
- package/agnostic/objects/validation/index.js +4 -3
- package/agnostic/optim/memoize/index.d.ts +2 -2
- package/agnostic/optim/memoize/index.js +4 -2
- package/agnostic/optim/throttle-debounce/index.d.ts +2 -2
- package/agnostic/optim/throttle-debounce/index.js +7 -6
- package/agnostic/optim/throttle-debounce/types.d.ts +2 -1
- package/agnostic/random/random/index.d.ts +7 -8
- package/agnostic/random/random/index.js +3 -3
- package/agnostic/random/uuid/index.d.ts +6 -6
- package/agnostic/random/uuid/index.js +6 -6
- package/agnostic/regexps/index.d.ts +30 -60
- package/agnostic/regexps/index.js +27 -26
- package/agnostic/sanitization/file-name/index.d.ts +3 -3
- package/agnostic/sanitization/file-name/index.js +10 -10
- package/agnostic/sanitization/html/index.d.ts +6 -6
- package/agnostic/sanitization/html/index.js +9 -6
- package/agnostic/sanitization/path/index.d.ts +2 -2
- package/agnostic/sanitization/path/index.js +2 -2
- package/agnostic/sanitization/user-input/index.js +1 -0
- package/agnostic/strings/char-codes/index.js +2 -6
- package/agnostic/strings/index.d.ts +1 -1
- package/agnostic/strings/index.js +1 -1
- package/agnostic/strings/normalize-indent/index.js +2 -2
- package/agnostic/strings/parse-table/index.d.ts +13 -13
- package/agnostic/strings/parse-table/index.js +31 -16
- package/agnostic/strings/replace-all/index.d.ts +1 -1
- package/agnostic/strings/replace-all/index.js +1 -0
- package/agnostic/strings/to-alphanum/index.js +2 -2
- package/agnostic/strings/trim/index.js +2 -2
- package/agnostic/time/dates/format-date/index.js +3 -1
- package/agnostic/time/dates/index.d.ts +1 -0
- package/agnostic/time/dates/index.js +1 -0
- package/agnostic/time/dates/to-french-republican/index.d.ts +16 -0
- package/agnostic/time/dates/to-french-republican/index.js +82 -0
- package/agnostic/time/dates/to-french-republican/index.test.d.ts +1 -0
- package/agnostic/time/dates/to-french-republican/index.test.js +112 -0
- package/agnostic/time/dates/to-french-republican/types.d.ts +91 -0
- package/agnostic/time/dates/to-french-republican/types.js +47 -0
- package/agnostic/time/dates/to-french-republican/utils.d.ts +32 -0
- package/agnostic/time/dates/to-french-republican/utils.js +155 -0
- package/agnostic/time/duration/index.js +2 -0
- package/agnostic/time/index.d.ts +2 -2
- package/agnostic/time/index.js +2 -2
- package/agnostic/time/timeout/index.js +9 -9
- package/agnostic/time/transitions/index.js +8 -7
- package/components/BeforeAfter/index.controlled.js +1 -0
- package/components/BeforeAfter/index.js +4 -0
- package/components/Button/index.d.ts +2 -7
- package/components/Button/index.js +2 -2
- package/components/Clippable/index.js +1 -0
- package/components/Drawer/index.js +1 -1
- package/components/Gallery/index.js +2 -1
- package/components/Gallery/utils.js +5 -1
- package/components/Iframe/index.d.ts +16 -34
- package/components/Iframe/index.js +70 -27
- package/components/Image/index.js +2 -0
- package/components/Input/index.controlled.d.ts +42 -0
- package/components/Input/index.controlled.js +54 -0
- package/components/Input/index.d.ts +21 -17
- package/components/Input/index.js +27 -18
- package/components/IntersectionObserver/index.js +5 -2
- package/components/JsonEditor/index.js +1 -1
- package/components/Overlayer/index.d.ts +1 -1
- package/components/ScrollListener/utils.d.ts +29 -0
- package/components/Select/index.controlled.d.ts +43 -0
- package/components/Select/index.controlled.js +54 -0
- package/components/Select/index.d.ts +22 -18
- package/components/Select/index.js +27 -18
- package/components/Sequencer/index.controlled.js +1 -1
- package/components/Subtitles/index.js +3 -1
- package/components/Subtitles/types.d.ts +14 -0
- package/components/Subtitles/utils.d.ts +19 -15
- package/components/Subtitles/utils.js +29 -24
- package/components/Textarea/index.controlled.d.ts +50 -0
- package/components/Textarea/index.controlled.js +75 -0
- package/components/Textarea/index.d.ts +22 -17
- package/components/Textarea/index.js +27 -18
- package/components/UIModule/index.js +3 -1
- package/components/Video/index.controlled.d.ts +1 -1
- package/components/Video/index.controlled.js +11 -10
- package/components/Video/index.js +27 -20
- package/components/Video/utils.d.ts +1 -1
- package/components/Video/utils.js +11 -2
- package/components/index.d.ts +1 -1
- package/components/index.js +1 -1
- package/components/utils/types.d.ts +5 -0
- package/node/@aws-s3/storage/directory/copy-dir/index.d.ts +9 -9
- package/node/@aws-s3/storage/directory/copy-dir/index.js +15 -12
- package/node/@aws-s3/storage/directory/index.d.ts +1 -1
- package/node/@aws-s3/storage/directory/index.js +1 -1
- package/node/@aws-s3/storage/directory/list/index.d.ts +5 -5
- package/node/@aws-s3/storage/directory/list/index.js +5 -5
- package/node/@aws-s3/storage/directory/move-dir/index.d.ts +6 -6
- package/node/@aws-s3/storage/directory/move-dir/index.js +11 -7
- package/node/@aws-s3/storage/directory/remove-dir/index.d.ts +5 -5
- package/node/@aws-s3/storage/directory/remove-dir/index.js +5 -5
- package/node/@aws-s3/storage/file/copy/index.d.ts +8 -8
- package/node/@aws-s3/storage/file/copy/index.js +12 -9
- package/node/@aws-s3/storage/file/download/index.d.ts +6 -6
- package/node/@aws-s3/storage/file/download/index.js +6 -5
- package/node/@aws-s3/storage/file/exists/index.d.ts +6 -6
- package/node/@aws-s3/storage/file/exists/index.js +15 -12
- package/node/@aws-s3/storage/file/index.d.ts +1 -1
- package/node/@aws-s3/storage/file/index.js +1 -1
- package/node/@aws-s3/storage/file/move/index.d.ts +9 -9
- package/node/@aws-s3/storage/file/move/index.js +18 -15
- package/node/@aws-s3/storage/file/remove/index.d.ts +5 -5
- package/node/@aws-s3/storage/file/remove/index.js +16 -11
- package/node/@aws-s3/storage/file/stat/index.d.ts +5 -5
- package/node/@aws-s3/storage/file/stat/index.js +10 -7
- package/node/@aws-s3/storage/file/upload/index.d.ts +7 -7
- package/node/@aws-s3/storage/file/upload/index.js +11 -9
- package/node/@express/@multer/index.d.ts +12 -12
- package/node/@express/@multer/index.js +27 -25
- package/node/@google-cloud/storage/bucket/get-metadata/index.d.ts +4 -4
- package/node/@google-cloud/storage/bucket/get-metadata/index.js +3 -3
- package/node/@google-cloud/storage/directory/copy-dir/index.d.ts +7 -7
- package/node/@google-cloud/storage/directory/copy-dir/index.js +6 -6
- package/node/@google-cloud/storage/directory/index.d.ts +1 -1
- package/node/@google-cloud/storage/directory/index.js +1 -1
- package/node/@google-cloud/storage/directory/list/index.d.ts +6 -6
- package/node/@google-cloud/storage/directory/list/index.js +5 -5
- package/node/@google-cloud/storage/directory/move-dir/index.d.ts +6 -6
- package/node/@google-cloud/storage/directory/move-dir/index.js +5 -5
- package/node/@google-cloud/storage/directory/remove-dir/index.d.ts +7 -7
- package/node/@google-cloud/storage/directory/remove-dir/index.js +6 -6
- package/node/@google-cloud/storage/file/copy/index.d.ts +9 -9
- package/node/@google-cloud/storage/file/copy/index.js +8 -8
- package/node/@google-cloud/storage/file/download/index.d.ts +7 -7
- package/node/@google-cloud/storage/file/download/index.js +5 -5
- package/node/@google-cloud/storage/file/exists/index.d.ts +7 -7
- package/node/@google-cloud/storage/file/exists/index.js +6 -6
- package/node/@google-cloud/storage/file/generate-signed-url/index.d.ts +7 -7
- package/node/@google-cloud/storage/file/generate-signed-url/index.js +6 -6
- package/node/@google-cloud/storage/file/get-metadata/index.d.ts +5 -5
- package/node/@google-cloud/storage/file/get-metadata/index.js +4 -4
- package/node/@google-cloud/storage/file/get-permissions/index.d.ts +6 -6
- package/node/@google-cloud/storage/file/get-permissions/index.js +4 -4
- package/node/@google-cloud/storage/file/index.d.ts +1 -1
- package/node/@google-cloud/storage/file/index.js +1 -1
- package/node/@google-cloud/storage/file/move/index.d.ts +10 -10
- package/node/@google-cloud/storage/file/move/index.js +9 -9
- package/node/@google-cloud/storage/file/remove/index.d.ts +5 -5
- package/node/@google-cloud/storage/file/remove/index.js +4 -4
- package/node/@google-cloud/storage/file/revoke-signed-urls/index.d.ts +5 -5
- package/node/@google-cloud/storage/file/revoke-signed-urls/index.js +5 -5
- package/node/@google-cloud/storage/file/stat/index.d.ts +5 -5
- package/node/@google-cloud/storage/file/stat/index.js +4 -4
- package/node/@google-cloud/storage/file/update-metadata/index.d.ts +7 -7
- package/node/@google-cloud/storage/file/update-metadata/index.js +5 -5
- package/node/@google-cloud/storage/file/upload/index.d.ts +7 -7
- package/node/@google-cloud/storage/file/upload/index.js +5 -5
- package/node/@google-cloud/storage/index.d.ts +1 -1
- package/node/@google-cloud/storage/index.js +1 -1
- package/node/cloud-storage/clients/index.d.ts +8 -8
- package/node/cloud-storage/clients/index.js +8 -8
- package/node/cloud-storage/operations/copy-dir/index.d.ts +22 -22
- package/node/cloud-storage/operations/copy-dir/index.js +5 -5
- package/node/cloud-storage/operations/copy-file/index.d.ts +22 -22
- package/node/cloud-storage/operations/copy-file/index.js +5 -5
- package/node/cloud-storage/operations/download-file/index.d.ts +19 -19
- package/node/cloud-storage/operations/download-file/index.js +6 -6
- package/node/cloud-storage/operations/exists-file/index.d.ts +15 -26
- package/node/cloud-storage/operations/exists-file/index.js +4 -4
- package/node/cloud-storage/operations/index.d.ts +1 -1
- package/node/cloud-storage/operations/index.js +1 -1
- package/node/cloud-storage/operations/list-dir/index.d.ts +15 -25
- package/node/cloud-storage/operations/list-dir/index.js +4 -4
- package/node/cloud-storage/operations/move-dir/index.d.ts +22 -22
- package/node/cloud-storage/operations/move-dir/index.js +5 -5
- package/node/cloud-storage/operations/move-file/index.d.ts +22 -22
- package/node/cloud-storage/operations/move-file/index.js +5 -5
- package/node/cloud-storage/operations/remove-dir/index.d.ts +18 -18
- package/node/cloud-storage/operations/remove-dir/index.js +4 -4
- package/node/cloud-storage/operations/remove-file/index.d.ts +18 -18
- package/node/cloud-storage/operations/remove-file/index.js +4 -4
- package/node/cloud-storage/operations/stat-file/index.d.ts +16 -16
- package/node/cloud-storage/operations/stat-file/index.js +4 -4
- package/node/cloud-storage/operations/upload-file/index.d.ts +23 -23
- package/node/cloud-storage/operations/upload-file/index.js +5 -5
- package/node/encryption/@aes-256-gcm/buffer/index.d.ts +6 -6
- package/node/encryption/@aes-256-gcm/buffer/index.js +6 -6
- package/node/encryption/@aes-256-gcm/uint8-array/index.d.ts +8 -8
- package/node/encryption/@aes-256-gcm/uint8-array/index.js +8 -8
- package/node/encryption/key/index.d.ts +6 -6
- package/node/encryption/key/index.js +6 -6
- package/node/files/read-write/index.d.ts +16 -16
- package/node/files/subpaths/index.d.ts +8 -8
- package/node/files/subpaths/index.js +11 -13
- package/node/ftps/directory/copy-dir/index.d.ts +6 -6
- package/node/ftps/directory/copy-dir/index.js +6 -6
- package/node/ftps/directory/list/index.d.ts +4 -4
- package/node/ftps/directory/list/index.js +3 -3
- package/node/ftps/directory/move-dir/index.d.ts +6 -6
- package/node/ftps/directory/move-dir/index.js +5 -5
- package/node/ftps/directory/remove-dir/index.d.ts +6 -6
- package/node/ftps/directory/remove-dir/index.js +8 -7
- package/node/ftps/file/copy/index.d.ts +6 -6
- package/node/ftps/file/copy/index.js +5 -5
- package/node/ftps/file/download/index.d.ts +6 -6
- package/node/ftps/file/download/index.js +5 -5
- package/node/ftps/file/exists/index.d.ts +3 -3
- package/node/ftps/file/exists/index.js +3 -3
- package/node/ftps/file/move/index.d.ts +8 -8
- package/node/ftps/file/move/index.js +11 -9
- package/node/ftps/file/remove/index.d.ts +5 -5
- package/node/ftps/file/remove/index.js +4 -4
- package/node/ftps/file/stat/index.d.ts +4 -4
- package/node/ftps/file/stat/index.js +4 -4
- package/node/ftps/file/upload/index.d.ts +7 -7
- package/node/ftps/file/upload/index.js +5 -5
- package/node/images/create/index.d.ts +2 -2
- package/node/images/create/index.js +1 -1
- package/node/images/format/index.d.ts +8 -8
- package/node/images/metadata/index.d.ts +2 -2
- package/node/images/transform/index.d.ts +2 -2
- package/node/images/transform/index.js +12 -2
- package/node/images/transform/operations/blur/index.d.ts +2 -2
- package/node/images/transform/operations/blur/index.js +1 -0
- package/node/images/transform/operations/brighten/index.d.ts +2 -2
- package/node/images/transform/operations/brighten/index.js +1 -0
- package/node/images/transform/operations/extend/index.d.ts +2 -2
- package/node/images/transform/operations/extend/index.js +1 -0
- package/node/images/transform/operations/extract/index.d.ts +2 -2
- package/node/images/transform/operations/extract/index.js +1 -0
- package/node/images/transform/operations/flatten/index.d.ts +2 -2
- package/node/images/transform/operations/flatten/index.js +1 -0
- package/node/images/transform/operations/flip/index.d.ts +2 -2
- package/node/images/transform/operations/flip/index.js +1 -0
- package/node/images/transform/operations/flop/index.d.ts +2 -2
- package/node/images/transform/operations/flop/index.js +1 -0
- package/node/images/transform/operations/hue/index.d.ts +2 -2
- package/node/images/transform/operations/hue/index.js +1 -0
- package/node/images/transform/operations/index.d.ts +1 -1
- package/node/images/transform/operations/index.js +1 -1
- package/node/images/transform/operations/level/index.d.ts +2 -2
- package/node/images/transform/operations/level/index.js +1 -0
- package/node/images/transform/operations/lighten/index.d.ts +2 -2
- package/node/images/transform/operations/lighten/index.js +1 -0
- package/node/images/transform/operations/normalize/index.d.ts +2 -2
- package/node/images/transform/operations/normalize/index.js +1 -0
- package/node/images/transform/operations/overlay/index.d.ts +2 -2
- package/node/images/transform/operations/resize/index.d.ts +2 -2
- package/node/images/transform/operations/resize/index.js +1 -0
- package/node/images/transform/operations/rotate/index.d.ts +2 -2
- package/node/images/transform/operations/rotate/index.js +1 -0
- package/node/images/transform/operations/saturate/index.d.ts +2 -2
- package/node/images/transform/operations/saturate/index.js +1 -0
- package/node/images/types.d.ts +41 -2
- package/node/images/utils/index.d.ts +10 -5
- package/node/index.d.ts +1 -1
- package/node/index.js +1 -1
- package/node/process/on-exit/index.js +2 -4
- package/node/process/prompt-continue/index.d.ts +3 -3
- package/node/process/prompt-continue/index.js +4 -3
- package/node/process/spawner/index.js +7 -6
- package/node/sftp/directory/copy-dir/index.d.ts +6 -6
- package/node/sftp/directory/copy-dir/index.js +6 -6
- package/node/sftp/directory/list/index.d.ts +3 -3
- package/node/sftp/directory/list/index.js +4 -4
- package/node/sftp/directory/move-dir/index.d.ts +7 -7
- package/node/sftp/directory/move-dir/index.js +7 -7
- package/node/sftp/directory/remove-dir/index.d.ts +5 -5
- package/node/sftp/directory/remove-dir/index.js +8 -7
- package/node/sftp/file/copy/index.d.ts +6 -6
- package/node/sftp/file/copy/index.js +5 -5
- package/node/sftp/file/download/index.d.ts +7 -7
- package/node/sftp/file/download/index.js +5 -5
- package/node/sftp/file/exists/index.d.ts +3 -3
- package/node/sftp/file/exists/index.js +3 -3
- package/node/sftp/file/move/index.d.ts +7 -7
- package/node/sftp/file/move/index.js +7 -7
- package/node/sftp/file/remove/index.d.ts +4 -4
- package/node/sftp/file/remove/index.js +4 -4
- package/node/sftp/file/stat/index.d.ts +3 -3
- package/node/sftp/file/stat/index.js +6 -5
- package/node/sftp/file/upload/index.d.ts +6 -6
- package/node/sftp/file/upload/index.js +5 -5
- 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
|
|
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
|
|
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*/
|
|
26
|
+
const noIndentLines = lines.map(line => line.replace(/^\s*/igmv, ''));
|
|
27
27
|
const pipeReplacedLines = noIndentLines.map(line => {
|
|
28
|
-
const nbPipeCharsOnLineStart = line.match(/^\|+/
|
|
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
|
|
94
|
-
* @param
|
|
95
|
-
* @param
|
|
96
|
-
* @param
|
|
97
|
-
* @param
|
|
98
|
-
* @param
|
|
99
|
-
* @param
|
|
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
|
|
103
|
-
* @param
|
|
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
|
|
107
|
-
* @param
|
|
108
|
-
* @param
|
|
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
|
|
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 =>
|
|
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 =>
|
|
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
|
|
30
|
-
* @param
|
|
31
|
-
* @param
|
|
32
|
-
* @param
|
|
33
|
-
* @param
|
|
34
|
-
* @param
|
|
35
|
-
* @param
|
|
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
|
|
39
|
-
* @param
|
|
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
|
|
43
|
-
* @param
|
|
44
|
-
* @param
|
|
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
|
|
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:
|
|
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]/
|
|
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}+`, '
|
|
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 =
|
|
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
|
|
@@ -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 @@
|
|
|
1
|
+
export {};
|
|
@@ -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;
|