├── .circleci └── config.yml ├── .gitignore ├── .vscode ├── re.code-snippets └── tasks.json ├── LICENSE ├── README.md ├── bsconfig.json ├── lib ├── es6 │ └── src │ │ ├── DateFns.bs.js │ │ ├── Demo.bs.js │ │ ├── Helpers.bs.js │ │ └── ReasonDateFnsCurryHelpers.bs.js └── js │ └── src │ ├── DateFns.bs.js │ ├── Demo.bs.js │ └── ReasonDateFnsCurryHelpers.bs.js ├── package.json ├── renovate.json ├── src ├── DateFns.re ├── Demo.re └── ReasonDateFnsCurryHelpers.re └── yarn.lock /.circleci/config.yml: -------------------------------------------------------------------------------- 1 | version: 2.1 2 | executors: 3 | node: 4 | docker: 5 | - image: node:22.21.0 6 | working_directory: ~/reason-date-fns 7 | 8 | jobs: 9 | test: 10 | executor: node 11 | steps: 12 | - checkout 13 | - restore_cache: 14 | keys: 15 | - v1-deps-{{ .Branch }}-{{ checksum "yarn.lock" }} 16 | - v1-deps-{{ .Branch }} 17 | - v1-deps 18 | - run: 19 | name: Install Dependencies 20 | command: yarn install --frozen-lockfile 21 | - save_cache: 22 | key: v1-deps-{{ .Branch }}-{{ checksum "yarn.lock" }} 23 | paths: 24 | - ~/.cache 25 | - run: 26 | name: Check that nothing crashes 27 | command: yarn demo:test 28 | 29 | workflows: 30 | version: 2 31 | test-deploy: 32 | jobs: 33 | - test 34 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .merlin 3 | .bsb.lock 4 | npm-debug.log 5 | /lib/bs/ 6 | /node_modules/ 7 | bundle/ -------------------------------------------------------------------------------- /.vscode/re.code-snippets: -------------------------------------------------------------------------------- 1 | { 2 | "curry2": { 3 | "prefix": "curry2", 4 | "body": [ 5 | "[@bs.module \"date-fns/$1\"]", 6 | "external uncurried_$1: (. $2) => (. date) => $3 =\"default\"", 7 | "let $1 = curry2(uncurried_$1);", 8 | "", 9 | "$4" 10 | ] 11 | }, 12 | "locale": { 13 | "prefix": "locale", 14 | "body": "[@bs.module \"date-fns/fp/locale/$1\"] external $1Locale: locale = \"default\";\n$2" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "command": "npm", 4 | "options": { 5 | "cwd": "${workspaceRoot}" 6 | }, 7 | "type": "shell", 8 | "args": ["run", "start"], 9 | "presentation": { 10 | "echo": true, 11 | "reveal": "always", 12 | "focus": false, 13 | "panel": "shared" 14 | }, 15 | "isBackground": true, 16 | "problemMatcher": { 17 | "fileLocation": "absolute", 18 | "owner": "ocaml", 19 | "background": { 20 | "activeOnStart": false, 21 | "beginsPattern": ">>>> Start compiling", 22 | "endsPattern": ">>>> Finish compiling" 23 | }, 24 | "pattern": [ 25 | { 26 | "regexp": 27 | "^File \"(.*)\", line (\\d+)(?:, characters (\\d+)-(\\d+))?:$", 28 | "file": 1, 29 | "line": 2, 30 | "column": 3, 31 | "endColumn": 4 32 | }, 33 | { 34 | "regexp": 35 | "^(?:(?:Parse\\s+)?(Warning|[Ee]rror)(?:\\s+\\d+)?:)?\\s+(.*)$", 36 | "severity": 1, 37 | "message": 2, 38 | "loop": true 39 | } 40 | ] 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Dmitriy Kovalenko 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Reason bindings for date-fns v2 2 | 3 | This is a project with ReasonML bindings for [date-fns v2](https://date-fns.org/docs/Getting-Started). These bindings are using `FP` module of date-fns. So please refer the [FP documentation](https://date-fns.org/v2.0.0/docs/FP-Guide). In short: all methods are curried and date value is always last argument (`|>`). 4 | 5 | > Tip: On date-fns documentation you can choose `submodule` in the top right corner and view documentation and function signatures just like you would use it in reason. [Here](https://date-fns.org/v2.15.0/docs/fp/format) is an example of `FP` submodule docs page. 6 | 7 | ![Date-fns docs site submodule toggle](https://user-images.githubusercontent.com/16926049/91631817-3f7a8c80-e9e5-11ea-96a5-9544350fa8d8.png) 8 | 9 | Simple example: 10 | 11 | ```ocaml 12 | open ReasonDateFns; 13 | 14 | Js.Date.make() 15 | |> DateFns.addDays(2) 16 | |> DateFns.addDays(-2) 17 | |> DateFns.closestTo([| 18 | DateFns.parseISO("2019-08-21T13:00:03.058Z"), 19 | Js.Date.make(), 20 | |]) 21 | |> DateFns.lightFormat("YYYY-MM-DD"); 22 | 23 | Js.Date.make() 24 | |> DateFns.formatWithOptions( 25 | DateFns.formatOptions(~locale=DateFns.Locales.ru, ()), 26 | "YYYY-MM-DD", 27 | ); 28 | 29 | Js.Date.make() 30 | |> DateFns.addMinutes(10.) 31 | |> DateFns.addSeconds(10.) 32 | |> DateFns.addMilliseconds(1000) 33 | ``` 34 | 35 | Have a fun with FP 👨‍💻 36 | 37 | ## Installation 38 | 39 | Make sure that you need `date-fns` **v2**. 40 | 41 | ``` 42 | yarn add reason-date-fns 43 | ``` 44 | 45 | And add `reason-date-fns` to your `bsconfig.json` 46 | 47 | ```json 48 | { 49 | "bs-dependencies": [ 50 | "reason-date-fns" 51 | ], 52 | } 53 | ``` 54 | 55 | ## Differences from bs-date-fns 56 | 57 | There are 2: 58 | 1) This project is exporting to `date-fns` of v2 59 | 2) And using `FP` submodule. So currying is enabled by default 😎 60 | 61 | 62 | ## License 63 | This project is under the terms of MIT license 64 | 65 | -------------------------------------------------------------------------------- /bsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "reason-date-fns", 3 | "version": "0.1.0", 4 | "sources": { 5 | "dir" : "src", 6 | "subdirs" : true 7 | }, 8 | "package-specs": [{ 9 | "module": "es6", 10 | "in-source": false 11 | }, { 12 | "module": "commonjs", 13 | "in-source": false 14 | }], 15 | "suffix": ".bs.js", 16 | "bs-dependencies": [ 17 | 18 | ], 19 | "warnings": { 20 | "error" : "+101" 21 | }, 22 | "namespace": true, 23 | "refmt": 3 24 | } 25 | -------------------------------------------------------------------------------- /lib/es6/src/DateFns.bs.js: -------------------------------------------------------------------------------- 1 | // Generated by BUCKLESCRIPT VERSION 4.0.18, PLEASE EDIT WITH CARE 2 | 3 | import * as Parse from "date-fns/fp/parse"; 4 | import * as Format from "date-fns/fp/format"; 5 | import * as SetDay from "date-fns/fp/setDay"; 6 | import * as AddDays from "date-fns/fp/addDays"; 7 | import * as IsAfter from "date-fns/fp/isAfter"; 8 | import * as IsEqual from "date-fns/fp/isEqual"; 9 | import * as SetWeek from "date-fns/fp/setWeek"; 10 | import * as SetYear from "date-fns/fp/setYear"; 11 | import * as SubDays from "date-fns/fp/subDays"; 12 | import * as AddHours from "date-fns/fp/addHours"; 13 | import * as AddWeeks from "date-fns/fp/addWeeks"; 14 | import * as AddYears from "date-fns/fp/addYears"; 15 | import * as IsBefore from "date-fns/fp/isBefore"; 16 | import * as SetHours from "date-fns/fp/setHours"; 17 | import * as SetMonth from "date-fns/fp/setMonth"; 18 | import * as SubHours from "date-fns/fp/subHours"; 19 | import * as SubWeeks from "date-fns/fp/subWeeks"; 20 | import * as SubYears from "date-fns/fp/subYears"; 21 | import * as AddMonths from "date-fns/fp/addMonths"; 22 | import * as ClosestTo from "date-fns/fp/closestTo"; 23 | import * as IsSameDay from "date-fns/fp/isSameDay"; 24 | import * as SetISODay from "date-fns/fp/setISODay"; 25 | import * as SubMonths from "date-fns/fp/subMonths"; 26 | import * as AddMinutes from "date-fns/fp/addMinutes"; 27 | import * as AddSeconds from "date-fns/fp/addSeconds"; 28 | import * as CompareAsc from "date-fns/fp/compareAsc"; 29 | import * as IsSameHour from "date-fns/fp/isSameHour"; 30 | import * as IsSameWeek from "date-fns/fp/isSameWeek"; 31 | import * as IsSameYear from "date-fns/fp/isSameYear"; 32 | import * as SetMinutes from "date-fns/fp/setMinutes"; 33 | import * as SetSeconds from "date-fns/fp/setSeconds"; 34 | import * as SubMinutes from "date-fns/fp/subMinutes"; 35 | import * as SubSeconds from "date-fns/fp/subSeconds"; 36 | import * as CompareDesc from "date-fns/fp/compareDesc"; 37 | import * as IsSameMonth from "date-fns/fp/isSameMonth"; 38 | import * as LightFormat from "date-fns/fp/lightFormat"; 39 | import * as IsSameMinute from "date-fns/fp/isSameMinute"; 40 | import * as IsSameSecond from "date-fns/fp/isSameSecond"; 41 | import * as SetDayOfYear from "date-fns/fp/setDayOfYear"; 42 | import * as ClosestIndexTo from "date-fns/fp/closestIndexTo"; 43 | import * as FormatDistance from "date-fns/fp/formatDistance"; 44 | import * as FormatRelative from "date-fns/fp/formatRelative"; 45 | import * as AddBusinessDays from "date-fns/fp/addBusinessDays"; 46 | import * as AddMilliseconds from "date-fns/fp/addMilliseconds"; 47 | import * as SetMilliseconds from "date-fns/fp/setMilliseconds"; 48 | import * as SubMilliseconds from "date-fns/fp/subMilliseconds"; 49 | import * as DifferenceInDays from "date-fns/fp/differenceInDays"; 50 | import * as IsLastDayOfMonth from "date-fns/fp/isLastDayOfMonth"; 51 | import * as DifferenceInHours from "date-fns/fp/differenceInHours"; 52 | import * as DifferenceInWeeks from "date-fns/fp/differenceInWeeks"; 53 | import * as DifferenceInYears from "date-fns/fp/differenceInYears"; 54 | import * as FormatWithOptions from "date-fns/fp/formatWithOptions"; 55 | import * as IsFirstDayOfMonth from "date-fns/fp/isFirstDayOfMonth"; 56 | import * as SetDayWithOptions from "date-fns/fp/setDayWithOptions"; 57 | import * as DifferenceInMonths from "date-fns/fp/differenceInMonths"; 58 | import * as DifferenceInMinutes from "date-fns/fp/differenceInMinutes"; 59 | import * as DifferenceInSeconds from "date-fns/fp/differenceInSeconds"; 60 | import * as FormatDistanceStrict from "date-fns/fp/formatDistanceStrict"; 61 | import * as DifferenceInBusinessDays from "date-fns/fp/differenceInBusinessDays"; 62 | import * as DifferenceInCalendarDays from "date-fns/fp/differenceInCalendarDays"; 63 | import * as DifferenceInMilliseconds from "date-fns/fp/differenceInMilliseconds"; 64 | import * as DifferenceInCalendarYears from "date-fns/fp/differenceInCalendarYears"; 65 | import * as FormatDistanceWithOptions from "date-fns/fp/formatDistanceWithOptions"; 66 | import * as DifferenceInCalendarMonths from "date-fns/fp/differenceInCalendarMonths"; 67 | import * as ReasonDateFnsCurryHelpers$ReasonDateFns from "./ReasonDateFnsCurryHelpers.bs.js"; 68 | import * as FormatDistanceStrictWithOptions from "date-fns/fp/formatDistanceStrictWithOptions"; 69 | 70 | var Locales = /* module */[]; 71 | 72 | var partial_arg = ClosestIndexTo.default; 73 | 74 | function closestIndexTo(param, param$1) { 75 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg, param, param$1); 76 | } 77 | 78 | var partial_arg$1 = FormatWithOptions.default; 79 | 80 | function formatWithOptions(param, param$1, param$2) { 81 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry3(partial_arg$1, param, param$1, param$2); 82 | } 83 | 84 | var partial_arg$2 = Format.default; 85 | 86 | function format(param, param$1) { 87 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$2, param, param$1); 88 | } 89 | 90 | var partial_arg$3 = ClosestTo.default; 91 | 92 | function closestTo(param, param$1) { 93 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$3, param, param$1); 94 | } 95 | 96 | var partial_arg$4 = CompareAsc.default; 97 | 98 | function compareAsc(param, param$1) { 99 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$4, param, param$1); 100 | } 101 | 102 | var partial_arg$5 = CompareDesc.default; 103 | 104 | function compareDesc(param, param$1) { 105 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$5, param, param$1); 106 | } 107 | 108 | var partial_arg$6 = FormatDistance.default; 109 | 110 | function formatDistance(param, param$1) { 111 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$6, param, param$1); 112 | } 113 | 114 | var partial_arg$7 = FormatDistanceWithOptions.default; 115 | 116 | function formatDistanceWithOptions(param, param$1, param$2) { 117 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry3(partial_arg$7, param, param$1, param$2); 118 | } 119 | 120 | var partial_arg$8 = FormatDistanceStrict.default; 121 | 122 | function formatDistanceStrict(param, param$1) { 123 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$8, param, param$1); 124 | } 125 | 126 | var partial_arg$9 = FormatDistanceStrictWithOptions.default; 127 | 128 | function formatDistanceStrictWithOptions(param, param$1) { 129 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$9, param, param$1); 130 | } 131 | 132 | var partial_arg$10 = FormatRelative.default; 133 | 134 | function formatRelative(param, param$1) { 135 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$10, param, param$1); 136 | } 137 | 138 | var partial_arg$11 = IsAfter.default; 139 | 140 | function isAfter(param, param$1) { 141 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$11, param, param$1); 142 | } 143 | 144 | var partial_arg$12 = IsBefore.default; 145 | 146 | function isBefore(param, param$1) { 147 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$12, param, param$1); 148 | } 149 | 150 | var partial_arg$13 = IsEqual.default; 151 | 152 | function isEqual(param, param$1) { 153 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$13, param, param$1); 154 | } 155 | 156 | var partial_arg$14 = LightFormat.default; 157 | 158 | function lightFormat(param, param$1) { 159 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$14, param, param$1); 160 | } 161 | 162 | var partial_arg$15 = Parse.default; 163 | 164 | function parse(param, param$1, param$2) { 165 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry3(partial_arg$15, param, param$1, param$2); 166 | } 167 | 168 | var partial_arg$16 = AddBusinessDays.default; 169 | 170 | function addBusinessDays(param, param$1) { 171 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$16, param, param$1); 172 | } 173 | 174 | var partial_arg$17 = AddDays.default; 175 | 176 | function addDays(param, param$1) { 177 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$17, param, param$1); 178 | } 179 | 180 | var partial_arg$18 = DifferenceInBusinessDays.default; 181 | 182 | function differenceInBusinessDays(param, param$1) { 183 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$18, param, param$1); 184 | } 185 | 186 | var partial_arg$19 = DifferenceInCalendarDays.default; 187 | 188 | function differenceInCalendarDays(param, param$1) { 189 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$19, param, param$1); 190 | } 191 | 192 | var partial_arg$20 = DifferenceInDays.default; 193 | 194 | function differenceInDays(param, param$1) { 195 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$20, param, param$1); 196 | } 197 | 198 | var partial_arg$21 = IsSameDay.default; 199 | 200 | function isSameDay(param, param$1) { 201 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$21, param, param$1); 202 | } 203 | 204 | var partial_arg$22 = SetDayOfYear.default; 205 | 206 | function setDayOfYear(param, param$1) { 207 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$22, param, param$1); 208 | } 209 | 210 | var partial_arg$23 = SubDays.default; 211 | 212 | function subDays(param, param$1) { 213 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$23, param, param$1); 214 | } 215 | 216 | var partial_arg$24 = AddMilliseconds.default; 217 | 218 | function addMilliseconds(param, param$1) { 219 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$24, param, param$1); 220 | } 221 | 222 | var partial_arg$25 = DifferenceInMilliseconds.default; 223 | 224 | function differenceInMilliseconds(param, param$1) { 225 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$25, param, param$1); 226 | } 227 | 228 | var partial_arg$26 = SetMilliseconds.default; 229 | 230 | function setMilliseconds(param, param$1) { 231 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$26, param, param$1); 232 | } 233 | 234 | var partial_arg$27 = SubMilliseconds.default; 235 | 236 | function subMilliseconds(param, param$1) { 237 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$27, param, param$1); 238 | } 239 | 240 | var partial_arg$28 = AddSeconds.default; 241 | 242 | function addSeconds(param, param$1) { 243 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$28, param, param$1); 244 | } 245 | 246 | var partial_arg$29 = DifferenceInSeconds.default; 247 | 248 | function differenceInSeconds(param, param$1) { 249 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$29, param, param$1); 250 | } 251 | 252 | var partial_arg$30 = SetSeconds.default; 253 | 254 | function setSeconds(param, param$1) { 255 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$30, param, param$1); 256 | } 257 | 258 | var partial_arg$31 = IsSameSecond.default; 259 | 260 | function isSameSecond(param, param$1) { 261 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$31, param, param$1); 262 | } 263 | 264 | var partial_arg$32 = SubSeconds.default; 265 | 266 | function subSeconds(param, param$1) { 267 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$32, param, param$1); 268 | } 269 | 270 | var partial_arg$33 = AddMinutes.default; 271 | 272 | function addMinutes(param, param$1) { 273 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$33, param, param$1); 274 | } 275 | 276 | var partial_arg$34 = DifferenceInMinutes.default; 277 | 278 | function differenceInMinutes(param, param$1) { 279 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$34, param, param$1); 280 | } 281 | 282 | var partial_arg$35 = SetMinutes.default; 283 | 284 | function setMinutes(param, param$1) { 285 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$35, param, param$1); 286 | } 287 | 288 | var partial_arg$36 = IsSameMinute.default; 289 | 290 | function isSameMinute(param, param$1) { 291 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$36, param, param$1); 292 | } 293 | 294 | var partial_arg$37 = SubMinutes.default; 295 | 296 | function subMinutes(param, param$1) { 297 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$37, param, param$1); 298 | } 299 | 300 | var partial_arg$38 = AddHours.default; 301 | 302 | function addHours(param, param$1) { 303 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$38, param, param$1); 304 | } 305 | 306 | var partial_arg$39 = DifferenceInHours.default; 307 | 308 | function differenceInHours(param, param$1) { 309 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$39, param, param$1); 310 | } 311 | 312 | var partial_arg$40 = SetHours.default; 313 | 314 | function setHours(param, param$1) { 315 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$40, param, param$1); 316 | } 317 | 318 | var partial_arg$41 = IsSameHour.default; 319 | 320 | function isSameHour(param, param$1) { 321 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$41, param, param$1); 322 | } 323 | 324 | var partial_arg$42 = SubHours.default; 325 | 326 | function subHours(param, param$1) { 327 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$42, param, param$1); 328 | } 329 | 330 | var partial_arg$43 = SetDay.default; 331 | 332 | function setDay(param, param$1) { 333 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$43, param, param$1); 334 | } 335 | 336 | var partial_arg$44 = SetDayWithOptions.setDayWithOptions; 337 | 338 | function setDayWithOptions(param, param$1) { 339 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$44, param, param$1); 340 | } 341 | 342 | var partial_arg$45 = SetISODay.default; 343 | 344 | function setISODay(param, param$1) { 345 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$45, param, param$1); 346 | } 347 | 348 | var partial_arg$46 = AddWeeks.default; 349 | 350 | function addWeeks(param, param$1) { 351 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$46, param, param$1); 352 | } 353 | 354 | var partial_arg$47 = DifferenceInWeeks.default; 355 | 356 | function differenceInWeeks(param, param$1) { 357 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$47, param, param$1); 358 | } 359 | 360 | var partial_arg$48 = SetWeek.default; 361 | 362 | function setWeek(param, param$1) { 363 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$48, param, param$1); 364 | } 365 | 366 | var partial_arg$49 = IsSameWeek.default; 367 | 368 | function isSameWeek(param, param$1) { 369 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$49, param, param$1); 370 | } 371 | 372 | var partial_arg$50 = SubWeeks.default; 373 | 374 | function subWeeks(param, param$1) { 375 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$50, param, param$1); 376 | } 377 | 378 | var partial_arg$51 = AddMonths.default; 379 | 380 | function addMonths(param, param$1) { 381 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$51, param, param$1); 382 | } 383 | 384 | var partial_arg$52 = DifferenceInMonths.default; 385 | 386 | function differenceInMonths(param, param$1) { 387 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$52, param, param$1); 388 | } 389 | 390 | var partial_arg$53 = DifferenceInCalendarMonths.default; 391 | 392 | function differenceInCalendarMonths(param, param$1) { 393 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$53, param, param$1); 394 | } 395 | 396 | var partial_arg$54 = SetMonth.default; 397 | 398 | function setMonth(param, param$1) { 399 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$54, param, param$1); 400 | } 401 | 402 | var partial_arg$55 = IsSameMonth.default; 403 | 404 | function isSameMonth(param, param$1) { 405 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$55, param, param$1); 406 | } 407 | 408 | var partial_arg$56 = SubMonths.default; 409 | 410 | function subMonths(param, param$1) { 411 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$56, param, param$1); 412 | } 413 | 414 | var partial_arg$57 = IsFirstDayOfMonth.default; 415 | 416 | function isFirstDayOfMonth(param, param$1) { 417 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$57, param, param$1); 418 | } 419 | 420 | var partial_arg$58 = IsLastDayOfMonth.default; 421 | 422 | function isLastDayOfMonth(param, param$1) { 423 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$58, param, param$1); 424 | } 425 | 426 | var partial_arg$59 = AddYears.default; 427 | 428 | function addYears(param, param$1) { 429 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$59, param, param$1); 430 | } 431 | 432 | var partial_arg$60 = DifferenceInYears.default; 433 | 434 | function differenceInYears(param, param$1) { 435 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$60, param, param$1); 436 | } 437 | 438 | var partial_arg$61 = DifferenceInCalendarYears.default; 439 | 440 | function differenceInCalendarYears(param, param$1) { 441 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$61, param, param$1); 442 | } 443 | 444 | var partial_arg$62 = SetYear.default; 445 | 446 | function setYear(param, param$1) { 447 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$62, param, param$1); 448 | } 449 | 450 | var partial_arg$63 = IsSameYear.default; 451 | 452 | function isSameYear(param, param$1) { 453 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$63, param, param$1); 454 | } 455 | 456 | var partial_arg$64 = SubYears.default; 457 | 458 | function subYears(param, param$1) { 459 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$64, param, param$1); 460 | } 461 | 462 | export { 463 | Locales , 464 | closestIndexTo , 465 | formatWithOptions , 466 | format , 467 | closestTo , 468 | compareAsc , 469 | compareDesc , 470 | formatDistance , 471 | formatDistanceWithOptions , 472 | formatDistanceStrict , 473 | formatDistanceStrictWithOptions , 474 | formatRelative , 475 | isAfter , 476 | isBefore , 477 | isEqual , 478 | lightFormat , 479 | parse , 480 | addBusinessDays , 481 | addDays , 482 | differenceInBusinessDays , 483 | differenceInCalendarDays , 484 | differenceInDays , 485 | isSameDay , 486 | setDayOfYear , 487 | subDays , 488 | addMilliseconds , 489 | differenceInMilliseconds , 490 | setMilliseconds , 491 | subMilliseconds , 492 | addSeconds , 493 | differenceInSeconds , 494 | setSeconds , 495 | isSameSecond , 496 | subSeconds , 497 | addMinutes , 498 | differenceInMinutes , 499 | setMinutes , 500 | isSameMinute , 501 | subMinutes , 502 | addHours , 503 | differenceInHours , 504 | setHours , 505 | isSameHour , 506 | subHours , 507 | setDay , 508 | setDayWithOptions , 509 | setISODay , 510 | addWeeks , 511 | differenceInWeeks , 512 | setWeek , 513 | isSameWeek , 514 | subWeeks , 515 | addMonths , 516 | differenceInMonths , 517 | differenceInCalendarMonths , 518 | setMonth , 519 | isSameMonth , 520 | subMonths , 521 | isFirstDayOfMonth , 522 | isLastDayOfMonth , 523 | addYears , 524 | differenceInYears , 525 | differenceInCalendarYears , 526 | setYear , 527 | isSameYear , 528 | subYears , 529 | 530 | } 531 | /* partial_arg Not a pure module */ 532 | -------------------------------------------------------------------------------- /lib/es6/src/Demo.bs.js: -------------------------------------------------------------------------------- 1 | // Generated by BUCKLESCRIPT VERSION 4.0.18, PLEASE EDIT WITH CARE 2 | 3 | import * as Max from "date-fns/fp/max"; 4 | import * as Ru from "date-fns/locale/ru"; 5 | import * as ParseISO from "date-fns/fp/parseISO"; 6 | import * as DateFns$ReasonDateFns from "./DateFns.bs.js"; 7 | import * as StartOfDay from "date-fns/fp/startOfDay"; 8 | 9 | console.log(new Date()); 10 | 11 | console.log(DateFns$ReasonDateFns.isBefore(new Date(), new Date())); 12 | 13 | console.log(Max.default(/* array */[ 14 | new Date(), 15 | new Date() 16 | ])); 17 | 18 | DateFns$ReasonDateFns.lightFormat("yyyy-MM-dd", DateFns$ReasonDateFns.closestTo(/* array */[ 19 | ParseISO.default("2019-08-21T13:00:03.058Z"), 20 | new Date() 21 | ], DateFns$ReasonDateFns.addDays(-2, DateFns$ReasonDateFns.addDays(2, new Date())))); 22 | 23 | DateFns$ReasonDateFns.formatWithOptions({ 24 | locale: Ru.default 25 | }, "yyyy-MM-dd", new Date()); 26 | 27 | console.log(DateFns$ReasonDateFns.addMilliseconds(1000, DateFns$ReasonDateFns.addSeconds(10, DateFns$ReasonDateFns.addMinutes(10, new Date())))); 28 | 29 | console.log("test", DateFns$ReasonDateFns.setHours(7, StartOfDay.default(DateFns$ReasonDateFns.addDays(1, new Date())))); 30 | 31 | export { 32 | 33 | } 34 | /* Not a pure module */ 35 | -------------------------------------------------------------------------------- /lib/es6/src/Helpers.bs.js: -------------------------------------------------------------------------------- 1 | // Generated by BUCKLESCRIPT VERSION 4.0.18, PLEASE EDIT WITH CARE 2 | 3 | 4 | function curry2(uncurried2, a, b) { 5 | return uncurried2(a)(b); 6 | } 7 | 8 | function curry3(uncurried3, a, b, c) { 9 | return uncurried3(a)(b)(c); 10 | } 11 | 12 | export { 13 | curry2 , 14 | curry3 , 15 | 16 | } 17 | /* No side effect */ 18 | -------------------------------------------------------------------------------- /lib/es6/src/ReasonDateFnsCurryHelpers.bs.js: -------------------------------------------------------------------------------- 1 | // Generated by BUCKLESCRIPT VERSION 4.0.18, PLEASE EDIT WITH CARE 2 | 3 | 4 | function curry2(uncurried2, a, b) { 5 | return uncurried2(a)(b); 6 | } 7 | 8 | function curry3(uncurried3, a, b, c) { 9 | return uncurried3(a)(b)(c); 10 | } 11 | 12 | export { 13 | curry2 , 14 | curry3 , 15 | 16 | } 17 | /* No side effect */ 18 | -------------------------------------------------------------------------------- /lib/js/src/DateFns.bs.js: -------------------------------------------------------------------------------- 1 | // Generated by BUCKLESCRIPT VERSION 4.0.18, PLEASE EDIT WITH CARE 2 | 'use strict'; 3 | 4 | var Parse = require("date-fns/fp/parse"); 5 | var Format = require("date-fns/fp/format"); 6 | var SetDay = require("date-fns/fp/setDay"); 7 | var AddDays = require("date-fns/fp/addDays"); 8 | var IsAfter = require("date-fns/fp/isAfter"); 9 | var IsEqual = require("date-fns/fp/isEqual"); 10 | var SetWeek = require("date-fns/fp/setWeek"); 11 | var SetYear = require("date-fns/fp/setYear"); 12 | var SubDays = require("date-fns/fp/subDays"); 13 | var AddHours = require("date-fns/fp/addHours"); 14 | var AddWeeks = require("date-fns/fp/addWeeks"); 15 | var AddYears = require("date-fns/fp/addYears"); 16 | var IsBefore = require("date-fns/fp/isBefore"); 17 | var SetHours = require("date-fns/fp/setHours"); 18 | var SetMonth = require("date-fns/fp/setMonth"); 19 | var SubHours = require("date-fns/fp/subHours"); 20 | var SubWeeks = require("date-fns/fp/subWeeks"); 21 | var SubYears = require("date-fns/fp/subYears"); 22 | var AddMonths = require("date-fns/fp/addMonths"); 23 | var ClosestTo = require("date-fns/fp/closestTo"); 24 | var IsSameDay = require("date-fns/fp/isSameDay"); 25 | var SetISODay = require("date-fns/fp/setISODay"); 26 | var SubMonths = require("date-fns/fp/subMonths"); 27 | var AddMinutes = require("date-fns/fp/addMinutes"); 28 | var AddSeconds = require("date-fns/fp/addSeconds"); 29 | var CompareAsc = require("date-fns/fp/compareAsc"); 30 | var IsSameHour = require("date-fns/fp/isSameHour"); 31 | var IsSameWeek = require("date-fns/fp/isSameWeek"); 32 | var IsSameYear = require("date-fns/fp/isSameYear"); 33 | var SetMinutes = require("date-fns/fp/setMinutes"); 34 | var SetSeconds = require("date-fns/fp/setSeconds"); 35 | var SubMinutes = require("date-fns/fp/subMinutes"); 36 | var SubSeconds = require("date-fns/fp/subSeconds"); 37 | var CompareDesc = require("date-fns/fp/compareDesc"); 38 | var IsSameMonth = require("date-fns/fp/isSameMonth"); 39 | var LightFormat = require("date-fns/fp/lightFormat"); 40 | var IsSameMinute = require("date-fns/fp/isSameMinute"); 41 | var IsSameSecond = require("date-fns/fp/isSameSecond"); 42 | var SetDayOfYear = require("date-fns/fp/setDayOfYear"); 43 | var ClosestIndexTo = require("date-fns/fp/closestIndexTo"); 44 | var FormatDistance = require("date-fns/fp/formatDistance"); 45 | var FormatRelative = require("date-fns/fp/formatRelative"); 46 | var AddBusinessDays = require("date-fns/fp/addBusinessDays"); 47 | var AddMilliseconds = require("date-fns/fp/addMilliseconds"); 48 | var SetMilliseconds = require("date-fns/fp/setMilliseconds"); 49 | var SubMilliseconds = require("date-fns/fp/subMilliseconds"); 50 | var DifferenceInDays = require("date-fns/fp/differenceInDays"); 51 | var IsLastDayOfMonth = require("date-fns/fp/isLastDayOfMonth"); 52 | var DifferenceInHours = require("date-fns/fp/differenceInHours"); 53 | var DifferenceInWeeks = require("date-fns/fp/differenceInWeeks"); 54 | var DifferenceInYears = require("date-fns/fp/differenceInYears"); 55 | var FormatWithOptions = require("date-fns/fp/formatWithOptions"); 56 | var IsFirstDayOfMonth = require("date-fns/fp/isFirstDayOfMonth"); 57 | var SetDayWithOptions = require("date-fns/fp/setDayWithOptions"); 58 | var DifferenceInMonths = require("date-fns/fp/differenceInMonths"); 59 | var DifferenceInMinutes = require("date-fns/fp/differenceInMinutes"); 60 | var DifferenceInSeconds = require("date-fns/fp/differenceInSeconds"); 61 | var FormatDistanceStrict = require("date-fns/fp/formatDistanceStrict"); 62 | var DifferenceInBusinessDays = require("date-fns/fp/differenceInBusinessDays"); 63 | var DifferenceInCalendarDays = require("date-fns/fp/differenceInCalendarDays"); 64 | var DifferenceInMilliseconds = require("date-fns/fp/differenceInMilliseconds"); 65 | var DifferenceInCalendarYears = require("date-fns/fp/differenceInCalendarYears"); 66 | var FormatDistanceWithOptions = require("date-fns/fp/formatDistanceWithOptions"); 67 | var DifferenceInCalendarMonths = require("date-fns/fp/differenceInCalendarMonths"); 68 | var ReasonDateFnsCurryHelpers$ReasonDateFns = require("./ReasonDateFnsCurryHelpers.bs.js"); 69 | var FormatDistanceStrictWithOptions = require("date-fns/fp/formatDistanceStrictWithOptions"); 70 | 71 | var Locales = /* module */[]; 72 | 73 | var partial_arg = ClosestIndexTo.default; 74 | 75 | function closestIndexTo(param, param$1) { 76 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg, param, param$1); 77 | } 78 | 79 | var partial_arg$1 = FormatWithOptions.default; 80 | 81 | function formatWithOptions(param, param$1, param$2) { 82 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry3(partial_arg$1, param, param$1, param$2); 83 | } 84 | 85 | var partial_arg$2 = Format.default; 86 | 87 | function format(param, param$1) { 88 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$2, param, param$1); 89 | } 90 | 91 | var partial_arg$3 = ClosestTo.default; 92 | 93 | function closestTo(param, param$1) { 94 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$3, param, param$1); 95 | } 96 | 97 | var partial_arg$4 = CompareAsc.default; 98 | 99 | function compareAsc(param, param$1) { 100 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$4, param, param$1); 101 | } 102 | 103 | var partial_arg$5 = CompareDesc.default; 104 | 105 | function compareDesc(param, param$1) { 106 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$5, param, param$1); 107 | } 108 | 109 | var partial_arg$6 = FormatDistance.default; 110 | 111 | function formatDistance(param, param$1) { 112 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$6, param, param$1); 113 | } 114 | 115 | var partial_arg$7 = FormatDistanceWithOptions.default; 116 | 117 | function formatDistanceWithOptions(param, param$1, param$2) { 118 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry3(partial_arg$7, param, param$1, param$2); 119 | } 120 | 121 | var partial_arg$8 = FormatDistanceStrict.default; 122 | 123 | function formatDistanceStrict(param, param$1) { 124 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$8, param, param$1); 125 | } 126 | 127 | var partial_arg$9 = FormatDistanceStrictWithOptions.default; 128 | 129 | function formatDistanceStrictWithOptions(param, param$1) { 130 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$9, param, param$1); 131 | } 132 | 133 | var partial_arg$10 = FormatRelative.default; 134 | 135 | function formatRelative(param, param$1) { 136 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$10, param, param$1); 137 | } 138 | 139 | var partial_arg$11 = IsAfter.default; 140 | 141 | function isAfter(param, param$1) { 142 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$11, param, param$1); 143 | } 144 | 145 | var partial_arg$12 = IsBefore.default; 146 | 147 | function isBefore(param, param$1) { 148 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$12, param, param$1); 149 | } 150 | 151 | var partial_arg$13 = IsEqual.default; 152 | 153 | function isEqual(param, param$1) { 154 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$13, param, param$1); 155 | } 156 | 157 | var partial_arg$14 = LightFormat.default; 158 | 159 | function lightFormat(param, param$1) { 160 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$14, param, param$1); 161 | } 162 | 163 | var partial_arg$15 = Parse.default; 164 | 165 | function parse(param, param$1, param$2) { 166 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry3(partial_arg$15, param, param$1, param$2); 167 | } 168 | 169 | var partial_arg$16 = AddBusinessDays.default; 170 | 171 | function addBusinessDays(param, param$1) { 172 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$16, param, param$1); 173 | } 174 | 175 | var partial_arg$17 = AddDays.default; 176 | 177 | function addDays(param, param$1) { 178 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$17, param, param$1); 179 | } 180 | 181 | var partial_arg$18 = DifferenceInBusinessDays.default; 182 | 183 | function differenceInBusinessDays(param, param$1) { 184 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$18, param, param$1); 185 | } 186 | 187 | var partial_arg$19 = DifferenceInCalendarDays.default; 188 | 189 | function differenceInCalendarDays(param, param$1) { 190 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$19, param, param$1); 191 | } 192 | 193 | var partial_arg$20 = DifferenceInDays.default; 194 | 195 | function differenceInDays(param, param$1) { 196 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$20, param, param$1); 197 | } 198 | 199 | var partial_arg$21 = IsSameDay.default; 200 | 201 | function isSameDay(param, param$1) { 202 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$21, param, param$1); 203 | } 204 | 205 | var partial_arg$22 = SetDayOfYear.default; 206 | 207 | function setDayOfYear(param, param$1) { 208 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$22, param, param$1); 209 | } 210 | 211 | var partial_arg$23 = SubDays.default; 212 | 213 | function subDays(param, param$1) { 214 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$23, param, param$1); 215 | } 216 | 217 | var partial_arg$24 = AddMilliseconds.default; 218 | 219 | function addMilliseconds(param, param$1) { 220 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$24, param, param$1); 221 | } 222 | 223 | var partial_arg$25 = DifferenceInMilliseconds.default; 224 | 225 | function differenceInMilliseconds(param, param$1) { 226 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$25, param, param$1); 227 | } 228 | 229 | var partial_arg$26 = SetMilliseconds.default; 230 | 231 | function setMilliseconds(param, param$1) { 232 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$26, param, param$1); 233 | } 234 | 235 | var partial_arg$27 = SubMilliseconds.default; 236 | 237 | function subMilliseconds(param, param$1) { 238 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$27, param, param$1); 239 | } 240 | 241 | var partial_arg$28 = AddSeconds.default; 242 | 243 | function addSeconds(param, param$1) { 244 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$28, param, param$1); 245 | } 246 | 247 | var partial_arg$29 = DifferenceInSeconds.default; 248 | 249 | function differenceInSeconds(param, param$1) { 250 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$29, param, param$1); 251 | } 252 | 253 | var partial_arg$30 = SetSeconds.default; 254 | 255 | function setSeconds(param, param$1) { 256 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$30, param, param$1); 257 | } 258 | 259 | var partial_arg$31 = IsSameSecond.default; 260 | 261 | function isSameSecond(param, param$1) { 262 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$31, param, param$1); 263 | } 264 | 265 | var partial_arg$32 = SubSeconds.default; 266 | 267 | function subSeconds(param, param$1) { 268 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$32, param, param$1); 269 | } 270 | 271 | var partial_arg$33 = AddMinutes.default; 272 | 273 | function addMinutes(param, param$1) { 274 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$33, param, param$1); 275 | } 276 | 277 | var partial_arg$34 = DifferenceInMinutes.default; 278 | 279 | function differenceInMinutes(param, param$1) { 280 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$34, param, param$1); 281 | } 282 | 283 | var partial_arg$35 = SetMinutes.default; 284 | 285 | function setMinutes(param, param$1) { 286 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$35, param, param$1); 287 | } 288 | 289 | var partial_arg$36 = IsSameMinute.default; 290 | 291 | function isSameMinute(param, param$1) { 292 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$36, param, param$1); 293 | } 294 | 295 | var partial_arg$37 = SubMinutes.default; 296 | 297 | function subMinutes(param, param$1) { 298 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$37, param, param$1); 299 | } 300 | 301 | var partial_arg$38 = AddHours.default; 302 | 303 | function addHours(param, param$1) { 304 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$38, param, param$1); 305 | } 306 | 307 | var partial_arg$39 = DifferenceInHours.default; 308 | 309 | function differenceInHours(param, param$1) { 310 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$39, param, param$1); 311 | } 312 | 313 | var partial_arg$40 = SetHours.default; 314 | 315 | function setHours(param, param$1) { 316 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$40, param, param$1); 317 | } 318 | 319 | var partial_arg$41 = IsSameHour.default; 320 | 321 | function isSameHour(param, param$1) { 322 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$41, param, param$1); 323 | } 324 | 325 | var partial_arg$42 = SubHours.default; 326 | 327 | function subHours(param, param$1) { 328 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$42, param, param$1); 329 | } 330 | 331 | var partial_arg$43 = SetDay.default; 332 | 333 | function setDay(param, param$1) { 334 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$43, param, param$1); 335 | } 336 | 337 | var partial_arg$44 = SetDayWithOptions.setDayWithOptions; 338 | 339 | function setDayWithOptions(param, param$1) { 340 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$44, param, param$1); 341 | } 342 | 343 | var partial_arg$45 = SetISODay.default; 344 | 345 | function setISODay(param, param$1) { 346 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$45, param, param$1); 347 | } 348 | 349 | var partial_arg$46 = AddWeeks.default; 350 | 351 | function addWeeks(param, param$1) { 352 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$46, param, param$1); 353 | } 354 | 355 | var partial_arg$47 = DifferenceInWeeks.default; 356 | 357 | function differenceInWeeks(param, param$1) { 358 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$47, param, param$1); 359 | } 360 | 361 | var partial_arg$48 = SetWeek.default; 362 | 363 | function setWeek(param, param$1) { 364 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$48, param, param$1); 365 | } 366 | 367 | var partial_arg$49 = IsSameWeek.default; 368 | 369 | function isSameWeek(param, param$1) { 370 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$49, param, param$1); 371 | } 372 | 373 | var partial_arg$50 = SubWeeks.default; 374 | 375 | function subWeeks(param, param$1) { 376 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$50, param, param$1); 377 | } 378 | 379 | var partial_arg$51 = AddMonths.default; 380 | 381 | function addMonths(param, param$1) { 382 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$51, param, param$1); 383 | } 384 | 385 | var partial_arg$52 = DifferenceInMonths.default; 386 | 387 | function differenceInMonths(param, param$1) { 388 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$52, param, param$1); 389 | } 390 | 391 | var partial_arg$53 = DifferenceInCalendarMonths.default; 392 | 393 | function differenceInCalendarMonths(param, param$1) { 394 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$53, param, param$1); 395 | } 396 | 397 | var partial_arg$54 = SetMonth.default; 398 | 399 | function setMonth(param, param$1) { 400 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$54, param, param$1); 401 | } 402 | 403 | var partial_arg$55 = IsSameMonth.default; 404 | 405 | function isSameMonth(param, param$1) { 406 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$55, param, param$1); 407 | } 408 | 409 | var partial_arg$56 = SubMonths.default; 410 | 411 | function subMonths(param, param$1) { 412 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$56, param, param$1); 413 | } 414 | 415 | var partial_arg$57 = IsFirstDayOfMonth.default; 416 | 417 | function isFirstDayOfMonth(param, param$1) { 418 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$57, param, param$1); 419 | } 420 | 421 | var partial_arg$58 = IsLastDayOfMonth.default; 422 | 423 | function isLastDayOfMonth(param, param$1) { 424 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$58, param, param$1); 425 | } 426 | 427 | var partial_arg$59 = AddYears.default; 428 | 429 | function addYears(param, param$1) { 430 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$59, param, param$1); 431 | } 432 | 433 | var partial_arg$60 = DifferenceInYears.default; 434 | 435 | function differenceInYears(param, param$1) { 436 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$60, param, param$1); 437 | } 438 | 439 | var partial_arg$61 = DifferenceInCalendarYears.default; 440 | 441 | function differenceInCalendarYears(param, param$1) { 442 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$61, param, param$1); 443 | } 444 | 445 | var partial_arg$62 = SetYear.default; 446 | 447 | function setYear(param, param$1) { 448 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$62, param, param$1); 449 | } 450 | 451 | var partial_arg$63 = IsSameYear.default; 452 | 453 | function isSameYear(param, param$1) { 454 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$63, param, param$1); 455 | } 456 | 457 | var partial_arg$64 = SubYears.default; 458 | 459 | function subYears(param, param$1) { 460 | return ReasonDateFnsCurryHelpers$ReasonDateFns.curry2(partial_arg$64, param, param$1); 461 | } 462 | 463 | exports.Locales = Locales; 464 | exports.closestIndexTo = closestIndexTo; 465 | exports.formatWithOptions = formatWithOptions; 466 | exports.format = format; 467 | exports.closestTo = closestTo; 468 | exports.compareAsc = compareAsc; 469 | exports.compareDesc = compareDesc; 470 | exports.formatDistance = formatDistance; 471 | exports.formatDistanceWithOptions = formatDistanceWithOptions; 472 | exports.formatDistanceStrict = formatDistanceStrict; 473 | exports.formatDistanceStrictWithOptions = formatDistanceStrictWithOptions; 474 | exports.formatRelative = formatRelative; 475 | exports.isAfter = isAfter; 476 | exports.isBefore = isBefore; 477 | exports.isEqual = isEqual; 478 | exports.lightFormat = lightFormat; 479 | exports.parse = parse; 480 | exports.addBusinessDays = addBusinessDays; 481 | exports.addDays = addDays; 482 | exports.differenceInBusinessDays = differenceInBusinessDays; 483 | exports.differenceInCalendarDays = differenceInCalendarDays; 484 | exports.differenceInDays = differenceInDays; 485 | exports.isSameDay = isSameDay; 486 | exports.setDayOfYear = setDayOfYear; 487 | exports.subDays = subDays; 488 | exports.addMilliseconds = addMilliseconds; 489 | exports.differenceInMilliseconds = differenceInMilliseconds; 490 | exports.setMilliseconds = setMilliseconds; 491 | exports.subMilliseconds = subMilliseconds; 492 | exports.addSeconds = addSeconds; 493 | exports.differenceInSeconds = differenceInSeconds; 494 | exports.setSeconds = setSeconds; 495 | exports.isSameSecond = isSameSecond; 496 | exports.subSeconds = subSeconds; 497 | exports.addMinutes = addMinutes; 498 | exports.differenceInMinutes = differenceInMinutes; 499 | exports.setMinutes = setMinutes; 500 | exports.isSameMinute = isSameMinute; 501 | exports.subMinutes = subMinutes; 502 | exports.addHours = addHours; 503 | exports.differenceInHours = differenceInHours; 504 | exports.setHours = setHours; 505 | exports.isSameHour = isSameHour; 506 | exports.subHours = subHours; 507 | exports.setDay = setDay; 508 | exports.setDayWithOptions = setDayWithOptions; 509 | exports.setISODay = setISODay; 510 | exports.addWeeks = addWeeks; 511 | exports.differenceInWeeks = differenceInWeeks; 512 | exports.setWeek = setWeek; 513 | exports.isSameWeek = isSameWeek; 514 | exports.subWeeks = subWeeks; 515 | exports.addMonths = addMonths; 516 | exports.differenceInMonths = differenceInMonths; 517 | exports.differenceInCalendarMonths = differenceInCalendarMonths; 518 | exports.setMonth = setMonth; 519 | exports.isSameMonth = isSameMonth; 520 | exports.subMonths = subMonths; 521 | exports.isFirstDayOfMonth = isFirstDayOfMonth; 522 | exports.isLastDayOfMonth = isLastDayOfMonth; 523 | exports.addYears = addYears; 524 | exports.differenceInYears = differenceInYears; 525 | exports.differenceInCalendarYears = differenceInCalendarYears; 526 | exports.setYear = setYear; 527 | exports.isSameYear = isSameYear; 528 | exports.subYears = subYears; 529 | /* partial_arg Not a pure module */ 530 | -------------------------------------------------------------------------------- /lib/js/src/Demo.bs.js: -------------------------------------------------------------------------------- 1 | // Generated by BUCKLESCRIPT VERSION 4.0.18, PLEASE EDIT WITH CARE 2 | 'use strict'; 3 | 4 | var Max = require("date-fns/fp/max"); 5 | var Ru = require("date-fns/locale/ru"); 6 | var ParseISO = require("date-fns/fp/parseISO"); 7 | var DateFns$ReasonDateFns = require("./DateFns.bs.js"); 8 | var StartOfDay = require("date-fns/fp/startOfDay"); 9 | 10 | console.log(new Date()); 11 | 12 | console.log(DateFns$ReasonDateFns.isBefore(new Date(), new Date())); 13 | 14 | console.log(Max.default(/* array */[ 15 | new Date(), 16 | new Date() 17 | ])); 18 | 19 | DateFns$ReasonDateFns.lightFormat("yyyy-MM-dd", DateFns$ReasonDateFns.closestTo(/* array */[ 20 | ParseISO.default("2019-08-21T13:00:03.058Z"), 21 | new Date() 22 | ], DateFns$ReasonDateFns.addDays(-2, DateFns$ReasonDateFns.addDays(2, new Date())))); 23 | 24 | DateFns$ReasonDateFns.formatWithOptions({ 25 | locale: Ru.default 26 | }, "yyyy-MM-dd", new Date()); 27 | 28 | console.log(DateFns$ReasonDateFns.addMilliseconds(1000, DateFns$ReasonDateFns.addSeconds(10, DateFns$ReasonDateFns.addMinutes(10, new Date())))); 29 | 30 | console.log("test", DateFns$ReasonDateFns.setHours(7, StartOfDay.default(DateFns$ReasonDateFns.addDays(1, new Date())))); 31 | 32 | /* Not a pure module */ 33 | -------------------------------------------------------------------------------- /lib/js/src/ReasonDateFnsCurryHelpers.bs.js: -------------------------------------------------------------------------------- 1 | // Generated by BUCKLESCRIPT VERSION 4.0.18, PLEASE EDIT WITH CARE 2 | 'use strict'; 3 | 4 | 5 | function curry2(uncurried2, a, b) { 6 | return uncurried2(a)(b); 7 | } 8 | 9 | function curry3(uncurried3, a, b, c) { 10 | return uncurried3(a)(b)(c); 11 | } 12 | 13 | exports.curry2 = curry2; 14 | exports.curry3 = curry3; 15 | /* No side effect */ 16 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "reason-date-fns", 3 | "version": "1.0.2", 4 | "main": "lib/js/src/DateFns.bs.js", 5 | "module": "lib/es6/src/DateFns.bs.js", 6 | "scripts": { 7 | "build": "bsb -make-world", 8 | "start": "bsb -make-world -w", 9 | "clean": "bsb -clean-world", 10 | "release": "yarn build && yarn demo:test && yarn publish && git push && git push --tags", 11 | "check-js": "node ./lib/js/src/Demo.bs.js", 12 | "demo:bundle": "yarn rollup lib/es6/src/Demo.bs.js --format cjs --file bundle/demo.js", 13 | "demo:test": "yarn demo:bundle && node bundle/demo.js" 14 | }, 15 | "keywords": [ 16 | "ReasonML", 17 | "Reason", 18 | "date-fns", 19 | "date-fns", 20 | "BuckleScript" 21 | ], 22 | "sideEffects": false, 23 | "license": "MIT", 24 | "bugs": { 25 | "url": "https://github.com/dmtrKovalenko/reason-date-fns/issues" 26 | }, 27 | "homepage": "https://github.com/dmtrKovalenko/reason-date-fns", 28 | "repository": { 29 | "type": "git", 30 | "url": "https://github.com/dmtrKovalenko/reason-date-fns" 31 | }, 32 | "author": { 33 | "name": "Dmitriy Kovalenko", 34 | "email": "dmtr.kovalenko@outlook.com" 35 | }, 36 | "peerDependencies": { 37 | "date-fns": "^2.30.0" 38 | }, 39 | "devDependencies": { 40 | "bs-platform": "^9.0.2", 41 | "date-fns": "^2.30.0", 42 | "rollup": "^2.79.2" 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["config:base"], 3 | "automerge": true, 4 | "major": { 5 | "automerge": false 6 | }, 7 | "rangeStrategy": "bump", 8 | "prHourlyLimit": 10, 9 | "updateNotScheduled": false, 10 | "timezone": "Europe/Kiev", 11 | "lockFileMaintenance": { "enabled": true }, 12 | "schedule": ["every weekend"] 13 | } 14 | -------------------------------------------------------------------------------- /src/DateFns.re: -------------------------------------------------------------------------------- 1 | open ReasonDateFnsCurryHelpers; 2 | 3 | type date = Js.Date.t; 4 | 5 | type locale; 6 | 7 | module Locales = { 8 | [@bs.module "date-fns/locale/af"] external af: locale = "default"; 9 | [@bs.module "date-fns/locale/ar-DZ"] external arDZ: locale = "default"; 10 | [@bs.module "date-fns/locale/ar-SA"] external arSA: locale = "default"; 11 | [@bs.module "date-fns/locale/be"] external be: locale = "default"; 12 | [@bs.module "date-fns/locale/bg"] external bg: locale = "default"; 13 | [@bs.module "date-fns/locale/bn"] external bn: locale = "default"; 14 | [@bs.module "date-fns/locale/ca"] external ca: locale = "default"; 15 | [@bs.module "date-fns/locale/cs"] external cs: locale = "default"; 16 | [@bs.module "date-fns/locale/cy"] external cy: locale = "default"; 17 | [@bs.module "date-fns/locale/de"] external de: locale = "default"; 18 | [@bs.module "date-fns/locale/el"] external el: locale = "default"; 19 | [@bs.module "date-fns/locale/eo"] external eo: locale = "default"; 20 | [@bs.module "date-fns/locale/en"] external en: locale = "default"; 21 | [@bs.module "date-fns/locale/en-US"] external enUS: locale = "default"; 22 | [@bs.module "date-fns/locale/en-GB"] external enGB: locale = "default"; 23 | [@bs.module "date-fns/locale/en-CA"] external enCA: locale = "default"; 24 | [@bs.module "date-fns/locale/es"] external es: locale = "default"; 25 | [@bs.module "date-fns/locale/et"] external et: locale = "default"; 26 | [@bs.module "date-fns/locale/fa-IR"] external faIR: locale = "default"; 27 | [@bs.module "date-fns/locale/fi"] external fi: locale = "default"; 28 | [@bs.module "date-fns/locale/fil"] external fil: locale = "default"; 29 | [@bs.module "date-fns/locale/fr"] external fr: locale = "default"; 30 | [@bs.module "date-fns/locale/gl"] external gl: locale = "default"; 31 | [@bs.module "date-fns/locale/he"] external he: locale = "default"; 32 | [@bs.module "date-fns/locale/hr"] external hr: locale = "default"; 33 | [@bs.module "date-fns/locale/hu"] external hu: locale = "default"; 34 | [@bs.module "date-fns/locale/id"] external id: locale = "default"; 35 | [@bs.module "date-fns/locale/is"] external is: locale = "default"; 36 | [@bs.module "date-fns/locale/it"] external it: locale = "default"; 37 | [@bs.module "date-fns/locale/ja"] external ja: locale = "default"; 38 | [@bs.module "date-fns/locale/ka"] external ka: locale = "default"; 39 | [@bs.module "date-fns/locale/ko"] external ko: locale = "default"; 40 | [@bs.module "date-fns/locale/lt"] external lt: locale = "default"; 41 | [@bs.module "date-fns/locale/lv"] external lv: locale = "default"; 42 | [@bs.module "date-fns/locale/mk"] external mk: locale = "default"; 43 | [@bs.module "date-fns/locale/ms"] external ms: locale = "default"; 44 | [@bs.module "date-fns/locale/nl"] external nl: locale = "default"; 45 | [@bs.module "date-fns/locale/pl"] external pl: locale = "default"; 46 | [@bs.module "date-fns/locale/pt-Br"] external ptBr: locale = "default"; 47 | [@bs.module "date-fns/locale/pt"] external pt: locale = "default"; 48 | [@bs.module "date-fns/locale/ro"] external ro: locale = "default"; 49 | [@bs.module "date-fns/locale/ru"] external ru: locale = "default"; 50 | [@bs.module "date-fns/locale/sk"] external sk: locale = "default"; 51 | [@bs.module "date-fns/locale/sl"] external sl: locale = "default"; 52 | [@bs.module "date-fns/locale/sr"] external sr: locale = "default"; 53 | [@bs.module "date-fns/locale/sv"] external sv: locale = "default"; 54 | [@bs.module "date-fns/locale/th"] external th: locale = "default"; 55 | [@bs.module "date-fns/locale/tr"] external tr: locale = "default"; 56 | [@bs.module "date-fns/locale/ug"] external ug: locale = "default"; 57 | [@bs.module "date-fns/locale/uk"] external uk: locale = "default"; 58 | [@bs.module "date-fns/locale/vi"] external vi: locale = "default"; 59 | [@bs.module "date-fns/locale/zh-CN"] external zhCN: locale = "default"; 60 | [@bs.module "date-fns/locale/zh-TW"] external zhTW: locale = "default"; 61 | }; 62 | 63 | /******************/ 64 | /* Common helpers */ 65 | /******************/ 66 | 67 | [@bs.module "date-fns/fp/closestIndexTo"] 68 | external uncurried_closestIndexTo: (. array(date)) => (. date) => int = 69 | "default"; 70 | 71 | let closestIndexTo = curry2(uncurried_closestIndexTo); 72 | 73 | [@bs.deriving abstract] 74 | type formatOptions = { 75 | [@bs.optional] 76 | locale, 77 | [@bs.optional] 78 | weekStartsOn: int, 79 | [@bs.optional] 80 | firstWeekContainsDate: int, 81 | }; 82 | 83 | [@bs.module "date-fns/fp/formatWithOptions"] 84 | external uncurried_formatWithOptions: 85 | (. formatOptions) => (. string) => (. date) => string = 86 | "default"; 87 | 88 | let formatWithOptions = curry3(uncurried_formatWithOptions); 89 | 90 | [@bs.module "date-fns/fp/format"] 91 | external uncurried_format: (. string) => (. date) => string = "default"; 92 | let format = curry2(uncurried_format); 93 | 94 | [@bs.module "date-fns/fp/closestTo"] 95 | external uncurried_closestTo: (. array(date)) => (. date) => date = "default"; 96 | let closestTo = curry2(uncurried_closestTo); 97 | 98 | [@bs.module "date-fns/fp/compareAsc"] 99 | external uncurried_compareAsc: (. date) => (. date) => int = "default"; 100 | let compareAsc = curry2(uncurried_compareAsc); 101 | 102 | [@bs.module "date-fns/fp/compareDesc"] 103 | external uncurried_compareDesc: (. date) => (. date) => int = "default"; 104 | let compareDesc = curry2(uncurried_compareDesc); 105 | 106 | [@bs.module "date-fns/fp/formatDistance"] 107 | external uncurried_formatDistance: (. date) => (. date) => string = "default"; 108 | let formatDistance = curry2(uncurried_formatDistance); 109 | 110 | [@bs.deriving abstract] 111 | type formatDistanceOptions = { 112 | [@bs.optional] 113 | locale, 114 | [@bs.optional] 115 | addSuffix: bool, 116 | [@bs.optional] 117 | includeSeconds: bool, 118 | }; 119 | 120 | [@bs.module "date-fns/fp/formatDistanceWithOptions"] 121 | external uncurried_formatDistanceWithOptions: 122 | (. formatDistanceOptions) => (. date) => (. date) => string = 123 | "default"; 124 | let formatDistanceWithOptions = curry3(uncurried_formatDistanceWithOptions); 125 | 126 | [@bs.module "date-fns/fp/formatDistanceStrict"] 127 | external formatDistanceStrict: (. date) => (. date) => string = "default"; 128 | let formatDistanceStrict = curry2(formatDistanceStrict); 129 | 130 | [@bs.deriving abstract] 131 | type formatDistanceStrictOptions = { 132 | [@bs.optional] 133 | locale, 134 | [@bs.optional] 135 | roundingMethod: [ | `floor | `ceil | `round], 136 | [@bs.optional] 137 | unit: [ | `second | `minute | `hour | `day | `month | `year], 138 | [@bs.optional] 139 | addSuffix: bool, 140 | }; 141 | 142 | [@bs.module "date-fns/fp/formatDistanceStrictWithOptions"] 143 | external uncurried_formatDistanceStrictWithOptions: 144 | (. formatDistanceStrictOptions) => (. date) => (. date) => string = 145 | "default"; 146 | let formatDistanceStrictWithOptions = curry2(uncurried_formatDistanceStrictWithOptions); 147 | 148 | [@bs.module "date-fns/fp/formatRelative"] 149 | external uncurried_formatRelative: (. date) => (. date) => string = "default"; 150 | let formatRelative = curry2(uncurried_formatRelative); 151 | 152 | [@bs.module "date-fns/fp/isAfter"] 153 | external uncurried_isAfter: (. date) => (. date) => bool = "default"; 154 | let isAfter = curry2(uncurried_isAfter); 155 | 156 | [@bs.module "date-fns/fp/isBefore"] 157 | external uncurried_isBefore: (. date) => (. date) => bool = "default"; 158 | let isBefore = curry2(uncurried_isBefore); 159 | 160 | [@bs.module "date-fns/fp/isDate"] external isDate: date => bool = "default"; 161 | 162 | [@bs.module "date-fns/fp/isValid"] external isVaid: date => bool = "default"; 163 | 164 | [@bs.module "date-fns/fp/isEqual"] 165 | external uncurried_isEqual: (. date) => (. date) => bool = "default"; 166 | let isEqual = curry2(uncurried_isEqual); 167 | 168 | [@bs.module "date-fns/fp/lightFormat"] 169 | external uncurried_lightFormat: (. string) => (. date) => string = "default"; 170 | let lightFormat = curry2(uncurried_lightFormat); 171 | 172 | [@bs.module "date-fns/fp/max"] external max: array(date) => date = "default"; 173 | 174 | [@bs.module "date-fns/fp/min"] external min: array(date) => date = "default"; 175 | 176 | [@bs.module "date-fns/fp/parse"] 177 | external uncurried_parse: (. date) => (. string) => (. string) => date = 178 | "default"; 179 | let parse = curry3(uncurried_parse); 180 | 181 | [@bs.module "date-fns/fp/parseISO"] 182 | external parseISO: string => date = "default"; 183 | 184 | [@bs.module "date-fns/fp/toDate"] external toDate: int => date = "default"; 185 | 186 | [@bs.module "date-fns/fp/fromUnixTime"] external fromUnixTime: float => date = "default"; 187 | 188 | [@bs.module "date-fns/fp/getUnixTime"] external getUnixTime: date => float = "default"; 189 | 190 | [@bs.module "date-fns/fp/getTime"] external getTime: date => int = "default"; 191 | 192 | /***************/ 193 | /* Day helpers */ 194 | /***************/ 195 | 196 | [@bs.module "date-fns/fp/addBusinessDays"] 197 | external uncurried_addBusinessDays: (. int) => (. date) => date = "default"; 198 | let addBusinessDays = curry2(uncurried_addBusinessDays); 199 | 200 | [@bs.module "date-fns/fp/addDays"] 201 | external uncurried_addDays: (. int) => (. date) => date = "default"; 202 | let addDays = curry2(uncurried_addDays); 203 | 204 | [@bs.module "date-fns/fp/differenceInBusinessDays"] 205 | external uncurried_differenceInBusinessDays: (. date) => (. date) => int = 206 | "default"; 207 | let differenceInBusinessDays = curry2(uncurried_differenceInBusinessDays); 208 | 209 | [@bs.module "date-fns/fp/differenceInCalendarDays"] 210 | external uncurried_differenceInCalendarDays: (. date) => (. date) => int = 211 | "default"; 212 | let differenceInCalendarDays = curry2(uncurried_differenceInCalendarDays); 213 | 214 | [@bs.module "date-fns/fp/differenceInDays"] 215 | external uncurried_differenceInDays: (. date) => (. date) => int = "default"; 216 | let differenceInDays = curry2(uncurried_differenceInDays); 217 | 218 | [@bs.module "date-fns/fp/endOfDay"] 219 | external endOfDay: date => date = "default"; 220 | [@bs.module "date-fns/fp/startOfDay"] 221 | external startOfDay: date => date = "default"; 222 | [@bs.module "date-fns/fp/getDate"] external getDate: date => int = "default"; 223 | [@bs.module "date-fns/fp/getDayOfYear"] 224 | external getDayOfYear: date => int = "default"; 225 | 226 | [@bs.module "date-fns/fp/isSameDay"] 227 | external uncurried_isSameDay: (. date) => (. date) => bool = "default"; 228 | let isSameDay = curry2(uncurried_isSameDay); 229 | 230 | [@bs.module "date-fns/fp/setDayOfYear"] 231 | external uncurried_setDayOfYear: (. int) => (. date) => date = "default"; 232 | let setDayOfYear = curry2(uncurried_setDayOfYear); 233 | 234 | [@bs.module "date-fns/fp/subDays"] 235 | external uncurried_subDays: (. int) => (. date) => date = "default"; 236 | let subDays = curry2(uncurried_subDays); 237 | 238 | /***************/ 239 | /* Milliseconds helpers */ 240 | /***************/ 241 | 242 | [@bs.module "date-fns/fp/addMilliseconds"] 243 | external uncurried_addMilliseconds: (. int) => (. date) => date = "default"; 244 | let addMilliseconds = curry2(uncurried_addMilliseconds); 245 | 246 | [@bs.module "date-fns/fp/differenceInMilliseconds"] 247 | external uncurried_differenceInMilliseconds: (. date) => (. date) => int = 248 | "default"; 249 | let differenceInMilliseconds = curry2(uncurried_differenceInMilliseconds); 250 | 251 | [@bs.module "date-fns/fp/getMilliseconds"] 252 | external getMilliseconds: date => int = "default"; 253 | 254 | [@bs.module "date-fns/fp/setMilliseconds"] 255 | external uncurried_setMilliseconds: (. int) => (. date) => date = "default"; 256 | let setMilliseconds = curry2(uncurried_setMilliseconds); 257 | 258 | [@bs.module "date-fns/fp/subMilliseconds"] 259 | external uncurried_subMilliseconds: (. int) => (. date) => date = "default"; 260 | let subMilliseconds = curry2(uncurried_subMilliseconds); 261 | 262 | /***************/ 263 | /* Seconds helpers */ 264 | /***************/ 265 | 266 | [@bs.module "date-fns/fp/addSeconds"] 267 | external uncurried_addSeconds: (. float) => (. date) => date = "default"; 268 | let addSeconds = curry2(uncurried_addSeconds); 269 | 270 | [@bs.module "date-fns/fp/differenceInSeconds"] 271 | external uncurried_differenceInSeconds: (. date) => (. date) => float = 272 | "default"; 273 | let differenceInSeconds = curry2(uncurried_differenceInSeconds); 274 | 275 | [@bs.module "date-fns/fp/endOfSecond"] 276 | external endOfSecond: date => date = "default"; 277 | 278 | [@bs.module "date-fns/fp/startOfSecond"] 279 | external startOfSecond: date => date = "default"; 280 | 281 | [@bs.module "date-fns/fp/getSeconds"] 282 | external getSeconds: date => float = "default"; 283 | 284 | [@bs.module "date-fns/fp/setSeconds"] 285 | external uncurried_setSeconds: (. float) => (. date) => date = "default"; 286 | let setSeconds = curry2(uncurried_setSeconds); 287 | 288 | [@bs.module "date-fns/fp/isSameSecond"] 289 | external uncurried_isSameSecond: (. date) => (. date) => bool = "default"; 290 | let isSameSecond = curry2(uncurried_isSameSecond); 291 | 292 | [@bs.module "date-fns/fp/subSeconds"] 293 | external uncurried_subSeconds: (. float) => (. date) => date = "default"; 294 | let subSeconds = curry2(uncurried_subSeconds); 295 | 296 | /***************/ 297 | /* Minute helpers */ 298 | /***************/ 299 | 300 | [@bs.module "date-fns/fp/addMinutes"] 301 | external uncurried_addMinutes: (. float) => (. date) => date = "default"; 302 | let addMinutes = curry2(uncurried_addMinutes); 303 | 304 | [@bs.module "date-fns/fp/differenceInMinutes"] 305 | external uncurried_differenceInMinutes: (. date) => (. date) => float = 306 | "default"; 307 | let differenceInMinutes = curry2(uncurried_differenceInMinutes); 308 | 309 | [@bs.module "date-fns/fp/endOfMinute"] 310 | external endOfMinute: date => date = "default"; 311 | 312 | [@bs.module "date-fns/fp/startOfMinute"] 313 | external startOfMinute: date => date = "default"; 314 | 315 | [@bs.module "date-fns/fp/getMinutes"] 316 | external getMinutes: date => float = "default"; 317 | 318 | [@bs.module "date-fns/fp/setMinutes"] 319 | external uncurried_setMinutes: (. float) => (. date) => date = "default"; 320 | let setMinutes = curry2(uncurried_setMinutes); 321 | 322 | [@bs.module "date-fns/fp/isSameMinute"] 323 | external uncurried_isSameMinute: (. date) => (. date) => bool = "default"; 324 | let isSameMinute = curry2(uncurried_isSameMinute); 325 | 326 | [@bs.module "date-fns/fp/subMinutes"] 327 | external uncurried_subMinutes: (. float) => (. date) => date = "default"; 328 | let subMinutes = curry2(uncurried_subMinutes); 329 | 330 | [@bs.module "date-fns/fp/roundToNearestMinutes"] 331 | external roundToNearestMinutes: date => float = "default"; 332 | 333 | /***************/ 334 | /* Hour helpers */ 335 | /***************/ 336 | 337 | [@bs.module "date-fns/fp/addHours"] 338 | external uncurried_addHours: (. float) => (. date) => date = "default"; 339 | let addHours = curry2(uncurried_addHours); 340 | 341 | [@bs.module "date-fns/fp/differenceInHours"] 342 | external uncurried_differenceInHours: (. date) => (. date) => float = 343 | "default"; 344 | let differenceInHours = curry2(uncurried_differenceInHours); 345 | 346 | [@bs.module "date-fns/fp/endOfHour"] 347 | external endOfHour: date => date = "default"; 348 | 349 | [@bs.module "date-fns/fp/startOfHour"] 350 | external startOfHour: date => date = "default"; 351 | 352 | [@bs.module "date-fns/fp/getHours"] 353 | external getHours: date => float = "default"; 354 | 355 | [@bs.module "date-fns/fp/setHours"] 356 | external uncurried_setHours: (. float) => (. date) => date = "default"; 357 | let setHours = curry2(uncurried_setHours); 358 | 359 | [@bs.module "date-fns/fp/isSameHour"] 360 | external uncurried_isSameHour: (. date) => (. date) => bool = "default"; 361 | let isSameHour = curry2(uncurried_isSameHour); 362 | 363 | [@bs.module "date-fns/fp/subHours"] 364 | external uncurried_subHours: (. float) => (. date) => date = "default"; 365 | let subHours = curry2(uncurried_subHours); 366 | 367 | /***************/ 368 | /* Weekday helpers */ 369 | /***************/ 370 | 371 | [@bs.module "date-fns/fp/getDay"] 372 | external getDay: date => int = "default"; 373 | 374 | [@bs.module "date-fns/fp/getISODay"] 375 | external getISODay: date => int = "default"; 376 | 377 | [@bs.module "date-fns/fp/isMonday"] 378 | external isMonday: date => bool = "default"; 379 | 380 | [@bs.module "date-fns/fp/isSaturday"] 381 | external isSaturday: date => bool = "default"; 382 | 383 | [@bs.module "date-fns/fp/isSunday"] 384 | external isSunday: date => bool = "default"; 385 | 386 | [@bs.module "date-fns/fp/isThursday"] 387 | external isThursday: date => bool = "default"; 388 | 389 | [@bs.module "date-fns/fp/isTuesday"] 390 | external isTuesday: date => bool = "default"; 391 | 392 | [@bs.module "date-fns/fp/isWednesday"] 393 | external isWednesday: date => bool = "default"; 394 | 395 | [@bs.module "date-fns/fp/isWeekend"] 396 | external isWeekend: date => bool = "default"; 397 | 398 | [@bs.module "date-fns/fp/setDay"] 399 | external uncurried_setDay: (. date) => (. date) => date ="default" 400 | let setDay = curry2(uncurried_setDay); 401 | 402 | [@bs.deriving abstract] 403 | type setDayOptions = { 404 | [@bs.optional] 405 | locale, 406 | [@bs.optional] 407 | weekStartsOn: int, 408 | }; 409 | 410 | [@bs.module "date-fns/fp/setDay"] 411 | external uncurried_setDayWithOptions: (. setDayOptions) => (. date) => (. date) => date ="default" 412 | let setDayWithOptions = curry2(uncurried_setDayWithOptions); 413 | 414 | [@bs.module "date-fns/fp/setISODay"] 415 | external uncurried_setISODay: (. date) => (. date) => date ="default" 416 | let setISODay = curry2(uncurried_setISODay); 417 | 418 | 419 | /***************/ 420 | /* Week helpers */ 421 | /***************/ 422 | 423 | [@bs.module "date-fns/fp/addWeeks"] 424 | external uncurried_addWeeks: (. float) => (. date) => date = "default"; 425 | let addWeeks = curry2(uncurried_addWeeks); 426 | 427 | [@bs.module "date-fns/fp/differenceInWeeks"] 428 | external uncurried_differenceInWeeks: (. date) => (. date) => float = 429 | "default"; 430 | let differenceInWeeks = curry2(uncurried_differenceInWeeks); 431 | 432 | [@bs.module "date-fns/fp/endOfWeek"] 433 | external endOfWeek: date => date = "default"; 434 | 435 | [@bs.module "date-fns/fp/startOfWeek"] 436 | external startOfWeek: date => date = "default"; 437 | 438 | [@bs.module "date-fns/fp/getWeek"] 439 | external getWeek: date => float = "default"; 440 | 441 | [@bs.module "date-fns/fp/setWeek"] 442 | external uncurried_setWeek: (. float) => (. date) => date = "default"; 443 | let setWeek = curry2(uncurried_setWeek); 444 | 445 | [@bs.module "date-fns/fp/isSameWeek"] 446 | external uncurried_isSameWeek: (. date) => (. date) => bool = "default"; 447 | let isSameWeek = curry2(uncurried_isSameWeek); 448 | 449 | [@bs.module "date-fns/fp/subWeeks"] 450 | external uncurried_subWeeks: (. float) => (. date) => date = "default"; 451 | let subWeeks = curry2(uncurried_subWeeks); 452 | 453 | [@bs.module "date-fns/fp/getWeeksInMonth"] 454 | external getWeeksInMonth: date => int = "default"; 455 | 456 | [@bs.module "date-fns/fp/getWeekOfMonth"] 457 | external getWeekOfMonth: date => int = "default"; 458 | 459 | /***************/ 460 | /* Month helpers */ 461 | /***************/ 462 | 463 | [@bs.module "date-fns/fp/addMonths"] 464 | external uncurried_addMonths: (. float) => (. date) => date = "default"; 465 | let addMonths = curry2(uncurried_addMonths); 466 | 467 | [@bs.module "date-fns/fp/differenceInMonths"] 468 | external uncurried_differenceInMonths: (. date) => (. date) => float = 469 | "default"; 470 | let differenceInMonths = curry2(uncurried_differenceInMonths); 471 | 472 | [@bs.module "date-fns/fp/differenceInCalendarMonths"] 473 | external uncurried_differenceInCalendarMonths: (. date) => (. date) => float = 474 | "default"; 475 | let differenceInCalendarMonths = curry2(uncurried_differenceInCalendarMonths); 476 | 477 | [@bs.module "date-fns/fp/eachWeekendOfMonth"] 478 | external eachWeekendOfMonth: date => array(date) = "default"; 479 | 480 | [@bs.module "date-fns/fp/getDaysInMonth"] 481 | external getDaysInMonth: date => int = "default"; 482 | 483 | [@bs.module "date-fns/fp/endOfMonth"] 484 | external endOfMonth: date => date = "default"; 485 | 486 | [@bs.module "date-fns/fp/startOfMonth"] 487 | external startOfMonth: date => date = "default"; 488 | 489 | [@bs.module "date-fns/fp/getMonth"] 490 | external getMonth: date => float = "default"; 491 | 492 | [@bs.module "date-fns/fp/setMonth"] 493 | external uncurried_setMonth: (. float) => (. date) => date = "default"; 494 | let setMonth = curry2(uncurried_setMonth); 495 | 496 | [@bs.module "date-fns/fp/isSameMonth"] 497 | external uncurried_isSameMonth: (. date) => (. date) => bool = "default"; 498 | let isSameMonth = curry2(uncurried_isSameMonth); 499 | 500 | [@bs.module "date-fns/fp/subMonths"] 501 | external uncurried_subMonths: (. float) => (. date) => date = "default"; 502 | let subMonths = curry2(uncurried_subMonths); 503 | 504 | [@bs.module "date-fns/fp/isFirstDayOfMonth"] 505 | external uncurried_isFirstDayOfMonth: (. date) => (. date) => bool = "default"; 506 | let isFirstDayOfMonth = curry2(uncurried_isFirstDayOfMonth); 507 | 508 | [@bs.module "date-fns/fp/isLastDayOfMonth"] 509 | external uncurried_isLastDayOfMonth: (. date) => (. date) => bool = "default"; 510 | let isLastDayOfMonth = curry2(uncurried_isLastDayOfMonth); 511 | 512 | /***************/ 513 | /* Year helpers */ 514 | /***************/ 515 | 516 | [@bs.module "date-fns/fp/addYears"] 517 | external uncurried_addYears: (. float) => (. date) => date = "default"; 518 | let addYears = curry2(uncurried_addYears); 519 | 520 | [@bs.module "date-fns/fp/differenceInYears"] 521 | external uncurried_differenceInYears: (. date) => (. date) => float = 522 | "default"; 523 | let differenceInYears = curry2(uncurried_differenceInYears); 524 | 525 | [@bs.module "date-fns/fp/differenceInCalendarYears"] 526 | external uncurried_differenceInCalendarYears: (. date) => (. date) => float = 527 | "default"; 528 | let differenceInCalendarYears = curry2(uncurried_differenceInCalendarYears); 529 | 530 | [@bs.module "date-fns/fp/eachWeekendOfYear"] 531 | external eachWeekendOfYear: date => array(date) = "default"; 532 | 533 | [@bs.module "date-fns/fp/getDaysInYear"] 534 | external getDaysInYear: date => int = "default"; 535 | 536 | [@bs.module "date-fns/fp/endOfYear"] 537 | external endOfYear: date => date = "default"; 538 | 539 | [@bs.module "date-fns/fp/startOfYear"] 540 | external startOfYear: date => date = "default"; 541 | 542 | [@bs.module "date-fns/fp/getYear"] 543 | external getYear: date => float = "default"; 544 | 545 | [@bs.module "date-fns/fp/setYear"] 546 | external uncurried_setYear: (. float) => (. date) => date = "default"; 547 | let setYear = curry2(uncurried_setYear); 548 | 549 | [@bs.module "date-fns/fp/isSameYear"] 550 | external uncurried_isSameYear: (. date) => (. date) => bool = "default"; 551 | let isSameYear = curry2(uncurried_isSameYear); 552 | 553 | [@bs.module "date-fns/fp/subYears"] 554 | external uncurried_subYears: (. float) => (. date) => date = "default"; 555 | let subYears = curry2(uncurried_subYears); 556 | 557 | [@bs.module "date-fns/fp/lastDayOfYear"] 558 | external uncurried_lastDayOfYear: date => date = "default"; 559 | 560 | [@bs.module "date-fns/fp/isLeapYear"] 561 | external uncurried_isLeapYear: date => bool = "default"; 562 | -------------------------------------------------------------------------------- /src/Demo.re: -------------------------------------------------------------------------------- 1 | open Js; 2 | 3 | Date.make() |> Js.log; 4 | 5 | Date.make() |> DateFns.isBefore(Date.make()) |> Js.log; 6 | 7 | DateFns.max([|Js.Date.make(), Js.Date.make()|]) |> Js.log; 8 | 9 | Js.Date.make() 10 | |> DateFns.addDays(2) 11 | |> DateFns.addDays(-2) 12 | |> DateFns.closestTo([| 13 | DateFns.parseISO("2019-08-21T13:00:03.058Z"), 14 | Js.Date.make(), 15 | |]) 16 | |> DateFns.lightFormat("yyyy-MM-dd"); 17 | 18 | Js.Date.make() 19 | |> DateFns.formatWithOptions( 20 | DateFns.formatOptions(~locale=DateFns.Locales.ru, ()), 21 | "yyyy-MM-dd", 22 | ); 23 | 24 | Js.Date.make() 25 | |> DateFns.addMinutes(10.) 26 | |> DateFns.addSeconds(10.) 27 | |> DateFns.addMilliseconds(1000) 28 | |> Js.log; 29 | 30 | Js.Date.make() 31 | |> DateFns.addDays(1) 32 | |> DateFns.startOfDay 33 | |> DateFns.setHours(7.) 34 | |> Js.log2("test"); -------------------------------------------------------------------------------- /src/ReasonDateFnsCurryHelpers.re: -------------------------------------------------------------------------------- 1 | /* Converts uncurried function of two arguments to a curried function */ 2 | type uncurried2('a, 'b, 'c) = (. 'a) => (. 'b) => 'c; 3 | type curried2('a, 'b, 'c) = ('a, 'b) => 'c; 4 | let curry2 = (uncurried2: uncurried2('a, 'b, 'c)): curried2('a, 'b, 'c) => { 5 | (a, b) => (uncurried2(. a))(. b); 6 | }; 7 | 8 | /* Converts uncurried function of two arguments to a curried function */ 9 | type uncurried3('a, 'b, 'c, 'd) = (. 'a) => (. 'b) => (. 'c) => 'd; 10 | type curried3('a, 'b, 'c, 'd) = ('a, 'b, 'c) => 'd; 11 | let curry3 = (uncurried3: uncurried3('a, 'b, 'c, 'd)): curried3('a, 'b, 'c, 'd) => { 12 | (a, b, c) => ((uncurried3(. a))(. b))(. c); 13 | }; -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/runtime@^7.21.0": 6 | version "7.28.3" 7 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.28.3.tgz#75c5034b55ba868121668be5d5bb31cc64e6e61a" 8 | integrity sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA== 9 | 10 | bs-platform@^9.0.2: 11 | version "9.0.2" 12 | resolved "https://registry.yarnpkg.com/bs-platform/-/bs-platform-9.0.2.tgz#a6eac70eb8924a322556dacaccbfbc9b2a0d3a37" 13 | integrity sha512-Ye9JqJ4Oa7mcjjoOVRYI8Uc2Cf8N7jQLWDcdUplY7996d/YErSR7WitmV7XnSwr4EvdrbwjEsg1NxNjUQv3ChA== 14 | 15 | date-fns@^2.30.0: 16 | version "2.30.0" 17 | resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" 18 | integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== 19 | dependencies: 20 | "@babel/runtime" "^7.21.0" 21 | 22 | fsevents@~2.3.2: 23 | version "2.3.3" 24 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" 25 | integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== 26 | 27 | rollup@^2.79.2: 28 | version "2.79.2" 29 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.2.tgz#f150e4a5db4b121a21a747d762f701e5e9f49090" 30 | integrity sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ== 31 | optionalDependencies: 32 | fsevents "~2.3.2" 33 | --------------------------------------------------------------------------------